diff options
Diffstat (limited to 'tests/auto/qsvggenerator')
-rw-r--r-- | tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg | 4 | ||||
-rw-r--r-- | tests/auto/qsvggenerator/tst_qsvggenerator.cpp | 42 |
2 files changed, 44 insertions, 2 deletions
diff --git a/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg b/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg index a56674c..13fc6f1 100644 --- a/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg +++ b/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg @@ -4,11 +4,11 @@ <title>Qt SVG Document</title> <desc>Generated with Qt</desc> <defs> -<radialGradient gradientUnits="objectBoundingBox" cx="0.5" cy="0.5" r="0.5" fx="0.5" fy="0.5" xml:id="gradient1"> +<radialGradient gradientUnits="objectBoundingBox" cx="0.5" cy="0.5" r="0.5" fx="0.5" fy="0.5" id="gradient1"> <stop offset="0" stop-color="#ff0000" stop-opacity="1" /> <stop offset="1" stop-color="#0000ff" stop-opacity="1" /> </radialGradient> -<radialGradient gradientUnits="userSpaceOnUse" cx="150" cy="50" r="50" fx="150" fy="50" xml:id="gradient2"> +<radialGradient gradientUnits="userSpaceOnUse" cx="150" cy="50" r="50" fx="150" fy="50" id="gradient2"> <stop offset="0" stop-color="#ff0000" stop-opacity="1" /> <stop offset="1" stop-color="#0000ff" stop-opacity="1" /> </radialGradient> diff --git a/tests/auto/qsvggenerator/tst_qsvggenerator.cpp b/tests/auto/qsvggenerator/tst_qsvggenerator.cpp index 4795b55..b55b687 100644 --- a/tests/auto/qsvggenerator/tst_qsvggenerator.cpp +++ b/tests/auto/qsvggenerator/tst_qsvggenerator.cpp @@ -58,6 +58,7 @@ private slots: void fractionalFontSize(); void titleAndDescription(); void gradientInterpolation(); + void patternBrush(); }; tst_QSvgGenerator::tst_QSvgGenerator() @@ -423,5 +424,46 @@ void tst_QSvgGenerator::gradientInterpolation() QVERIFY(sqrImageDiff(image, refImage) < 2); // pixel error < 1.41 (L2-norm) } +void tst_QSvgGenerator::patternBrush() +{ + { // Pattern brush should create mask and pattern used as fill + QSvgGenerator generator; + QByteArray byteArray; + QBuffer buffer(&byteArray); + generator.setOutputDevice(&buffer); + QPainter painter(&generator); + painter.setBrush(Qt::CrossPattern); + painter.drawRect(0, 0, 100, 100); + painter.end(); + + QVERIFY(byteArray.contains("<mask id=\"patternmask")); + QVERIFY(byteArray.contains("<pattern id=\"fillpattern")); + QVERIFY(byteArray.contains("<g fill=\"url(#fillpattern")); + } + + { // Masks and patterns should be reused, not regenerated + QSvgGenerator generator; + QByteArray byteArray; + QBuffer buffer(&byteArray); + generator.setOutputDevice(&buffer); + QPainter painter(&generator); + painter.setBrush(QBrush(Qt::red, Qt::Dense3Pattern)); + painter.drawRect(0, 0, 100, 100); + painter.drawEllipse(200, 50, 50, 50); + painter.setBrush(QBrush(Qt::green, Qt::Dense3Pattern)); + painter.drawRoundedRect(0, 200, 100, 100, 10, 10); + painter.setBrush(QBrush(Qt::blue, Qt::Dense4Pattern)); + painter.drawRect(200, 200, 100, 100); + painter.setBrush(QBrush(Qt::red, Qt::Dense3Pattern)); + painter.drawRoundedRect(120, 120, 60, 60, 5, 5); + painter.end(); + + QCOMPARE(byteArray.count("<mask id=\"patternmask"), 2); + QCOMPARE(byteArray.count("<pattern id=\"fillpattern"), 3); + QVERIFY(byteArray.count("<g fill=\"url(#fillpattern") >= 4); + } + +} + QTEST_MAIN(tst_QSvgGenerator) #include "tst_qsvggenerator.moc" |