summaryrefslogtreecommitdiff
path: root/dev-qt/qtsvg/files/qtsvg-5.14.0-revert-keep-aspectratio.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-qt/qtsvg/files/qtsvg-5.14.0-revert-keep-aspectratio.patch')
-rw-r--r--dev-qt/qtsvg/files/qtsvg-5.14.0-revert-keep-aspectratio.patch85
1 files changed, 85 insertions, 0 deletions
diff --git a/dev-qt/qtsvg/files/qtsvg-5.14.0-revert-keep-aspectratio.patch b/dev-qt/qtsvg/files/qtsvg-5.14.0-revert-keep-aspectratio.patch
new file mode 100644
index 000000000000..589492ca6bab
--- /dev/null
+++ b/dev-qt/qtsvg/files/qtsvg-5.14.0-revert-keep-aspectratio.patch
@@ -0,0 +1,85 @@
+From 51694a5e293ae4eb7b83167e7cb54822907eb594 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Thu, 9 Jan 2020 11:03:44 +0100
+Subject: [PATCH] Revert the keep-aspectratio feature for 5.14.1
+
+This was introduced as non-optional behavior for 5.14.0, but caused
+many regressions. This patch reverts that, and instead prepares for
+introducing it as an opt-in feature in Qt 5.15.
+
+[ChangeLog][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.
+
+Task-number: QTBUG-81259
+Change-Id: I3efa2db864eb80ee00e8a067e56d9912bab36442
+---
+ src/svg/qsvgtinydocument.cpp | 14 ++++++++------
+ tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp | 3 +++
+ 2 files changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/src/svg/qsvgtinydocument.cpp b/src/svg/qsvgtinydocument.cpp
+index 56960bf..b364634 100644
+--- a/src/svg/qsvgtinydocument.cpp
++++ b/src/svg/qsvgtinydocument.cpp
+@@ -420,9 +420,10 @@ void QSvgTinyDocument::mapSourceToTarget(QPainter *p, const QRectF &targetRect,
+ source = viewBox();
+
+ if (source != target && !source.isNull()) {
+- if (m_implicitViewBox || !sourceRect.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).
++#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());
+@@ -431,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 +452,7 @@ void QSvgTinyDocument::mapSourceToTarget(QPainter *p, const QRectF &targetRect,
+ p->translate(target.x() - source.x(),
+ target.y() - source.y());
+ }
++#endif
+ }
+ }
+
+diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+index 309c646..43a3eb8 100644
+--- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
++++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+@@ -269,6 +269,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;
+@@ -278,6 +280,7 @@ void tst_QSvgRenderer::testMapViewBoxToTarget()
+ painter.end();
+ QCOMPARE(picture.boundingRect(), QRect(500, 375, 750, 750));
+ }
++#endif
+ }
+
+ void tst_QSvgRenderer::testRenderElement()
+--
+2.25.0