| Index: src/effects/SkColorFilters.cpp
|
| diff --git a/src/effects/SkColorFilters.cpp b/src/effects/SkColorFilters.cpp
|
| index 41a201ef39559fc232e10319c3a9e65f20c39c8c..da9db9a84f185b89925e555780ed71936d0a2f01 100644
|
| --- a/src/effects/SkColorFilters.cpp
|
| +++ b/src/effects/SkColorFilters.cpp
|
| @@ -13,6 +13,7 @@
|
| #include "SkFlattenableBuffers.h"
|
| #include "SkUtils.h"
|
| #include "SkString.h"
|
| +#include "SkValidationUtils.h"
|
|
|
| #define ILLEGAL_XFERMODE_MODE ((SkXfermode::Mode)-1)
|
|
|
| @@ -98,6 +99,7 @@ protected:
|
| fColor = buffer.readColor();
|
| fMode = (SkXfermode::Mode)buffer.readUInt();
|
| this->updateCache();
|
| + buffer.validate(SkIsValidMode(fMode));
|
| }
|
|
|
| private:
|
| @@ -534,6 +536,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_Type:
|
| + return SkLightingColorFilter::CreateProc;
|
| + case SkFlattenable::kSkLightingColorFilter_JustAdd_Type:
|
| + return SkLightingColorFilter_JustAdd::CreateProc;
|
| + case SkFlattenable::kSkLightingColorFilter_JustMul_Type:
|
| + return SkLightingColorFilter_JustMul::CreateProc;
|
| + case SkFlattenable::kSkLightingColorFilter_NoPin_Type:
|
| + return SkLightingColorFilter_NoPin::CreateProc;
|
| + case SkFlattenable::kSkLightingColorFilter_SingleMul_Type:
|
| + return SkLightingColorFilter_SingleMul::CreateProc;
|
| + case SkFlattenable::kSkModeColorFilter_Type:
|
| + return SkModeColorFilter::CreateProc;
|
| + case SkFlattenable::kSrc_SkModeColorFilter_Type:
|
| + return Src_SkModeColorFilter::CreateProc;
|
| + case SkFlattenable::kSrcOver_SkModeColorFilter_Type:
|
| + return SrcOver_SkModeColorFilter::CreateProc;
|
| + default:
|
| + break;
|
| + }
|
| + return NULL;
|
| +}
|
| +
|
| +SkFlattenable::TypeCheck SkColorFilter::GetTypeCheck(SkFlattenable::Type type) {
|
| + switch(type) {
|
| + case SkFlattenable::kSkLightingColorFilter_Type:
|
| + return SkLightingColorFilter::IsA;
|
| + case SkFlattenable::kSkLightingColorFilter_JustAdd_Type:
|
| + return SkLightingColorFilter_JustAdd::IsA;
|
| + case SkFlattenable::kSkLightingColorFilter_JustMul_Type:
|
| + return SkLightingColorFilter_JustMul::IsA;
|
| + case SkFlattenable::kSkLightingColorFilter_NoPin_Type:
|
| + return SkLightingColorFilter_NoPin::IsA;
|
| + case SkFlattenable::kSkLightingColorFilter_SingleMul_Type:
|
| + return SkLightingColorFilter_SingleMul::IsA;
|
| + case SkFlattenable::kSkModeColorFilter_Type:
|
| + return SkModeColorFilter::IsA;
|
| + case SkFlattenable::kSrc_SkModeColorFilter_Type:
|
| + return Src_SkModeColorFilter::IsA;
|
| + case SkFlattenable::kSrcOver_SkModeColorFilter_Type:
|
| + 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)
|
|
|