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

Unified Diff: src/effects/SkColorFilters.cpp

Issue 395603002: Simplify flattening to just write enough to call the factory (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 6 years, 4 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
« no previous file with comments | « src/effects/SkColorFilterImageFilter.cpp ('k') | src/effects/SkColorMatrixFilter.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/effects/SkColorFilters.cpp
diff --git a/src/effects/SkColorFilters.cpp b/src/effects/SkColorFilters.cpp
index 43df5e96a0b02a00331efe48c80995dafb2e5485..bcaabf6c9bbf51105d26e0f1ccb231e7d75c659c 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
« no previous file with comments | « src/effects/SkColorFilterImageFilter.cpp ('k') | src/effects/SkColorMatrixFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698