| Index: src/core/SkBlitter_ARGB32.cpp
|
| diff --git a/src/core/SkBlitter_ARGB32.cpp b/src/core/SkBlitter_ARGB32.cpp
|
| index f2de82a2e9e2ea8cc2748a9a7ea851437771d03b..683acf0aaef01248a4e0875ecdf32e060676145b 100644
|
| --- a/src/core/SkBlitter_ARGB32.cpp
|
| +++ b/src/core/SkBlitter_ARGB32.cpp
|
| @@ -14,7 +14,7 @@
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| -static void SkARGB32_Blit32(const SkBitmap& device, const SkMask& mask,
|
| +static void SkARGB32_Blit32(const SkPixmap& device, const SkMask& mask,
|
| const SkIRect& clip, SkPMColor srcColor) {
|
| U8CPU alpha = SkGetPackedA32(srcColor);
|
| unsigned flags = SkBlitRow::kSrcPixelAlpha_Flag32;
|
| @@ -28,7 +28,7 @@ static void SkARGB32_Blit32(const SkBitmap& device, const SkMask& mask,
|
| int width = clip.width();
|
| int height = clip.height();
|
|
|
| - SkPMColor* dstRow = device.getAddr32(x, y);
|
| + SkPMColor* dstRow = device.writable_addr32(x, y);
|
| const SkPMColor* srcRow = reinterpret_cast<const SkPMColor*>(mask.getAddr8(x, y));
|
|
|
| do {
|
| @@ -40,7 +40,7 @@ static void SkARGB32_Blit32(const SkBitmap& device, const SkMask& mask,
|
|
|
| //////////////////////////////////////////////////////////////////////////////////////
|
|
|
| -SkARGB32_Blitter::SkARGB32_Blitter(const SkBitmap& device, const SkPaint& paint)
|
| +SkARGB32_Blitter::SkARGB32_Blitter(const SkPixmap& device, const SkPaint& paint)
|
| : INHERITED(device) {
|
| SkColor color = paint.getColor();
|
| fColor = color;
|
| @@ -54,7 +54,7 @@ SkARGB32_Blitter::SkARGB32_Blitter(const SkBitmap& device, const SkPaint& paint)
|
| fPMColor = SkPackARGB32(fSrcA, fSrcR, fSrcG, fSrcB);
|
| }
|
|
|
| -const SkBitmap* SkARGB32_Blitter::justAnOpaqueColor(uint32_t* value) {
|
| +const SkPixmap* SkARGB32_Blitter::justAnOpaqueColor(uint32_t* value) {
|
| if (255 == fSrcA) {
|
| *value = fPMColor;
|
| return &fDevice;
|
| @@ -70,7 +70,7 @@ const SkBitmap* SkARGB32_Blitter::justAnOpaqueColor(uint32_t* value) {
|
| void SkARGB32_Blitter::blitH(int x, int y, int width) {
|
| SkASSERT(x >= 0 && y >= 0 && x + width <= fDevice.width());
|
|
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| SkBlitRow::Color32(device, device, width, fPMColor);
|
| }
|
|
|
| @@ -81,7 +81,7 @@ void SkARGB32_Blitter::blitAntiH(int x, int y, const SkAlpha antialias[],
|
| }
|
|
|
| uint32_t color = fPMColor;
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| unsigned opaqueMask = fSrcA; // if fSrcA is 0xFF, then we will catch the fast opaque case
|
|
|
| for (;;) {
|
| @@ -106,16 +106,16 @@ void SkARGB32_Blitter::blitAntiH(int x, int y, const SkAlpha antialias[],
|
| }
|
|
|
| void SkARGB32_Blitter::blitAntiH2(int x, int y, U8CPU a0, U8CPU a1) {
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| - SkDEBUGCODE((void)fDevice.getAddr32(x + 1, y);)
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| + SkDEBUGCODE((void)fDevice.writable_addr32(x + 1, y);)
|
|
|
| device[0] = SkBlendARGB32(fPMColor, device[0], a0);
|
| device[1] = SkBlendARGB32(fPMColor, device[1], a1);
|
| }
|
|
|
| void SkARGB32_Blitter::blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) {
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| - SkDEBUGCODE((void)fDevice.getAddr32(x, y + 1);)
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| + SkDEBUGCODE((void)fDevice.writable_addr32(x, y + 1);)
|
|
|
| device[0] = SkBlendARGB32(fPMColor, device[0], a0);
|
| device = (uint32_t*)((char*)device + fDevice.rowBytes());
|
| @@ -139,7 +139,7 @@ void SkARGB32_Blitter::blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) {
|
| #define SK_BLITBWMASK_NAME SkARGB32_BlitBW
|
| #define SK_BLITBWMASK_ARGS , SkPMColor color
|
| #define SK_BLITBWMASK_BLIT8(mask, dst) solid_8_pixels(mask, dst, color)
|
| -#define SK_BLITBWMASK_GETADDR getAddr32
|
| +#define SK_BLITBWMASK_GETADDR writable_addr32
|
| #define SK_BLITBWMASK_DEVTYPE uint32_t
|
| #include "SkBlitBWMaskTemplate.h"
|
|
|
| @@ -158,7 +158,7 @@ void SkARGB32_Blitter::blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) {
|
| #define SK_BLITBWMASK_NAME SkARGB32_BlendBW
|
| #define SK_BLITBWMASK_ARGS , uint32_t sc, unsigned dst_scale
|
| #define SK_BLITBWMASK_BLIT8(mask, dst) blend_8_pixels(mask, dst, sc, dst_scale)
|
| -#define SK_BLITBWMASK_GETADDR getAddr32
|
| +#define SK_BLITBWMASK_GETADDR writable_addr32
|
| #define SK_BLITBWMASK_DEVTYPE uint32_t
|
| #include "SkBlitBWMaskTemplate.h"
|
|
|
| @@ -197,16 +197,16 @@ void SkARGB32_Opaque_Blitter::blitMask(const SkMask& mask,
|
| }
|
|
|
| void SkARGB32_Opaque_Blitter::blitAntiH2(int x, int y, U8CPU a0, U8CPU a1) {
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| - SkDEBUGCODE((void)fDevice.getAddr32(x + 1, y);)
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| + SkDEBUGCODE((void)fDevice.writable_addr32(x + 1, y);)
|
|
|
| device[0] = SkFastFourByteInterp(fPMColor, device[0], a0);
|
| device[1] = SkFastFourByteInterp(fPMColor, device[1], a1);
|
| }
|
|
|
| void SkARGB32_Opaque_Blitter::blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) {
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| - SkDEBUGCODE((void)fDevice.getAddr32(x, y + 1);)
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| + SkDEBUGCODE((void)fDevice.writable_addr32(x, y + 1);)
|
|
|
| device[0] = SkFastFourByteInterp(fPMColor, device[0], a0);
|
| device = (uint32_t*)((char*)device + fDevice.rowBytes());
|
| @@ -220,7 +220,7 @@ void SkARGB32_Blitter::blitV(int x, int y, int height, SkAlpha alpha) {
|
| return;
|
| }
|
|
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| uint32_t color = fPMColor;
|
|
|
| if (alpha != 255) {
|
| @@ -242,7 +242,7 @@ void SkARGB32_Blitter::blitRect(int x, int y, int width, int height) {
|
| return;
|
| }
|
|
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| uint32_t color = fPMColor;
|
| size_t rowBytes = fDevice.rowBytes();
|
|
|
| @@ -260,7 +260,7 @@ void SkARGB32_Blitter::blitRect(int x, int y, int width, int height) {
|
|
|
| void SkARGB32_Black_Blitter::blitAntiH(int x, int y, const SkAlpha antialias[],
|
| const int16_t runs[]) {
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| SkPMColor black = (SkPMColor)(SK_A32_MASK << SK_A32_SHIFT);
|
|
|
| for (;;) {
|
| @@ -290,16 +290,16 @@ void SkARGB32_Black_Blitter::blitAntiH(int x, int y, const SkAlpha antialias[],
|
| }
|
|
|
| void SkARGB32_Black_Blitter::blitAntiH2(int x, int y, U8CPU a0, U8CPU a1) {
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| - SkDEBUGCODE((void)fDevice.getAddr32(x + 1, y);)
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| + SkDEBUGCODE((void)fDevice.writable_addr32(x + 1, y);)
|
|
|
| device[0] = (a0 << SK_A32_SHIFT) + SkAlphaMulQ(device[0], 256 - a0);
|
| device[1] = (a1 << SK_A32_SHIFT) + SkAlphaMulQ(device[1], 256 - a1);
|
| }
|
|
|
| void SkARGB32_Black_Blitter::blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) {
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| - SkDEBUGCODE((void)fDevice.getAddr32(x, y + 1);)
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| + SkDEBUGCODE((void)fDevice.writable_addr32(x, y + 1);)
|
|
|
| device[0] = (a0 << SK_A32_SHIFT) + SkAlphaMulQ(device[0], 256 - a0);
|
| device = (uint32_t*)((char*)device + fDevice.rowBytes());
|
| @@ -319,7 +319,7 @@ static void blend_srcmode(SkPMColor* SK_RESTRICT device,
|
| }
|
| }
|
|
|
| -SkARGB32_Shader_Blitter::SkARGB32_Shader_Blitter(const SkBitmap& device,
|
| +SkARGB32_Shader_Blitter::SkARGB32_Shader_Blitter(const SkPixmap& device,
|
| const SkPaint& paint, SkShader::Context* shaderContext)
|
| : INHERITED(device, paint, shaderContext)
|
| {
|
| @@ -363,7 +363,7 @@ SkARGB32_Shader_Blitter::~SkARGB32_Shader_Blitter() {
|
| void SkARGB32_Shader_Blitter::blitH(int x, int y, int width) {
|
| SkASSERT(x >= 0 && y >= 0 && x + width <= fDevice.width());
|
|
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
|
|
| if (fShadeDirectlyIntoDevice) {
|
| fShaderContext->shadeSpan(x, y, device, width);
|
| @@ -382,7 +382,7 @@ void SkARGB32_Shader_Blitter::blitRect(int x, int y, int width, int height) {
|
| SkASSERT(x >= 0 && y >= 0 &&
|
| x + width <= fDevice.width() && y + height <= fDevice.height());
|
|
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| size_t deviceRB = fDevice.rowBytes();
|
| SkShader::Context* shaderContext = fShaderContext;
|
| SkPMColor* span = fBuffer;
|
| @@ -457,7 +457,7 @@ void SkARGB32_Shader_Blitter::blitRect(int x, int y, int width, int height) {
|
| void SkARGB32_Shader_Blitter::blitAntiH(int x, int y, const SkAlpha antialias[],
|
| const int16_t runs[]) {
|
| SkPMColor* span = fBuffer;
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| SkShader::Context* shaderContext = fShaderContext;
|
|
|
| if (fXfermode && !fShadeDirectlyIntoDevice) {
|
| @@ -558,7 +558,7 @@ void SkARGB32_Shader_Blitter::blitMask(const SkMask& mask, const SkIRect& clip)
|
| int y = clip.fTop;
|
| int height = clip.height();
|
|
|
| - char* dstRow = (char*)fDevice.getAddr32(x, y);
|
| + char* dstRow = (char*)fDevice.writable_addr32(x, y);
|
| const size_t dstRB = fDevice.rowBytes();
|
| const uint8_t* maskRow = (const uint8_t*)mask.getAddr(x, y);
|
| const size_t maskRB = mask.fRowBytes;
|
| @@ -589,7 +589,7 @@ void SkARGB32_Shader_Blitter::blitMask(const SkMask& mask, const SkIRect& clip)
|
| void SkARGB32_Shader_Blitter::blitV(int x, int y, int height, SkAlpha alpha) {
|
| SkASSERT(x >= 0 && y >= 0 && y + height <= fDevice.height());
|
|
|
| - uint32_t* device = fDevice.getAddr32(x, y);
|
| + uint32_t* device = fDevice.writable_addr32(x, y);
|
| size_t deviceRB = fDevice.rowBytes();
|
| SkShader::Context* shaderContext = fShaderContext;
|
|
|
|
|