summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-01-27 14:13:46 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-01-27 14:13:46 +0100
commit89045a973568a5750670db7340f2f58d478f78d0 (patch)
treece50e028742a13cad4e5487d56e0824cf793c3d3
parentacb66cad2280bda20d26d08d606a66b9660b17aa (diff)
parent3e2823a147b2dca492fece187facfe39f4d33bed (diff)
downloadqtsvg-89045a973568a5750670db7340f2f58d478f78d0.tar.gz
Merge remote-tracking branch 'origin/5.14.1' into 5.14
Change-Id: Id0d3c97d6b5120c5386704e80fccef8b0242f000
-rw-r--r--dist/changes-5.14.128
-rw-r--r--src/svg/qsvgtinydocument.cpp15
-rw-r--r--tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp3
3 files changed, 39 insertions, 7 deletions
diff --git a/dist/changes-5.14.1 b/dist/changes-5.14.1
new file mode 100644
index 0000000..093098c
--- /dev/null
+++ b/dist/changes-5.14.1
@@ -0,0 +1,28 @@
+Qt 5.14.1 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.14.0.
+
+For more details, refer to the online documentation included in this
+distribution. The documentation is also available online:
+
+https://doc.qt.io/qt-5/index.html
+
+The Qt version 5.14 series is binary compatible with the 5.13.x series.
+Applications compiled for 5.13 will continue to run with 5.14.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* QSVGRenderer *
+****************************************************************************
+
+ - In Qt 5.14.0, rendering would keep aspect ratio implied by the
+ viewbox, independently of the specified target area. This caused
+ many regressions with existing code, so is reverted now in
+ 5.14.1. The feature will instead be available as an opt-in in Qt
+ 5.15.
diff --git a/src/svg/qsvgtinydocument.cpp b/src/svg/qsvgtinydocument.cpp
index 173baaa..0877e41 100644
--- a/src/svg/qsvgtinydocument.cpp
+++ b/src/svg/qsvgtinydocument.cpp
@@ -420,10 +420,10 @@ void QSvgTinyDocument::mapSourceToTarget(QPainter *p, const QRectF &targetRect,
source = viewBox();
if (source != target && !source.isNull()) {
- if (m_implicitViewBox || !sourceRect.isNull() || !targetRect.isNull()) {
- // Code path used when no view box is set, or when an explicit source size is given which
- // overrides it (which is the case when we're rendering only a specific element by id),
- // or when user has given explicit target bounds that overrides viebox aspect ratio
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
+ if (m_implicitViewBox || !preserveAspectRatio()) {
+ // Code path used when no view box is set, or IgnoreAspectRatio requested
+#endif
QTransform transform;
transform.scale(target.width() / source.width(),
target.height() / source.height());
@@ -432,10 +432,10 @@ void QSvgTinyDocument::mapSourceToTarget(QPainter *p, const QRectF &targetRect,
target.y() - c2.y());
p->scale(target.width() / source.width(),
target.height() / source.height());
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
} else {
- // Code path used when a view box is specified and we're not rendering a specific element by id
- // but the entire document. This attempts to emulate the default values of the <preserveAspectRatio>
- // tag that's implicitly defined when <viewbox> is used.
+ // Code path used when KeepAspectRatio is requested. This attempts to emulate the default values
+ // of the <preserveAspectRatio tag that's implicitly defined when <viewbox> is used.
// Scale the view box into the view port (target) by preserve the aspect ratio.
QSizeF viewBoxSize = source.size();
@@ -451,6 +451,7 @@ void QSvgTinyDocument::mapSourceToTarget(QPainter *p, const QRectF &targetRect,
// Apply the view box translation if specified.
p->translate(-source.x(), -source.y());
}
+#endif
}
}
diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
index 8ad74f2..ca05a3a 100644
--- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
@@ -270,6 +270,8 @@ void tst_QSvgRenderer::testMapViewBoxToTarget()
QCOMPARE(picture.boundingRect(), QRect(125, 125, 250, 250));
}
+#if 0
+ // Requires keep-aspectratio feature
{ // Viewport and viewBox specified -> scale 500x500 square to 1000x750 while preserving aspect ratio gives 750x750
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;
@@ -279,6 +281,7 @@ void tst_QSvgRenderer::testMapViewBoxToTarget()
painter.end();
QCOMPARE(picture.boundingRect(), QRect(500, 375, 750, 750));
}
+#endif
}
void tst_QSvgRenderer::testRenderElement()