mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 03:45:46 +00:00
Bug 759036. Fix a masking bug in Thebes-Azure. r=Bas
This commit is contained in:
parent
9f3d57ab47
commit
2314a427af
@ -46,10 +46,10 @@ public:
|
||||
Matrix transform = state.surfTransform;
|
||||
|
||||
if (state.patternTransformChanged) {
|
||||
Matrix mat = state.patternTransform;
|
||||
Matrix mat = mContext->mDT->GetTransform();
|
||||
mat.Invert();
|
||||
|
||||
transform = mat * mContext->mDT->GetTransform() * transform;
|
||||
transform = mat * state.patternTransform * transform;
|
||||
}
|
||||
|
||||
mPattern = new (mSurfacePattern.addr())
|
||||
@ -1423,7 +1423,7 @@ gfxContext::Mask(gfxASurface *surface, const gfxPoint& offset)
|
||||
mDT->Mask(GeneralPattern(this),
|
||||
SurfacePattern(sourceSurf, EXTEND_CLAMP,
|
||||
Matrix(1.0f, 0, 0, 1.0f, Float(offset.x - pt.x), Float(offset.y - pt.y))),
|
||||
DrawOptions(1.0f, CurrentState().op, CurrentState().aaMode));
|
||||
DrawOptions(1.0f, CurrentState().op, CurrentState().aaMode));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -167,7 +167,6 @@ gfxPattern::GetPattern(DrawTarget *aTarget, Matrix *aPatternTransform)
|
||||
|
||||
AdjustTransformForPattern(newMat, aTarget->GetTransform(), aPatternTransform);
|
||||
|
||||
newMat.Invert();
|
||||
double x, y;
|
||||
cairo_surface_get_device_offset(surf, &x, &y);
|
||||
newMat.Translate(-x, -y);
|
||||
@ -209,8 +208,6 @@ gfxPattern::GetPattern(DrawTarget *aTarget, Matrix *aPatternTransform)
|
||||
|
||||
AdjustTransformForPattern(newMat, aTarget->GetTransform(), aPatternTransform);
|
||||
|
||||
newMat.Invert();
|
||||
|
||||
mGfxPattern = new (mLinearGradientPattern.addr())
|
||||
LinearGradientPattern(Point(x1, y1), Point(x2, y2), mStops, newMat);
|
||||
|
||||
@ -248,8 +245,6 @@ gfxPattern::GetPattern(DrawTarget *aTarget, Matrix *aPatternTransform)
|
||||
|
||||
AdjustTransformForPattern(newMat, aTarget->GetTransform(), aPatternTransform);
|
||||
|
||||
newMat.Invert();
|
||||
|
||||
double x1, y1, x2, y2, r1, r2;
|
||||
cairo_pattern_get_radial_circles(mPattern, &x1, &y1, &r1, &x2, &y2, &r2);
|
||||
mGfxPattern = new (mRadialGradientPattern.addr())
|
||||
@ -417,12 +412,13 @@ gfxPattern::AdjustTransformForPattern(Matrix &aPatternTransform,
|
||||
const Matrix &aCurrentTransform,
|
||||
const Matrix *aOriginalTransform)
|
||||
{
|
||||
aPatternTransform.Invert();
|
||||
if (!aOriginalTransform) {
|
||||
return;
|
||||
}
|
||||
|
||||
Matrix mat = *aOriginalTransform;
|
||||
Matrix mat = aCurrentTransform;
|
||||
mat.Invert();
|
||||
|
||||
aPatternTransform = mat * aCurrentTransform * aPatternTransform;
|
||||
}
|
||||
aPatternTransform = aPatternTransform * *aOriginalTransform * mat;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user