summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2020-01-16 17:02:00 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2020-01-16 17:06:48 +0100
commitc87989bb5ff982772175581acf7eb874a901cc10 (patch)
tree924e12015fb52bf599d5656eb49ea585afb74907 /dev-qt/qtsvg
parentdev-libs/pugixml: version bump to 1.10 (diff)
downloadgentoo-c87989bb5ff982772175581acf7eb874a901cc10.tar.gz
gentoo-c87989bb5ff982772175581acf7eb874a901cc10.tar.bz2
gentoo-c87989bb5ff982772175581acf7eb874a901cc10.zip
dev-qt/qtsvg: Revert the keep-aspectratio feature (from 5.14.1)
Requested-by: Lars Wendler <polynomial-c@gentoo.org> Package-Manager: Portage-2.3.84, Repoman-2.3.20 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'dev-qt/qtsvg')
-rw-r--r--dev-qt/qtsvg/files/qtsvg-5.14.0-revert-keep-aspectratio.patch85
-rw-r--r--dev-qt/qtsvg/qtsvg-5.14.0-r1.ebuild25
2 files changed, 110 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
diff --git a/dev-qt/qtsvg/qtsvg-5.14.0-r1.ebuild b/dev-qt/qtsvg/qtsvg-5.14.0-r1.ebuild
new file mode 100644
index 000000000000..4716b5e4790f
--- /dev/null
+++ b/dev-qt/qtsvg/qtsvg-5.14.0-r1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit qt5-build
+
+DESCRIPTION="SVG rendering library for the Qt5 framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+fi
+
+IUSE=""
+
+RDEPEND="
+ ~dev-qt/qtcore-${PV}
+ ~dev-qt/qtgui-${PV}
+ ~dev-qt/qtwidgets-${PV}
+ sys-libs/zlib:=
+"
+DEPEND="${RDEPEND}
+ test? ( ~dev-qt/qtxml-${PV} )
+"
+
+PATCHES=( "${FILESDIR}/${P}-revert-keep-aspectratio.patch" ) # QTBUG-81259