summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhomeboy445 <akshitsan13@gmail.com>2021-10-04 17:09:33 +0530
committerTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2022-12-12 17:12:31 +0900
commit75e2e032445d5fa4a3ccf255c8dc42680fdad641 (patch)
tree3589ec945bd0a5f6a7cf947223f45129ba785c15
parent38025a2691daaec974398996f1282ece89ce8e21 (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.cxx25
-rw-r--r--vcl/backendtest/benchmark/outputdevice/Benchmarks.cxx21
-rw-r--r--vcl/inc/test/Benchmarks.hxx1
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();
};