Index: src/core/SkScalerContext.cpp |
diff --git a/src/core/SkScalerContext.cpp b/src/core/SkScalerContext.cpp |
index 7747cae0dfb297d80b2086cd906d22dc53080c8e..4ce42ddc077cef101215d1d96a3741f5a3cde54e 100644 |
--- a/src/core/SkScalerContext.cpp |
+++ b/src/core/SkScalerContext.cpp |
@@ -248,7 +248,7 @@ static void applyLUTToA8Mask(const SkMask& mask, const uint8_t* lut) { |
} |
template<bool APPLY_PREBLEND> |
-static void pack4xHToLCD16(const SkBitmap& src, const SkMask& dst, |
+static void pack4xHToLCD16(const SkPixmap& src, const SkMask& dst, |
const SkMaskGamma::PreBlend& maskPreBlend) { |
#define SAMPLES_PER_PIXEL 4 |
#define LCD_PER_PIXEL 3 |
@@ -291,7 +291,7 @@ static void pack4xHToLCD16(const SkBitmap& src, const SkMask& dst, |
}; |
for (int y = 0; y < height; ++y) { |
- const uint8_t* srcP = src.getAddr8(0, y); |
+ const uint8_t* srcP = src.addr8(0, y); |
// TODO: this fir filter implementation is straight forward, but slow. |
// It should be possible to make it much faster. |
@@ -406,29 +406,29 @@ static void generateMask(const SkMask& mask, const SkPath& path, |
clip.setRect(SkIRect::MakeWH(dstW, dstH)); |
const SkImageInfo info = SkImageInfo::MakeA8(dstW, dstH); |
- SkBitmap bm; |
+ SkAutoPixmapStorage dst; |
if (0 == dstRB) { |
- if (!bm.tryAllocPixels(info)) { |
+ if (!dst.tryAlloc(info)) { |
// can't allocate offscreen, so empty the mask and return |
sk_bzero(mask.fImage, mask.computeImageSize()); |
return; |
} |
} else { |
- bm.installPixels(info, mask.fImage, dstRB); |
+ dst.reset(info, mask.fImage, dstRB); |
} |
- sk_bzero(bm.getPixels(), bm.getSafeSize()); |
+ sk_bzero(dst.writable_addr(), dst.getSafeSize()); |
SkDraw draw; |
+ draw.fDst = dst; |
draw.fRC = &clip; |
draw.fClip = &clip.bwRgn(); |
draw.fMatrix = &matrix; |
- draw.fBitmap = &bm; |
draw.drawPath(path, paint); |
switch (mask.fFormat) { |
case SkMask::kBW_Format: |
- packA8ToA1(mask, bm.getAddr8(0, 0), bm.rowBytes()); |
+ packA8ToA1(mask, dst.addr8(0, 0), dst.rowBytes()); |
break; |
case SkMask::kA8_Format: |
if (maskPreBlend.isApplicable()) { |
@@ -437,9 +437,9 @@ static void generateMask(const SkMask& mask, const SkPath& path, |
break; |
case SkMask::kLCD16_Format: |
if (maskPreBlend.isApplicable()) { |
- pack4xHToLCD16<true>(bm, mask, maskPreBlend); |
+ pack4xHToLCD16<true>(dst, mask, maskPreBlend); |
} else { |
- pack4xHToLCD16<false>(bm, mask, maskPreBlend); |
+ pack4xHToLCD16<false>(dst, mask, maskPreBlend); |
} |
break; |
default: |