mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-13 03:24:26 +00:00
Bug 1225977 - fix DrawTargetSkia::MaskSurface with non-zero offset. r=jmuizelaar
This commit is contained in:
parent
6968aac9f3
commit
b8d98433fb
@ -656,16 +656,20 @@ DrawTargetSkia::MaskSurface(const Pattern &aSource,
|
||||
|
||||
TempBitmap bitmap = GetBitmapForSurface(aMask);
|
||||
if (bitmap.mBitmap.colorType() == kAlpha_8_SkColorType) {
|
||||
if (aOffset != Point(0, 0)) {
|
||||
SkMatrix transform;
|
||||
transform.setTranslate(SkFloatToScalar(-aOffset.x), SkFloatToScalar(-aOffset.y));
|
||||
SkShader* matrixShader = SkShader::CreateLocalMatrixShader(paint.mPaint.getShader(), transform);
|
||||
SkSafeUnref(paint.mPaint.setShader(matrixShader));
|
||||
}
|
||||
|
||||
mCanvas->drawBitmap(bitmap.mBitmap, aOffset.x, aOffset.y, &paint.mPaint);
|
||||
} else {
|
||||
SkPaint maskPaint;
|
||||
TempBitmap tmpBitmap;
|
||||
SetPaintPattern(maskPaint, SurfacePattern(aMask, ExtendMode::CLAMP), tmpBitmap);
|
||||
|
||||
SkMatrix transform = maskPaint.getShader()->getLocalMatrix();
|
||||
transform.postTranslate(SkFloatToScalar(aOffset.x), SkFloatToScalar(aOffset.y));
|
||||
SkShader* matrixShader = SkShader::CreateLocalMatrixShader(maskPaint.getShader(), transform);
|
||||
SkSafeUnref(maskPaint.setShader(matrixShader));
|
||||
SetPaintPattern(maskPaint,
|
||||
SurfacePattern(aMask, ExtendMode::CLAMP, Matrix::Translation(aOffset)),
|
||||
tmpBitmap);
|
||||
|
||||
SkLayerRasterizer::Builder builder;
|
||||
builder.addLayer(maskPaint);
|
||||
|
Loading…
x
Reference in New Issue
Block a user