diff options
author | 2015-03-24 03:50:22 -0700 | |
---|---|---|
committer | 2015-03-24 03:50:22 -0700 | |
commit | 2151353d161fe389cdc0db62cfe1932c7680f710 (patch) | |
tree | e7973cf40e3f6f6d7cdd9ba0bf65357ac7ba218c /src/effects | |
parent | 8d1a97e0448044270a7c6b50d78e68162bcf85cc (diff) |
remove colorfilter native-565 support. complicating w/ no real value.
BUG=skia:
TBR=
Review URL: https://codereview.chromium.org/1015533011
Diffstat (limited to 'src/effects')
-rw-r--r-- | src/effects/SkColorFilters.cpp | 54 | ||||
-rw-r--r-- | src/effects/SkColorMatrixFilter.cpp | 39 |
2 files changed, 11 insertions, 82 deletions
diff --git a/src/effects/SkColorFilters.cpp b/src/effects/SkColorFilters.cpp index 8bcd0ebc5d..8c021e452b 100644 --- a/src/effects/SkColorFilters.cpp +++ b/src/effects/SkColorFilters.cpp @@ -27,7 +27,14 @@ bool SkModeColorFilter::asColorMode(SkColor* color, SkXfermode::Mode* mode) cons } uint32_t SkModeColorFilter::getFlags() const { - return fProc16 ? (kAlphaUnchanged_Flag | kHasFilter16_Flag) : 0; + switch (fMode) { + case SkXfermode::kDst_Mode: //!< [Da, Dc] + case SkXfermode::kSrcATop_Mode: //!< [Da, Sc * Da + (1 - Sa) * Dc] + return kAlphaUnchanged_Flag; + default: + break; + } + return 0; } void SkModeColorFilter::filterSpan(const SkPMColor shader[], int count, SkPMColor result[]) const { @@ -39,16 +46,6 @@ void SkModeColorFilter::filterSpan(const SkPMColor shader[], int count, SkPMColo } } -void SkModeColorFilter::filterSpan16(const uint16_t shader[], int count, uint16_t result[]) const { - SkASSERT(this->getFlags() & kHasFilter16_Flag); - - SkPMColor color = fPMColor; - SkXfermodeProc16 proc16 = fProc16; - - for (int i = 0; i < count; i++) { - result[i] = proc16(color, shader[i]); - } -} void SkModeColorFilter::flatten(SkWriteBuffer& buffer) const { buffer.writeColor(fColor); buffer.writeUInt(fMode); @@ -57,7 +54,6 @@ void SkModeColorFilter::flatten(SkWriteBuffer& buffer) const { void SkModeColorFilter::updateCache() { fPMColor = SkPreMultiplyColor(fColor); fProc = SkXfermode::GetProc(fMode); - fProc16 = SkXfermode::GetProc16(fMode, fColor); } SkFlattenable* SkModeColorFilter::CreateProc(SkReadBuffer& buffer) { @@ -388,25 +384,10 @@ class Src_SkModeColorFilter : public SkModeColorFilter { public: Src_SkModeColorFilter(SkColor color) : INHERITED(color, SkXfermode::kSrc_Mode) {} - uint32_t getFlags() const SK_OVERRIDE { - if (SkGetPackedA32(this->getPMColor()) == 0xFF) { - return kAlphaUnchanged_Flag | kHasFilter16_Flag; - } else { - return 0; - } - } - - virtual void filterSpan(const SkPMColor shader[], int count, - SkPMColor result[]) const SK_OVERRIDE { + void filterSpan(const SkPMColor shader[], int count, SkPMColor result[]) const SK_OVERRIDE { sk_memset32(result, this->getPMColor(), count); } - virtual void filterSpan16(const uint16_t shader[], int count, - uint16_t result[]) const SK_OVERRIDE { - SkASSERT(this->getFlags() & kHasFilter16_Flag); - sk_memset16(result, SkPixel32ToPixel16(this->getPMColor()), count); - } - private: typedef SkModeColorFilter INHERITED; }; @@ -418,25 +399,10 @@ public: fColor32Proc = SkBlitRow::ColorProcFactory(); } - uint32_t getFlags() const SK_OVERRIDE { - if (SkGetPackedA32(this->getPMColor()) == 0xFF) { - return kAlphaUnchanged_Flag | kHasFilter16_Flag; - } else { - return 0; - } - } - - virtual void filterSpan(const SkPMColor shader[], int count, - SkPMColor result[]) const SK_OVERRIDE { + void filterSpan(const SkPMColor shader[], int count, SkPMColor result[]) const SK_OVERRIDE { fColor32Proc(result, shader, count, this->getPMColor()); } - virtual void filterSpan16(const uint16_t shader[], int count, - uint16_t result[]) const SK_OVERRIDE { - SkASSERT(this->getFlags() & kHasFilter16_Flag); - sk_memset16(result, SkPixel32ToPixel16(this->getPMColor()), count); - } - private: SkBlitRow::ColorProc fColor32Proc; diff --git a/src/effects/SkColorMatrixFilter.cpp b/src/effects/SkColorMatrixFilter.cpp index bb3b6dda78..9cd904fd63 100644 --- a/src/effects/SkColorMatrixFilter.cpp +++ b/src/effects/SkColorMatrixFilter.cpp @@ -117,9 +117,6 @@ static void Add16(const SkColorMatrixFilter::State& state, result[3] = a; } -#define kNO_ALPHA_FLAGS (SkColorFilter::kAlphaUnchanged_Flag | \ - SkColorFilter::kHasFilter16_Flag) - // src is [20] but some compilers won't accept __restrict__ on anything // but an raw pointer or reference void SkColorMatrixFilter::initState(const SkScalar* SK_RESTRICT src) { @@ -159,7 +156,7 @@ void SkColorMatrixFilter::initState(const SkScalar* SK_RESTRICT src) { fProc = shiftIs16 ? General16 : General; fFlags = changesAlpha ? 0 : SkColorFilter::kAlphaUnchanged_Flag; } else { - fFlags = kNO_ALPHA_FLAGS; + fFlags = SkColorFilter::kAlphaUnchanged_Flag; int32_t needsScale = (array[SkColorMatrix::kR_Scale] - one) | (array[SkColorMatrix::kG_Scale] - one) | @@ -266,40 +263,6 @@ void SkColorMatrixFilter::filterSpan(const SkPMColor src[], int count, } } -void SkColorMatrixFilter::filterSpan16(const uint16_t src[], int count, - uint16_t dst[]) const { - SkASSERT(fFlags & SkColorFilter::kHasFilter16_Flag); - - Proc proc = fProc; - const State& state = fState; - int32_t result[4]; - - if (NULL == proc) { - if (src != dst) { - memcpy(dst, src, count * sizeof(uint16_t)); - } - return; - } - - for (int i = 0; i < count; i++) { - uint16_t c = src[i]; - - // expand to 8bit components (since our matrix translate is 8bit biased - unsigned r = SkPacked16ToR32(c); - unsigned g = SkPacked16ToG32(c); - unsigned b = SkPacked16ToB32(c); - - proc(state, r, g, b, 0, result); - - r = pin(result[0], SK_R32_MASK); - g = pin(result[1], SK_G32_MASK); - b = pin(result[2], SK_B32_MASK); - - // now packed it back down to 16bits (hmmm, could dither...) - dst[i] = SkPack888ToRGB16(r, g, b); - } -} - /////////////////////////////////////////////////////////////////////////////// void SkColorMatrixFilter::flatten(SkWriteBuffer& buffer) const { |