diff options
Diffstat (limited to 'src/effects/SkColorFilters.cpp')
-rw-r--r-- | src/effects/SkColorFilters.cpp | 47 |
1 files changed, 15 insertions, 32 deletions
diff --git a/src/effects/SkColorFilters.cpp b/src/effects/SkColorFilters.cpp index 43df5e96a0..bcaabf6c9b 100644 --- a/src/effects/SkColorFilters.cpp +++ b/src/effects/SkColorFilters.cpp @@ -15,17 +15,9 @@ #include "SkValidationUtils.h" #include "SkColorMatrixFilter.h" -#define ILLEGAL_XFERMODE_MODE ((SkXfermode::Mode)-1) - // baseclass for filters that store a color and mode class SkModeColorFilter : public SkColorFilter { public: - SkModeColorFilter(SkColor color) { - fColor = color; - fMode = ILLEGAL_XFERMODE_MODE; - this->updateCache(); - } - SkModeColorFilter(SkColor color, SkXfermode::Mode mode) { fColor = color; fMode = mode; @@ -34,14 +26,9 @@ public: SkColor getColor() const { return fColor; } SkXfermode::Mode getMode() const { return fMode; } - bool isModeValid() const { return ILLEGAL_XFERMODE_MODE != fMode; } SkPMColor getPMColor() const { return fPMColor; } virtual bool asColorMode(SkColor* color, SkXfermode::Mode* mode) const SK_OVERRIDE { - if (ILLEGAL_XFERMODE_MODE == fMode) { - return false; - } - if (color) { *color = fColor; } @@ -93,11 +80,11 @@ public: protected: virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE { - this->INHERITED::flatten(buffer); buffer.writeColor(fColor); buffer.writeUInt(fMode); } +#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING SkModeColorFilter(SkReadBuffer& buffer) { fColor = buffer.readColor(); fMode = (SkXfermode::Mode)buffer.readUInt(); @@ -106,6 +93,7 @@ protected: buffer.validate(SkIsValidMode(fMode)); } } +#endif private: SkColor fColor; @@ -121,9 +109,17 @@ private: fProc16 = SkXfermode::GetProc16(fMode, fColor); } + friend class SkColorFilter; + typedef SkColorFilter INHERITED; }; +SkFlattenable* SkModeColorFilter::CreateProc(SkReadBuffer& buffer) { + SkColor color = buffer.readColor(); + SkXfermode::Mode mode = (SkXfermode::Mode)buffer.readUInt(); + return SkColorFilter::CreateModeFilter(color, mode); +} + /////////////////////////////////////////////////////////////////////////////// #if SK_SUPPORT_GPU #include "GrBlend.h" @@ -443,12 +439,6 @@ public: sk_memset16(result, SkPixel32ToPixel16(this->getPMColor()), count); } - SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Src_SkModeColorFilter) - -protected: - Src_SkModeColorFilter(SkReadBuffer& buffer) - : INHERITED(buffer) {} - private: typedef SkModeColorFilter INHERITED; }; @@ -479,14 +469,6 @@ public: sk_memset16(result, SkPixel32ToPixel16(this->getPMColor()), count); } - SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SrcOver_SkModeColorFilter) - -protected: - SrcOver_SkModeColorFilter(SkReadBuffer& buffer) - : INHERITED(buffer) { - fColor32Proc = SkBlitRow::ColorProcFactory(); - } - private: SkBlitRow::ColorProc fColor32Proc; @@ -496,8 +478,11 @@ private: /////////////////////////////////////////////////////////////////////////////// -SkColorFilter* SkColorFilter::CreateModeFilter(SkColor color, - SkXfermode::Mode mode) { +SkColorFilter* SkColorFilter::CreateModeFilter(SkColor color, SkXfermode::Mode mode) { + if (!SkIsValidMode(mode)) { + return NULL; + } + unsigned alpha = SkColorGetA(color); // first collaps some modes if possible @@ -562,6 +547,4 @@ SkColorFilter* SkColorFilter::CreateLightingFilter(SkColor mul, SkColor add) { SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkColorFilter) SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkModeColorFilter) - SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(Src_SkModeColorFilter) - SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SrcOver_SkModeColorFilter) SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |