diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-10-18 17:29:44 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-10-18 17:29:44 +0000 |
commit | f52e55543e8e34a9fc9dd6f6f2d0e14e25d97ba5 (patch) | |
tree | 51f136c4dec07156ebc372762df4c8db97b14562 /src/core/SkBlitMask_D32.cpp | |
parent | 7989186dab6bc2f1c1927daf91bddd32b7fd8d0c (diff) |
(re)add SkMask::getAddr() which now checks its pixel-size at runtime.
git-svn-id: http://skia.googlecode.com/svn/trunk@2488 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkBlitMask_D32.cpp')
-rw-r--r-- | src/core/SkBlitMask_D32.cpp | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/src/core/SkBlitMask_D32.cpp b/src/core/SkBlitMask_D32.cpp index 7fe3153ea6..d68d44302e 100644 --- a/src/core/SkBlitMask_D32.cpp +++ b/src/core/SkBlitMask_D32.cpp @@ -345,38 +345,13 @@ SkBlitMask::Proc SkBlitMask::Factory(SkBitmap::Config config, return NULL; } -static const int gMaskFormatToShift[] = { - ~0, // BW - 0, // A8 - 0, // 3D - 2, // ARGB32 - 1, // LCD16 - 2 // LCD32 -}; - -static int maskFormatToShift(SkMask::Format format) { - SkASSERT((unsigned)format < SK_ARRAY_COUNT(gMaskFormatToShift)); - SkASSERT(SkMask::kBW_Format != format); - return gMaskFormatToShift[format]; -} - -static const void* getAddr(const SkMask& mask, int x, int y) { - SkASSERT(mask.fBounds.contains(x, y)); - SkASSERT(mask.fImage); - - const char* addr = (const char*)mask.fImage; - addr += (y - mask.fBounds.fTop) * mask.fRowBytes; - addr += (x - mask.fBounds.fLeft) << maskFormatToShift(mask.fFormat); - return addr; -} - bool SkBlitMask::BlitColor(const SkBitmap& device, const SkMask& mask, const SkIRect& clip, SkColor color) { Proc proc = Factory(device.config(), mask.fFormat, color); if (proc) { int x = clip.fLeft; int y = clip.fTop; - proc(device.getAddr32(x, y), device.rowBytes(), getAddr(mask, x, y), + proc(device.getAddr32(x, y), device.rowBytes(), mask.getAddr(x, y), mask.fRowBytes, color, clip.width(), clip.height()); return true; } |