1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 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"
|