use globals to register custom effects
NOTREECHECKS=True
NOTRY=True
R=mtklein@google.com, caryclark@google.com, bungeman@google.com
Author: reed@google.com
Review URL: https://codereview.chromium.org/498453003
diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp
index 5472f2d..d1bd5a7 100644
--- a/gm/imagefiltersbase.cpp
+++ b/gm/imagefiltersbase.cpp
@@ -18,6 +18,18 @@
class FailImageFilter : public SkImageFilter {
public:
+ class Registrar {
+ public:
+ Registrar() {
+ SkFlattenable::Register("FailImageFilter",
+#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
+ FailImageFilter::DeepCreateProc,
+#else
+ FailImageFilter::CreateProc,
+#endif
+ FailImageFilter::GetFlattenableType());
+ }
+ };
static FailImageFilter* Create() {
return SkNEW(FailImageFilter);
}
@@ -25,14 +37,7 @@
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(FailImageFilter)
protected:
- FailImageFilter() : INHERITED(0, NULL) {
- static bool gOnce;
- if (!gOnce) {
- gOnce = true;
- SkFlattenable::Register("FailImageFilter", this->getFactory(),
- this->GetFlattenableType());
- }
- }
+ FailImageFilter() : INHERITED(0, NULL) {}
virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE {
@@ -47,6 +52,8 @@
typedef SkImageFilter INHERITED;
};
+static FailImageFilter::Registrar gReg0;
+
SkFlattenable* FailImageFilter::CreateProc(SkReadBuffer& buffer) {
SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 0);
return FailImageFilter::Create();
@@ -54,20 +61,25 @@
class IdentityImageFilter : public SkImageFilter {
public:
+ class Registrar {
+ public:
+ Registrar() {
+ SkFlattenable::Register("IdentityImageFilter",
+#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
+ IdentityImageFilter::DeepCreateProc,
+#else
+ IdentityImageFilter::CreateProc,
+#endif
+ IdentityImageFilter::GetFlattenableType());
+ }
+ };
static IdentityImageFilter* Create(SkImageFilter* input = NULL) {
return SkNEW_ARGS(IdentityImageFilter, (input));
}
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(IdentityImageFilter)
protected:
- IdentityImageFilter(SkImageFilter* input) : INHERITED(1, &input) {
- static bool gOnce;
- if (!gOnce) {
- gOnce = true;
- SkFlattenable::Register("IdentityImageFilter", this->getFactory(),
- this->GetFlattenableType());
- }
- }
+ IdentityImageFilter(SkImageFilter* input) : INHERITED(1, &input) {}
virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE {
@@ -84,6 +96,8 @@
typedef SkImageFilter INHERITED;
};
+static IdentityImageFilter::Registrar gReg1;
+
SkFlattenable* IdentityImageFilter::CreateProc(SkReadBuffer& buffer) {
SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1);
return IdentityImageFilter::Create(common.getInput(0));