Index: src/core/SkBlitRow_D4444.cpp |
diff --git a/src/core/SkBlitRow_D4444.cpp b/src/core/SkBlitRow_D4444.cpp |
deleted file mode 100644 |
index 026d15637644841358b2b5110093c222f22c0ea1..0000000000000000000000000000000000000000 |
--- a/src/core/SkBlitRow_D4444.cpp |
+++ /dev/null |
@@ -1,218 +0,0 @@ |
-/* |
- * Copyright 2011 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#include "SkBlitRow.h" |
-#include "SkColorPriv.h" |
-#include "SkDither.h" |
- |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-static void S32_D4444_Opaque(uint16_t* SK_RESTRICT dst, |
- const SkPMColor* SK_RESTRICT src, int count, |
- U8CPU alpha, int /*x*/, int /*y*/) { |
- SkASSERT(255 == alpha); |
- |
- if (count > 0) { |
- do { |
- SkPMColor c = *src++; |
- SkPMColorAssert(c); |
- SkASSERT(SkGetPackedA32(c) == 255); |
- *dst++ = SkPixel32ToPixel4444(c); |
- } while (--count != 0); |
- } |
-} |
- |
-static void S32_D4444_Blend(uint16_t* SK_RESTRICT dst, |
- const SkPMColor* SK_RESTRICT src, int count, |
- U8CPU alpha, int /*x*/, int /*y*/) { |
- SkASSERT(255 > alpha); |
- |
- if (count > 0) { |
- unsigned scale16 = SkAlpha255To256(alpha) >> 4; |
- do { |
- SkPMColor c = *src++; |
- SkPMColorAssert(c); |
- SkASSERT(SkGetPackedA32(c) == 255); |
- |
- uint32_t src_expand = SkExpand32_4444(c); |
- uint32_t dst_expand = SkExpand_4444(*dst); |
- dst_expand += (src_expand - dst_expand) * scale16 >> 4; |
- *dst++ = SkCompact_4444(dst_expand); |
- } while (--count != 0); |
- } |
-} |
- |
-static void S32A_D4444_Opaque(uint16_t* SK_RESTRICT dst, |
- const SkPMColor* SK_RESTRICT src, int count, |
- U8CPU alpha, int /*x*/, int /*y*/) { |
- SkASSERT(255 == alpha); |
- |
- if (count > 0) { |
- do { |
- SkPMColor c = *src++; |
- SkPMColorAssert(c); |
-// if (__builtin_expect(c!=0, 1)) |
- if (c) |
- { |
- unsigned scale16 = SkAlpha255To256(255 - SkGetPackedA32(c)) >> 4; |
- uint32_t src_expand = SkExpand_8888(c); |
- uint32_t dst_expand = SkExpand_4444(*dst) * scale16; |
- *dst = SkCompact_4444((src_expand + dst_expand) >> 4); |
- } |
- dst += 1; |
- } while (--count != 0); |
- } |
-} |
- |
-static void S32A_D4444_Blend(uint16_t* SK_RESTRICT dst, |
- const SkPMColor* SK_RESTRICT src, int count, |
- U8CPU alpha, int /*x*/, int /*y*/) { |
- SkASSERT(255 > alpha); |
- |
- if (count > 0) { |
- int src_scale = SkAlpha255To256(alpha) >> 4; |
- do { |
- SkPMColor sc = *src++; |
- SkPMColorAssert(sc); |
- |
- if (sc) { |
- unsigned dst_scale = 16 - (SkGetPackedA32(sc) * src_scale >> 8); |
- uint32_t src_expand = SkExpand32_4444(sc) * src_scale; |
- uint32_t dst_expand = SkExpand_4444(*dst) * dst_scale; |
- *dst = SkCompact_4444((src_expand + dst_expand) >> 4); |
- } |
- dst += 1; |
- } while (--count != 0); |
- } |
-} |
- |
-///////////////////////////////////////////////////////////////////////////// |
- |
-static void S32_D4444_Opaque_Dither(uint16_t* SK_RESTRICT dst, |
- const SkPMColor* SK_RESTRICT src, |
- int count, U8CPU alpha, int x, int y) { |
- SkASSERT(255 == alpha); |
- |
- if (count > 0) { |
- DITHER_4444_SCAN(y); |
- do { |
- SkPMColor c = *src++; |
- SkPMColorAssert(c); |
- |
- unsigned dither = DITHER_VALUE(x); |
- *dst++ = SkDitherARGB32To4444(c, dither); |
- DITHER_INC_X(x); |
- } while (--count != 0); |
- } |
-} |
- |
-static void S32_D4444_Blend_Dither(uint16_t* SK_RESTRICT dst, |
- const SkPMColor* SK_RESTRICT src, |
- int count, U8CPU alpha, int x, int y) { |
- SkASSERT(255 > alpha); |
- |
- if (count > 0) { |
- int scale16 = SkAlpha255To256(alpha) >> 4; |
- DITHER_4444_SCAN(y); |
- do { |
- SkPMColor c = *src++; |
- SkPMColorAssert(c); |
- SkASSERT(SkGetPackedA32(c) == 255); |
- |
- uint32_t src_expand = SkExpand32_4444(c) * scale16; |
- uint32_t dst_expand = SkExpand_4444(*dst) * (16 - scale16); |
- |
- c = SkCompact_8888(src_expand + dst_expand); // convert back to SkPMColor |
- *dst++ = SkDitherARGB32To4444(c, DITHER_VALUE(x)); |
- DITHER_INC_X(x); |
- } while (--count != 0); |
- } |
-} |
- |
-static void S32A_D4444_Opaque_Dither(uint16_t* SK_RESTRICT dst, |
- const SkPMColor* SK_RESTRICT src, |
- int count, U8CPU alpha, int x, int y) { |
- SkASSERT(255 == alpha); |
- |
- if (count > 0) { |
- DITHER_4444_SCAN(y); |
- do { |
- SkPMColor c = *src++; |
- SkPMColorAssert(c); |
- if (c) { |
- unsigned a = SkGetPackedA32(c); |
- int d = SkAlphaMul(DITHER_VALUE(x), SkAlpha255To256(a)); |
- |
- unsigned scale16 = SkAlpha255To256(255 - a) >> 4; |
- uint32_t src_expand = SkExpand_8888(c); |
- uint32_t dst_expand = SkExpand_4444(*dst) * scale16; |
- // convert back to SkPMColor |
- c = SkCompact_8888(src_expand + dst_expand); |
- *dst = SkDitherARGB32To4444(c, d); |
- } |
- dst += 1; |
- DITHER_INC_X(x); |
- } while (--count != 0); |
- } |
-} |
- |
-// need DitherExpand888To4444(expand, dither) |
- |
-static void S32A_D4444_Blend_Dither(uint16_t* SK_RESTRICT dst, |
- const SkPMColor* SK_RESTRICT src, |
- int count, U8CPU alpha, int x, int y) { |
- SkASSERT(255 > alpha); |
- |
- if (count > 0) { |
- int src_scale = SkAlpha255To256(alpha) >> 4; |
- DITHER_4444_SCAN(y); |
- do { |
- SkPMColor c = *src++; |
- SkPMColorAssert(c); |
- if (c) { |
- unsigned a = SkAlpha255To256(SkGetPackedA32(c)); |
- int d = SkAlphaMul(DITHER_VALUE(x), a); |
- |
- unsigned dst_scale = 16 - SkAlphaMul(src_scale, a); |
- uint32_t src_expand = SkExpand32_4444(c) * src_scale; |
- uint32_t dst_expand = SkExpand_4444(*dst) * dst_scale; |
- // convert back to SkPMColor |
- c = SkCompact_8888(src_expand + dst_expand); |
- *dst = SkDitherARGB32To4444(c, d); |
- } |
- dst += 1; |
- DITHER_INC_X(x); |
- } while (--count != 0); |
- } |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-static const SkBlitRow::Proc gProcs4444[] = { |
- // no dither |
- S32_D4444_Opaque, |
- S32_D4444_Blend, |
- |
- S32A_D4444_Opaque, |
- S32A_D4444_Blend, |
- |
- // dither |
- S32_D4444_Opaque_Dither, |
- S32_D4444_Blend_Dither, |
- |
- S32A_D4444_Opaque_Dither, |
- S32A_D4444_Blend_Dither |
-}; |
- |
-SkBlitRow::Proc SkBlitRow_Factory_4444(unsigned flags); |
-SkBlitRow::Proc SkBlitRow_Factory_4444(unsigned flags) |
-{ |
- SkASSERT(flags < SK_ARRAY_COUNT(gProcs4444)); |
- |
- return gProcs4444[flags]; |
-} |