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

Unified Diff: src/effects/SkColorFilters.cpp

Issue 23021015: Initial error handling code (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: New serialization method Created 7 years, 3 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..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)

Powered by Google App Engine
This is Rietveld 408576698