summaryrefslogtreecommitdiff
path: root/tests/auto/qsvggenerator
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qsvggenerator')
-rw-r--r--tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg4
-rw-r--r--tests/auto/qsvggenerator/tst_qsvggenerator.cpp42
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"