mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 23:38:38 +09:00
Issue #438: Do not round the translation of an SVG frame.
This doesn't solve the blurriness yet, but is part of the problem.
This commit is contained in:
parent
acefb96117
commit
8a29ec9a3f
5 changed files with 36 additions and 6 deletions
|
|
@ -5917,6 +5917,12 @@ nsDisplayTransform::GetResultingTransformMatrixInternal(const FrameTransformProp
|
|||
frame && frame->IsSVGTransformed(&svgTransform, &transformFromSVGParent);
|
||||
bool hasTransformFromSVGParent =
|
||||
hasSVGTransforms && !transformFromSVGParent.IsIdentity();
|
||||
|
||||
// An SVG frame should not have its translation rounded.
|
||||
// Note it's possible that the SVG frame doesn't have an SVG
|
||||
// transform but only has a CSS transform.
|
||||
bool shouldRound = !(frame && frame->IsFrameOfType(nsIFrame::eSVG));
|
||||
|
||||
/* Transformed frames always have a transform, or are preserving 3d (and might still have perspective!) */
|
||||
if (aProperties.mTransformList) {
|
||||
result = nsStyleTransformMatrix::ReadTransforms(aProperties.mTransformList->mHead,
|
||||
|
|
@ -5994,7 +6000,7 @@ nsDisplayTransform::GetResultingTransformMatrixInternal(const FrameTransformProp
|
|||
// Otherwise we need to manually translate into our parent's coordinate
|
||||
// space.
|
||||
if (frame->IsTransformed()) {
|
||||
nsLayoutUtils::PostTranslate(result, frame->GetPosition(), aAppUnitsPerPixel, !hasSVGTransforms);
|
||||
nsLayoutUtils::PostTranslate(result, frame->GetPosition(), aAppUnitsPerPixel, shouldRound);
|
||||
}
|
||||
Matrix4x4 parent =
|
||||
GetResultingTransformMatrixInternal(props,
|
||||
|
|
@ -6005,7 +6011,7 @@ nsDisplayTransform::GetResultingTransformMatrixInternal(const FrameTransformProp
|
|||
}
|
||||
|
||||
if (aFlags & OFFSET_BY_ORIGIN) {
|
||||
nsLayoutUtils::PostTranslate(result, aOrigin, aAppUnitsPerPixel, !hasSVGTransforms);
|
||||
nsLayoutUtils::PostTranslate(result, aOrigin, aAppUnitsPerPixel, shouldRound);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
|||
10
layout/reftests/svg/css-transform-svg-ref.html
Normal file
10
layout/reftests/svg/css-transform-svg-ref.html
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<style>
|
||||
</style>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
|
||||
<rect id="a" x="0.49" y="0.51" width="2.5" height="2.5"/>
|
||||
<rect id="b" x="3.5" y="3.5" width="2.5" height="2.5"/>
|
||||
</svg>
|
||||
13
layout/reftests/svg/css-transform-svg.html
Normal file
13
layout/reftests/svg/css-transform-svg.html
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<style>
|
||||
#a {
|
||||
transform: scaleY(1);
|
||||
}
|
||||
</style>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
|
||||
<rect id="a" x="0.49" y="0.51" width="2.5" height="2.5"/>
|
||||
<rect id="b" x="3.5" y="3.5" width="2.5" height="2.5"/>
|
||||
</svg>
|
||||
|
|
@ -371,6 +371,7 @@ fuzzy-if(skiaContent,1,610) == textPath-03.svg pass.svg
|
|||
== text-white-space-01.svg text-white-space-01-ref.svg
|
||||
== thin-stroke-01.svg pass.svg
|
||||
== zero-stroke-01.svg pass.svg
|
||||
== css-transform-svg.html css-transform-svg-ref.html
|
||||
== tspan-dxdy-01.svg tspan-dxdy-ref.svg
|
||||
== tspan-dxdy-02.svg tspan-dxdy-ref.svg
|
||||
== tspan-dxdy-03.svg tspan-dxdy-ref.svg
|
||||
|
|
|
|||
|
|
@ -182,11 +182,11 @@ fails == object-position-png-002c.html object-position-png-002-ref.html # bug 11
|
|||
== object-position-png-002i.html object-position-png-002-ref.html
|
||||
== object-position-png-002o.html object-position-png-002-ref.html
|
||||
== object-position-png-002p.html object-position-png-002-ref.html
|
||||
fails == object-position-svg-001e.html object-position-svg-001-ref.html # bug 1103286
|
||||
== object-position-svg-001e.html object-position-svg-001-ref.html # bug 1103286
|
||||
== object-position-svg-001i.html object-position-svg-001-ref.html
|
||||
fails == object-position-svg-001o.html object-position-svg-001-ref.html # bug 1103286
|
||||
== object-position-svg-001o.html object-position-svg-001-ref.html # bug 1103286
|
||||
== object-position-svg-001p.html object-position-svg-001-ref.html
|
||||
fails == object-position-svg-002e.html object-position-svg-002-ref.html # bug 1103286
|
||||
== object-position-svg-002e.html object-position-svg-002-ref.html # bug 1103286
|
||||
== object-position-svg-002i.html object-position-svg-002-ref.html
|
||||
fails == object-position-svg-002o.html object-position-svg-002-ref.html # bug 1103286
|
||||
== object-position-svg-002o.html object-position-svg-002-ref.html # bug 1103286
|
||||
== object-position-svg-002p.html object-position-svg-002-ref.html
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue