diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-11-16 03:01:30 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-11-16 03:01:30 +0100 |
commit | 64841de96485d5dfd7c24c052626bff6a953bca3 (patch) | |
tree | f65badaf28508cff0e27990ce8d3ed9ece8a9baf /tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp | |
parent | f35b26751c7320868e56c3fbe1b5d5d7a55ed239 (diff) | |
parent | e489a325769d295ee3b3948d98f5d07814dffd97 (diff) | |
download | qtsvg-64841de96485d5dfd7c24c052626bff6a953bca3.tar.gz |
Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I6d5d6b486fbd7d0d9324937e24edff2890f02bdf
Diffstat (limited to 'tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp')
-rw-r--r-- | tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp index cf19213..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; @@ -269,14 +270,13 @@ void tst_QSvgRenderer::testMapViewBoxToTarget() } { // Viewport and viewBox specified -> scale 500x500 square to 1000x750 while preserving aspect ratio gives 750x750 - // however the box is centered at 375, 250 data = "<svg width=\"1000\" height=\"750\" viewBox=\"-250 -250 500 500\"><g><rect x=\"0\" y=\"0\" width=\"500\" height=\"500\" /></g></svg>"; QPicture picture; QPainter painter(&picture); QSvgRenderer rend(data); rend.render(&painter); painter.end(); - QCOMPARE(picture.boundingRect(), QRect(375, 250, 750, 750)); + QCOMPARE(picture.boundingRect(), QRect(500, 375, 750, 750)); } } @@ -337,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); |