diff options
author | homeboy445 <akshitsan13@gmail.com> | 2021-10-04 17:09:33 +0530 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2022-12-12 17:12:31 +0900 |
commit | 75e2e032445d5fa4a3ccf255c8dc42680fdad641 (patch) | |
tree | 3589ec945bd0a5f6a7cf947223f45129ba785c15 | |
parent | 38025a2691daaec974398996f1282ece89ce8e21 (diff) |
benchmark: Drawing wavelines
This test includes checking the duration of drawing
waveline in the graphics backend.
Change-Id: Ia4b08f459a7d512fa60f49e83451e3d5d699ecd5
-rw-r--r-- | vcl/backendtest/benchmark/BenchmarkApp.cxx | 25 | ||||
-rw-r--r-- | vcl/backendtest/benchmark/outputdevice/Benchmarks.cxx | 21 | ||||
-rw-r--r-- | vcl/inc/test/Benchmarks.hxx | 1 |
3 files changed, 42 insertions, 5 deletions
diff --git a/vcl/backendtest/benchmark/BenchmarkApp.cxx b/vcl/backendtest/benchmark/BenchmarkApp.cxx index b680bed11567..a0fe63649398 100644 --- a/vcl/backendtest/benchmark/BenchmarkApp.cxx +++ b/vcl/backendtest/benchmark/BenchmarkApp.cxx @@ -71,7 +71,7 @@ namespace class BenchMarkWindow : public WorkWindow { private: - static constexpr unsigned char gnNumberOfTests = 1; + static constexpr unsigned char gnNumberOfTests = 2; unsigned char mnTest; ScopedVclPtr<VirtualDevice> mpVDev; @@ -85,8 +85,6 @@ public: virtual ~BenchMarkWindow() override { disposeOnce(); } - DECL_LINK(updateHdl, Timer*, void); - virtual void KeyInput(const KeyEvent& rKEvt) override { sal_uInt16 nCode = rKEvt.GetKeyCode().GetCode(); @@ -129,7 +127,7 @@ public: return aRegions; } - static void testMultiplePolygonsWithPolyPolygon(vcl::RenderContext& rRenderContext, int nWidth, + static void drawMultiplePolygonsWithPolyPolygon(vcl::RenderContext& rRenderContext, int nWidth, int nHeight) { tools::Rectangle aRectangle; @@ -144,6 +142,19 @@ public: updateResults(rRenderContext, aOutDevTest.getElapsedTime()); } + static void drawWavelines(vcl::RenderContext& rRenderContext, int nWidth, int nHeight) + { + tools::Rectangle aRectangle; + size_t index = 0; + + std::vector<tools::Rectangle> aRegions = setupRegions(1, 1, nWidth, nHeight); + aRectangle = aRegions[index++]; + Benchmark aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupWavelines(); + drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); + updateResults(rRenderContext, aOutDevTest.getElapsedTime()); + } + virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& /*rRect*/) override { @@ -156,7 +167,11 @@ public: if (mnTest % gnNumberOfTests == 0) { - testMultiplePolygonsWithPolyPolygon(rRenderContext, nWidth, nHeight); + drawMultiplePolygonsWithPolyPolygon(rRenderContext, nWidth, nHeight); + } + else if (mnTest % gnNumberOfTests == 1) + { + drawWavelines(rRenderContext, nWidth, nHeight); } } }; diff --git a/vcl/backendtest/benchmark/outputdevice/Benchmarks.cxx b/vcl/backendtest/benchmark/outputdevice/Benchmarks.cxx index 025414952b19..5ca7ad95419c 100644 --- a/vcl/backendtest/benchmark/outputdevice/Benchmarks.cxx +++ b/vcl/backendtest/benchmark/outputdevice/Benchmarks.cxx @@ -9,6 +9,7 @@ */ #include <test/Benchmarks.hxx> +#include <basegfx/polygon/WaveLine.hxx> const Color Benchmark::constBackgroundColor(COL_LIGHTGRAY); const Color Benchmark::constLineColor(COL_LIGHTBLUE); @@ -29,6 +30,26 @@ sal_Int64 Benchmark::getElapsedTime() return std::chrono::duration_cast<std::chrono::milliseconds>(m_xEnd - m_xStart).count(); } +Bitmap Benchmark::setupWavelines() +{ + initialSetup(4096, 4096, constBackgroundColor); + + mpVirtualDevice->SetLineColor(constLineColor); + mpVirtualDevice->SetFillColor(); + + m_xStart = std::chrono::steady_clock::now(); + for (int i = 1; i <= 4094; i += 2) + { + const basegfx::B2DRectangle aWaveLineRectangle(1, i, 4096, i + 2); + const basegfx::B2DPolygon aWaveLinePolygon + = basegfx::createWaveLinePolygon(aWaveLineRectangle); + mpVirtualDevice->DrawPolyLine(aWaveLinePolygon); + } + Bitmap aBitmap = mpVirtualDevice->GetBitmap(maVDRectangle.TopLeft(), maVDRectangle.GetSize()); + m_xEnd = std::chrono::steady_clock::now(); + return aBitmap; +} + Bitmap Benchmark::setupMultiplePolygonsWithPolyPolygon() { initialSetup(4096, 4096, constBackgroundColor); diff --git a/vcl/inc/test/Benchmarks.hxx b/vcl/inc/test/Benchmarks.hxx index 088b38093ed5..6e50c0a5d595 100644 --- a/vcl/inc/test/Benchmarks.hxx +++ b/vcl/inc/test/Benchmarks.hxx @@ -29,5 +29,6 @@ class VCL_DLLPUBLIC Benchmark public: sal_Int64 getElapsedTime(); + Bitmap setupWavelines(); Bitmap setupMultiplePolygonsWithPolyPolygon(); }; |