| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a modification of 14fa4591eb34a35cf3d485fd901e3f1e2caa7770
That patch corrected the handling of the view box when rendering an
entire SVG document. However, contrary to intention stated in the
comment of that patch, it turns out that the new viewbox handling code
path can be taken also for the case of rendering only a single element
by id. Instead, we want to keep the original behavior where the
element's origin bounds are transformed to fit into the user requested
target bounds, allowing non-proportional scaling.
Since the render-single-element case is easily and uniqely
identifiable by the sourceRect parameter being non-null, just add an
explicit check for that to the code path branching.
Done-with: Eirik Aavitsland <eirik.aavitsland@qt.io>
Fixes: QTBUG-79933
Change-Id: I64a35bbb193db22c33670b48ea165a91df8e719e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
m_implicitViewBox needs to be true if the explicit viewBox is null. That
relationship between m_viewBox and m_implicitViewBox can be see in
QSvgTinyDocument::viewBox().
Task-number: QTBUG-79933
Change-Id: I6ea5a849479b10117128bcaf1799e3770b145e77
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a modification of14fa4591eb34a35cf3d485fd901e3f1e2caa7770.
That change correctly implemented support for scaling and centering
viewBox. However, the viewBox scaling and x-min/y-min translation was
applied in the wrong order, so SVGs with a non-zero x-min/y-min
viewBox would be rendered with an offset.
The autotest reflected this error, and is also fixed here. (In user
space, the black rectangle's upper left corner (0,0) is in the center
of the viewBox and so should end up in the center of the produced
image, independently of the scaling. All other tested SVG renderers
place it there.)
This change fixes all the reported regression cases from the above
commit, while not re-breaking the original cases fixed by that commit.
Fixes: QTBUG-79333
Fixes: QTBUG-78200
Task-number: QTBUG-70256
Change-Id: I0d3394e3caf6ec7edf16a10992c2fbfdac7398e5
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
* Add const & to function parameters
* std::move an brush
* Add const & to variables assigned from functions returning const &
Change-Id: If412b78cc0198e24ce1c611fcd2026d0d723be80
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|\
| |
| |
| | |
Change-Id: I2c1925759a489dc23edba9d082025efc33418d18
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-74391
Change-Id: I398a01a5af7ef88c24886d1c5549bd1fdbe7784c
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The QImageIOHandler::name() has been deprecated since 5.13, but its
overrides weren't. Enabled compilation of the overrides only when the
QImageIOHandler::name() is compiled.
Task-number: QTBUG-76491
Change-Id: Ida625f19d61081cfd50ae11ab50cf7829aef80a5
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
One was an easy replacement, the other changes its reference time,
which isn't supported by QElapsedTimer. However, it was easy enough
to reimplement in terms of QDateTime::currentMSecsSinceEpoch(); and,
as it was previously using QTime as timer, this is presumably good
enough (although a proper monotonic timer would be better).
Change-Id: I90f8e08635e7d2bc364755efd93fce008b6a62c0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The presence of the viewBox attribute in the svg tag implies the
presence of the preserveAspectRatio attribute as well. It defaults to
scaling the view box to the view port while preserving the aspect ratio
and the box is also centered.
This patch does not implement the full preserveAspectRatio attribute,
but it does implement the default of aspect ratio preservation and
centering, as that is what caused the rendering error in the linked
task.
This causes some tests in the SVG Tiny 1.2 test suite to differ. This is
visible using the rendertestsuite helper program (see other change).
In particular it corrects the rendering of struct-svg-203-t.svg to
correctly center the text and avoid scaling it.
For animate-elem-38-t.svg the rendering improved by making the entire
text visible, as in the reference. The same applies to
media-video-216-t.svg. In both rendering the scaling changes slightly.
Done-With: Rainer Keller <rainer.keller@qt.io>
Fixes: QTBUG-70256
Change-Id: I9142c511890765993ee3e316f0383550919fdcd4
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|/
|
|
|
|
|
|
| |
Replace QPainter::HighQualityAntialiasing with Antialiasing and remove
defines needed for Qt4.
Change-Id: I866decad7d9c10da15e5b0e0bd79033d574f6a08
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|\
| |
| |
| | |
Change-Id: I4a7a5ad6cd164f0d440217566bd647ecde4fddfb
|
| |
| |
| |
| |
| | |
Change-Id: If2b13c3dc4a09ce6d18aff97855179172f92878b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Their lifetime is controlled by the document, but the logic
was confused and lost the node.
Change-Id: Ib074dcf209d53ade894ee571a0bc08a1a7acfcab
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
|
|\ \
| |/
| |
| | |
Change-Id: Id1bdcd52b3c4553e882de825c769bd7643745dce
|
| |\
| | |
| | |
| | | |
Change-Id: I73662000d1b52a4b61a9bd0a58af2fb9a7dc7b22
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
A reference loop with at least three elements would lead to endless
recursion.
Fixes: QTBUG-74189
Change-Id: Ie3c1b32da0e98e9218dc387dd3210666018a92e1
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|\ \ \
| |/ /
| | |
| | | |
Change-Id: I6be198d51f5e4c617724bd9c4098bd2bed45b995
|
| |/
| |
| |
| |
| | |
Change-Id: I75b3a88aae3cbd7838474d7a78f29fcd58172fc2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
|
|\ \
| |/
| |
| | |
Change-Id: I53ec3fb5c2aa7aa953628d2ef56fead24ce0160f
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Make the parsing of IRI references tighter, and avoid freeing
styles when inserting a duplicate id.
Fixes: QTBUG-74104
Change-Id: I3a12fcf09ce1c55c135a4209817413ed8af75dec
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|\ \
| |/
| |
| | |
Change-Id: I1c146c122f307cd6e985061b412ef2b50690561e
|
| |
| |
| |
| |
| |
| | |
Fixes: QTBUG-74129
Change-Id: I871c144f1df288a310e82aef979af7cfd7a54095
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The QSvgHandler always expects the caller to handle ownership of the
generated document, also when the parsing failed.
QSvgHandler also failed to handle misplaced group elements.
Fixes: QTBUG-74083
Change-Id: I8907117d4305ecd84e328b201791001cb877fc60
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
|
|\ \
| |/
| |
| | |
Change-Id: Ieb656507bd67b147559c922ec0c7076e4b8b835a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The bounds of QSvgImage are integer based (QRect) which cause rounding
issues when decimals values are used to define image (image shifted and
with incorrect size). Changing the bounds to QRectF solves the issue.
Fixes: QTBUG-73445
Change-Id: I49828e2c0b1917ec878844d520aac182581c23fb
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix:
qsvgiconengine.cpp: In member function ‘virtual QPixmap QSvgIconEngine::pixmap(const QSize&, QIcon::Mode, QIcon::State)’:
qsvgiconengine.cpp:200:38: warning: ‘static bool QPixmapCache::find(const QString&, QPixmap&)’ is deprecated: Use bool find(const QString &, QPixmap *) instead [-Wdeprecated-declarations]
tst_qsvgrenderer.cpp:479:54: warning: ‘const QMatrix& QPainter::worldMatrix() const’ is deprecated: Use worldTransform() instead [-Wdeprecated-declarations]
...
glwidget.cpp: In member function ‘void GLWidget::draw()’:
glwidget.cpp:231:41: warning: ‘int QFontMetrics::width(const QString&, int) const’ is deprecated: Use QFontMetrics::horizontalAdvance [-Wdeprecated-declarations]
glwidget.cpp:232:41: warning: ‘int QFontMetrics::width(const QString&, int) const’ is deprecated: Use QFontMetrics::horizontalAdvance [-Wdeprecated-declarations]
fluidlauncher.cpp:71:65: warning: ‘const QRect QDesktopWidget::screenGeometry(int) const’ is deprecated: Use QGuiApplication::screens() [-Wdeprecated-declarations]
Change-Id: Iae20d950c3118d05f91202c8020dbd81fa73b48f
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
According to https://www.w3.org/TR/SVG/styling.html#StyleElement, `type`
can be omitted.
> If the attribute is not specified, then the style sheet language is assumed to be CSS.
Original-Author: Christoph Feck
Fixes: QTBUG-58326
Fixes: QTBUG-69378
Change-Id: Ic3d0e8db99da8c81e5a01c0dda33fb38428e38d5
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-16198
Change-Id: I26bf48cbac39af0fae490ed21579e8de326cd1a3
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
SVG <use> elements may refer to a node that is defined later in the
file. The parser would then fail to resolve the link. Implement
delayed link resolution in the parser to handle such cases.
Task-number: QTBUG-69694
Change-Id: I94ffb3511dbd0fac822bb56991415b2d99ccf90e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
|
|
|
|
|
|
|
| |
This patch updates the QSvgHandler class to use QRegularExpression in
place of QRegExp which is to be considered deprecated.
Change-Id: Ie35ff1e697741711440b6a99da26d435bc782d15
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: Ic41094e6744df3d84d76bcfe701092e137660f80
|
| |
| |
| |
| |
| |
| |
| | |
The parsing did not check for end of input.
Change-Id: I56a478877d242146395977b767511425d2b8ced1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QBrush transformations were not applied in the object coordinate
space, even when using Qt's ObjectBoundingMode. Use the new ObjectMode
instead to fix this.
Task-number: QTBUG-59978
Task-number: QTBUG-67995
Change-Id: I79f529853ed8bca86b1811f4edf66244a026a27c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch makes the svg icon code similar to the code for pixmap icons.
We only style the code if we fetch a different mode (+it is not normal)
and we try to find icons in same order as the pixmap icons.
[ChangeLog][][QIcon/QSvgIconEngine] Made SVG icons behave like pixmap icons:
An explicitly-set disabled icon is no longer additionally grayed out.
Task-number: QTBUG-67452
Change-Id: I94b4146bae2e9d924a96b602bf23909bd7f0e934
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Morten Kristensen <msk@nullpointer.dk>
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
| |
QImage allocation failure, typically because of out-of-range
dimensions, was not immediately caught and reported. This could lead
confusing error messages as QPainter would render on a null image.
Task-number: QTBUG-68229
Change-Id: If99033244728f1cea635691c6a93564976962f09
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
When width or height is specified in percent, it is supposed to be
relative to the viewport.
https://www.w3.org/TR/SVG/coords.html#Units
Task-number: QTBUG-2279
Change-Id: Ia1597b88d4e1c705a6755db788a18cf790d5ee97
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
In QSvgAnimateTransform::resolveMatrix(), the indexes into the vals
array were previously calculated to be 1,1 in the final step, where
currentPosition=1, by using qCeil()/qFloor(), resulting in rotationDiff=0
and the rotation snapping back.
Fix by setting startElem to endElem - 1 when available.
Task-number: QTBUG-67525
Change-Id: Ie1d7e8be6ea8dd9aa155ee8c479037bc269f6df7
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|
|
|
|
|
|
|
| |
QString allocation can be avoided in some places after
the introduction of QStringRef::toInt()/toDouble().
Change-Id: Ib400f49df04847f85aeea0190215f864f71223bd
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Extend existing enum by "none" and extract a function
to return the specification so that "none" can be cleanly
handled.
Task-number: QTBUG-66646
Change-Id: If4ec1056c6f0fa407f76b747634bb898e75a5474
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|\
| |
| |
| | |
Change-Id: Ic852de844e8a1e7acfe4aaaf79acf46674ba5ffa
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The linker complains:
LINK : warning LNK4281: undesirable base address 0x67000000 for x64 image; set base address above 4GB for best ASLR optimization
And it's not really required anymore, as the recommended /DYNAMICBASE is
the default.
Change-Id: I56b444f9d6274221a3b7fffd150caab1beecfd43
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
|\ \
| |/
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: I2d1692e18205aa86e7181d907eac21dc096744ae
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In 4a9470e55ce08752501868c60762268fdf2c44af there was introduced
specific isNull() implementation for QSvgIconEngine. But the existing
check was not sufficient for the scenarios where the QIcon is
constructed by deserialization from QDataStream (from previously
serialized valid svg QIcon).
We also need to check the svgBuffers as the previously serialized
svgFiles are silently ignored by QSvgIconEngine::read().
Change-Id: Id64ce233baead053c8b5ca61f1d416e46a8c6088
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
| |
| |
| |
| |
| |
| |
| | |
Use begin()/end() instead.
Change-Id: Ia51069dba42aa26e78b071b147a69c7f36947d12
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|\ \
| |/
| |
| | |
Change-Id: I7e158268343c5d92d666d266a87095f1154714dd
|
| |\
| | |
| | |
| | | |
Change-Id: I2c5f1f592e2141b93fa274124a96f2a63b83acdb
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Referring to an ancestor in a <use> element would lead to endless
recursion. Add checks to avoid recursion, and also emit a warning
while parsing.
Task-number: QTBUG-64425
Change-Id: I9ee1b9bfef13796cc3f387ff8579c6b13bc4ae9a
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |\ \
| | |/
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
Change-Id: I8b9a5a395dbd6659f7806eeebdd665c760a71ec1
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I2a2501a61107717b8e1adacad064664cf54cd972
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I3917e7ab180b49c77bff0d071eca10f8bc7f33c7
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
|