aboutsummaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/quick/curverenderer/tst_bench_curverenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/benchmarks/quick/curverenderer/tst_bench_curverenderer.cpp')
-rw-r--r--tests/benchmarks/quick/curverenderer/tst_bench_curverenderer.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/benchmarks/quick/curverenderer/tst_bench_curverenderer.cpp b/tests/benchmarks/quick/curverenderer/tst_bench_curverenderer.cpp
new file mode 100644
index 0000000000..4f891e96b2
--- /dev/null
+++ b/tests/benchmarks/quick/curverenderer/tst_bench_curverenderer.cpp
@@ -0,0 +1,78 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#include <qtest.h>
+#include <QPainterPath>
+#include <QSGNode>
+#include <private/qquickshapecurverenderer_p.h>
+
+class tst_CurveRenderer : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_CurveRenderer();
+
+private slots:
+ void initTestCase_data();
+
+ void render_data();
+ void render();
+};
+
+tst_CurveRenderer::tst_CurveRenderer()
+{
+}
+
+void tst_CurveRenderer::initTestCase_data()
+{
+ QTest::addColumn<bool>("hasFill");
+ QTest::addColumn<int>("strokeWidth");
+ // tbd: dashed, gradient fill etc.
+
+ QTest::newRow("onlyfill") << true << 0;
+ QTest::newRow("onlystroke") << false << 10;
+ QTest::newRow("strokeandfill") << true << 10;
+}
+
+void tst_CurveRenderer::render_data()
+{
+ QTest::addColumn<QPainterPath>("path");
+
+ {
+ QPainterPath path;
+ path.moveTo(100, 400);
+ path.lineTo(200, 400);
+ path.quadTo(220, 500, 700, 700);
+ path.cubicTo(600, 600, 800, 200, 200, 50);
+ path.lineTo(50, 750);
+ path.cubicTo(600, 700, 300, 200, 750, 50);
+ path.cubicTo(800, 200, 300, 800, 300, 400);
+ QTest::newRow("figure1") << path;
+ }
+}
+
+void tst_CurveRenderer::render()
+{
+ QFETCH_GLOBAL(bool, hasFill);
+ QFETCH_GLOBAL(int, strokeWidth);
+ QFETCH(QPainterPath, path);
+
+ QSGNode dummyNode;
+ QQuickShapeCurveRenderer renderer(nullptr);
+ renderer.setRootNode(&dummyNode);
+ renderer.beginSync(1, nullptr); // Just sets the number of path items to 1; needs no endsync
+ renderer.setFillColor(0, hasFill ? Qt::yellow : Qt::transparent);
+ renderer.setStrokeColor(0, Qt::black);
+ renderer.setStrokeWidth(0, strokeWidth);
+
+ QBENCHMARK {
+ renderer.beginSync(1, nullptr);
+ renderer.setPath(0, path);
+ renderer.endSync(false);
+ renderer.updateNode();
+ }
+}
+
+QTEST_MAIN(tst_CurveRenderer)
+#include "tst_bench_curverenderer.moc"