| Index: src/effects/SkColorFilters.cpp
|
| diff --git a/src/effects/SkColorFilters.cpp b/src/effects/SkColorFilters.cpp
|
| index 41a201ef39559fc232e10319c3a9e65f20c39c8c..ce22c3c33a27848a0d1d6a71d33fb9146e96a9aa 100644
|
| --- a/src/effects/SkColorFilters.cpp
|
| +++ b/src/effects/SkColorFilters.cpp
|
| @@ -13,11 +13,14 @@
|
| #include "SkFlattenableBuffers.h"
|
| #include "SkUtils.h"
|
| #include "SkString.h"
|
| +#include "SkValidationUtils.h"
|
|
|
| #define ILLEGAL_XFERMODE_MODE ((SkXfermode::Mode)-1)
|
|
|
| // baseclass for filters that store a color and mode
|
| class SkModeColorFilter : public SkColorFilter {
|
| + typedef SkColorFilter INHERITED;
|
| +
|
| public:
|
| SkModeColorFilter(SkColor color) {
|
| fColor = color;
|
| @@ -98,6 +101,7 @@ protected:
|
| fColor = buffer.readColor();
|
| fMode = (SkXfermode::Mode)buffer.readUInt();
|
| this->updateCache();
|
| + buffer.validate(SkIsValidMode(fMode));
|
| }
|
|
|
| private:
|
| @@ -113,11 +117,11 @@ private:
|
| fProc = SkXfermode::GetProc(fMode);
|
| fProc16 = SkXfermode::GetProc16(fMode, fColor);
|
| }
|
| -
|
| - typedef SkColorFilter INHERITED;
|
| };
|
|
|
| class Src_SkModeColorFilter : public SkModeColorFilter {
|
| + typedef SkModeColorFilter INHERITED;
|
| +
|
| public:
|
| Src_SkModeColorFilter(SkColor color) : INHERITED(color, SkXfermode::kSrc_Mode) {}
|
|
|
| @@ -145,12 +149,11 @@ public:
|
| protected:
|
| Src_SkModeColorFilter(SkFlattenableReadBuffer& buffer)
|
| : INHERITED(buffer) {}
|
| -
|
| -private:
|
| - typedef SkModeColorFilter INHERITED;
|
| };
|
|
|
| class SrcOver_SkModeColorFilter : public SkModeColorFilter {
|
| + typedef SkModeColorFilter INHERITED;
|
| +
|
| public:
|
| SrcOver_SkModeColorFilter(SkColor color)
|
| : INHERITED(color, SkXfermode::kSrcOver_Mode) {
|
| @@ -187,8 +190,6 @@ protected:
|
| private:
|
|
|
| SkBlitRow::ColorProc fColor32Proc;
|
| -
|
| - typedef SkModeColorFilter INHERITED;
|
| };
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -243,6 +244,8 @@ static inline unsigned pin(unsigned value, unsigned max) {
|
| }
|
|
|
| class SkLightingColorFilter : public SkColorFilter {
|
| + typedef SkColorFilter INHERITED;
|
| +
|
| public:
|
| SkLightingColorFilter(SkColor mul, SkColor add) : fMul(mul), fAdd(add) {}
|
|
|
| @@ -294,12 +297,11 @@ protected:
|
| }
|
|
|
| SkColor fMul, fAdd;
|
| -
|
| -private:
|
| - typedef SkColorFilter INHERITED;
|
| };
|
|
|
| class SkLightingColorFilter_JustAdd : public SkLightingColorFilter {
|
| + typedef SkLightingColorFilter INHERITED;
|
| +
|
| public:
|
| SkLightingColorFilter_JustAdd(SkColor mul, SkColor add)
|
| : INHERITED(mul, add) {}
|
| @@ -336,12 +338,11 @@ public:
|
| protected:
|
| SkLightingColorFilter_JustAdd(SkFlattenableReadBuffer& buffer)
|
| : INHERITED(buffer) {}
|
| -
|
| -private:
|
| - typedef SkLightingColorFilter INHERITED;
|
| };
|
|
|
| class SkLightingColorFilter_JustMul : public SkLightingColorFilter {
|
| + typedef SkLightingColorFilter INHERITED;
|
| +
|
| public:
|
| SkLightingColorFilter_JustMul(SkColor mul, SkColor add)
|
| : INHERITED(mul, add) {}
|
| @@ -377,12 +378,11 @@ public:
|
| protected:
|
| SkLightingColorFilter_JustMul(SkFlattenableReadBuffer& buffer)
|
| : INHERITED(buffer) {}
|
| -
|
| -private:
|
| - typedef SkLightingColorFilter INHERITED;
|
| };
|
|
|
| class SkLightingColorFilter_SingleMul : public SkLightingColorFilter {
|
| + typedef SkLightingColorFilter INHERITED;
|
| +
|
| public:
|
| SkLightingColorFilter_SingleMul(SkColor mul, SkColor add)
|
| : INHERITED(mul, add) {
|
| @@ -421,12 +421,11 @@ public:
|
| protected:
|
| SkLightingColorFilter_SingleMul(SkFlattenableReadBuffer& buffer)
|
| : INHERITED(buffer) {}
|
| -
|
| -private:
|
| - typedef SkLightingColorFilter INHERITED;
|
| };
|
|
|
| class SkLightingColorFilter_NoPin : public SkLightingColorFilter {
|
| + typedef SkLightingColorFilter INHERITED;
|
| +
|
| public:
|
| SkLightingColorFilter_NoPin(SkColor mul, SkColor add)
|
| : INHERITED(mul, add) {}
|
| @@ -469,9 +468,6 @@ public:
|
| protected:
|
| SkLightingColorFilter_NoPin(SkFlattenableReadBuffer& buffer)
|
| : INHERITED(buffer) {}
|
| -
|
| -private:
|
| - typedef SkLightingColorFilter INHERITED;
|
| };
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -534,6 +530,54 @@ SkColorFilter* SkColorFilter::CreateLightingFilter(SkColor mul, SkColor add) {
|
| return SkNEW_ARGS(SkLightingColorFilter, (mul, add));
|
| }
|
|
|
| +SkFlattenable::Factory SkColorFilter::GetFactory(SkFlattenable::Type type) {
|
| + switch(type) {
|
| + case SkFlattenable::kSkLightingColorFilter:
|
| + return SkLightingColorFilter::CreateProc;
|
| + case SkFlattenable::kSkLightingColorFilter_JustAdd:
|
| + return SkLightingColorFilter_JustAdd::CreateProc;
|
| + case SkFlattenable::kSkLightingColorFilter_JustMul:
|
| + return SkLightingColorFilter_JustMul::CreateProc;
|
| + case SkFlattenable::kSkLightingColorFilter_NoPin:
|
| + return SkLightingColorFilter_NoPin::CreateProc;
|
| + case SkFlattenable::kSkLightingColorFilter_SingleMul:
|
| + return SkLightingColorFilter_SingleMul::CreateProc;
|
| + case SkFlattenable::kSkModeColorFilter:
|
| + return SkModeColorFilter::CreateProc;
|
| + case SkFlattenable::kSrc_SkModeColorFilter:
|
| + return Src_SkModeColorFilter::CreateProc;
|
| + case SkFlattenable::kSrcOver_SkModeColorFilter:
|
| + return SrcOver_SkModeColorFilter::CreateProc;
|
| + default:
|
| + break;
|
| + }
|
| + return NULL;
|
| +}
|
| +
|
| +SkFlattenable::TypeCheck SkColorFilter::GetTypeCheck(SkFlattenable::Type type) {
|
| + switch(type) {
|
| + case SkFlattenable::kSkLightingColorFilter:
|
| + return SkLightingColorFilter::IsA;
|
| + case SkFlattenable::kSkLightingColorFilter_JustAdd:
|
| + return SkLightingColorFilter_JustAdd::IsA;
|
| + case SkFlattenable::kSkLightingColorFilter_JustMul:
|
| + return SkLightingColorFilter_JustMul::IsA;
|
| + case SkFlattenable::kSkLightingColorFilter_NoPin:
|
| + return SkLightingColorFilter_NoPin::IsA;
|
| + case SkFlattenable::kSkLightingColorFilter_SingleMul:
|
| + return SkLightingColorFilter_SingleMul::IsA;
|
| + case SkFlattenable::kSkModeColorFilter:
|
| + return SkModeColorFilter::IsA;
|
| + case SkFlattenable::kSrc_SkModeColorFilter:
|
| + return Src_SkModeColorFilter::IsA;
|
| + case SkFlattenable::kSrcOver_SkModeColorFilter:
|
| + return SrcOver_SkModeColorFilter::IsA;
|
| + default:
|
| + break;
|
| + }
|
| + return NULL;
|
| +}
|
| +
|
| SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkColorFilter)
|
| SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkModeColorFilter)
|
| SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(Src_SkModeColorFilter)
|
|
|