mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 891650. Use mTransform instead of GetDTTransform() in Mask(). r=bas
GetDTTransform includes the device offset. We need to avoid that in order for things to work properly. --HG-- extra : rebase_source : 5a8ae0011f16b85421df182263ec3137cecf6a6b
This commit is contained in:
parent
76f5daf76f
commit
0e7b768178
@ -1427,10 +1427,10 @@ gfxContext::Mask(gfxPattern *pattern)
|
||||
if (pattern->IsAzure() || pattern->GetType() == gfxPattern::PATTERN_SURFACE) {
|
||||
RefPtr<SourceSurface> mask = pattern->GetAzureSurface();
|
||||
Matrix mat = ToMatrix(pattern->GetInverseMatrix());
|
||||
Matrix old = GetDTTransform();
|
||||
Matrix old = mTransform;
|
||||
// add in the inverse of the pattern transform so that when we
|
||||
// MaskSurface we are transformed to the place matching the pattern transform
|
||||
mat = mat * GetDTTransform();
|
||||
mat = mat * mTransform;
|
||||
|
||||
ChangeTransform(mat);
|
||||
mDT->MaskSurface(GeneralPattern(this), mask, offset, DrawOptions(1.0f, CurrentState().op, CurrentState().aaMode));
|
||||
|
31
layout/reftests/svg/mask-img-ref.html
Normal file
31
layout/reftests/svg/mask-img-ref.html
Normal file
@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body style="margin:0">
|
||||
<img src='data:image/svg+xml,
|
||||
<!-- vim: set expandtab ts=2 sw=2 tw=80: -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 700 130">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
.fillSpan {
|
||||
fill: lightgrey;
|
||||
stroke: black;
|
||||
}
|
||||
</style>
|
||||
<!-- Fade out effect -->
|
||||
<mask id="fadeout" maskContentUnits="objectBoundingBox">
|
||||
<rect x="-0.05" y="-0.05" width="1.1" height="1.1"
|
||||
fill="url(%23fadeoutGrad)"/>
|
||||
</mask>
|
||||
<linearGradient id="fadeoutGrad">
|
||||
<stop offset="0" stop-color="white" stop-opacity="1"/>
|
||||
<stop offset="0.35" stop-color="white" stop-opacity="1"/>
|
||||
<stop offset="0.9" stop-color="white" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect y="50" width="150" height="80" class="fillSpan" mask="url(%23fadeout)"/>
|
||||
</svg>
|
||||
' border=0 width="700">
|
||||
</body>
|
||||
</html>
|
32
layout/reftests/svg/mask-img.html
Normal file
32
layout/reftests/svg/mask-img.html
Normal file
@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body style="margin:0">
|
||||
<div style="height:50px"></div>
|
||||
<img border=0 src='data:image/svg+xml,
|
||||
<!-- vim: set expandtab ts=2 sw=2 tw=80: -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 700 80">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
.fillSpan {
|
||||
fill: lightgrey;
|
||||
stroke: black;
|
||||
}
|
||||
</style>
|
||||
<!-- Fade out effect -->
|
||||
<mask id="fadeout" maskContentUnits="objectBoundingBox">
|
||||
<rect x="-0.05" y="-0.05" width="1.1" height="1.1"
|
||||
fill="url(%23fadeoutGrad)"/>
|
||||
</mask>
|
||||
<linearGradient id="fadeoutGrad">
|
||||
<stop offset="0" stop-color="white" stop-opacity="1"/>
|
||||
<stop offset="0.35" stop-color="white" stop-opacity="1"/>
|
||||
<stop offset="0.9" stop-color="white" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="150" height="80" class="fillSpan" mask="url(%23fadeout)"/>
|
||||
</svg>
|
||||
' width="700">
|
||||
</body>
|
||||
</html>
|
@ -365,3 +365,4 @@ skip-if(B2G) == tspan-xy-anchor-end-01.svg tspan-xy-anchor-end-ref.svg # bug 773
|
||||
== svg-effects-area-zoomed-in.xhtml svg-effects-area-zoomed-in-ref.xhtml
|
||||
== svg-effects-area-zoomed-out.xhtml svg-effects-area-zoomed-out-ref.xhtml
|
||||
== href-attr-change-restyles.svg href-attr-change-restyles-ref.svg
|
||||
== mask-img.html mask-img-ref.html
|
||||
|
Loading…
Reference in New Issue
Block a user