summaryrefslogtreecommitdiff
path: root/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp')
-rw-r--r--tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
index eb3ecba..309c646 100644
--- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
@@ -59,6 +59,7 @@ private slots:
void testStrokeWidth();
void testMapViewBoxToTarget();
void testRenderElement();
+ void testRenderElementToBounds();
void constructorQXmlStreamReader() const;
void loadQXmlStreamReader() const;
void nestedQXmlStreamReader() const;
@@ -336,6 +337,41 @@ void tst_QSvgRenderer::testRenderElement()
}
+void tst_QSvgRenderer::testRenderElementToBounds()
+{
+ // QTBUG-79933
+ QImage reference(400, 200, QImage::Format_ARGB32);
+ {
+ reference.fill(Qt::transparent);
+ QPainter p(&reference);
+ p.fillRect( 0, 0, 200, 100, Qt::blue);
+ p.fillRect(200, 100, 200, 100, Qt::blue);
+ p.fillRect( 0, 0, 100, 50, Qt::red);
+ p.fillRect(100, 50, 100, 50, Qt::red);
+ p.fillRect(200, 100, 100, 50, Qt::red);
+ p.fillRect(300, 150, 100, 50, Qt::red);
+ }
+
+ QImage rendering(400, 200, QImage::Format_ARGB32);
+ {
+ const char *const src =
+ "<svg viewBox=\"0 0 100 100\">" // Presence of a viewBox triggered QTBUG-79933
+ "<path id=\"el1\" d=\"M 80,10 H 0 V 0 h 40 v 20 h 40 z\" fill=\"red\" />"
+ "<path id=\"el2\" d=\"M 90,100 V 20 h 10 V 60 H 80 v 40 z\" fill=\"blue\" />"
+ "</svg>";
+ const QByteArray data(src);
+ QSvgRenderer rend(data);
+ rendering.fill(Qt::transparent);
+ QPainter p(&rendering);
+ rend.render(&p, "el1", QRectF( 0, 0, 200, 100));
+ rend.render(&p, "el2", QRectF( 0, 0, 200, 100));
+ rend.render(&p, "el1", QRectF(200, 100, 200, 100));
+ rend.render(&p, "el2", QRectF(200, 100, 200, 100));
+ }
+
+ QCOMPARE(reference, rendering);
+}
+
void tst_QSvgRenderer::constructorQXmlStreamReader() const
{
const QByteArray data(src);