Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(602)

Unified Diff: src/effects/SkColorFilters.cpp

Issue 23021015: Initial error handling code (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Minor comment fixes Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698