From 7daaaa4425ea083df437eea95ba6b38315ce98ad Mon Sep 17 00:00:00 2001 From: reed Date: Thu, 21 Aug 2014 10:53:34 -0700 Subject: 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 --- gm/imagefiltersbase.cpp | 46 ++++++++++++++++++++++++++++++---------------- gm/imagefiltersgraph.cpp | 23 +++++++++++++++-------- 2 files changed, 45 insertions(+), 24 deletions(-) (limited to 'gm') diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp index 5472f2d98a..d1bd5a72df 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 @@ public: 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 @@ private: 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 @@ SkFlattenable* FailImageFilter::CreateProc(SkReadBuffer& buffer) { 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 @@ private: typedef SkImageFilter INHERITED; }; +static IdentityImageFilter::Registrar gReg1; + SkFlattenable* IdentityImageFilter::CreateProc(SkReadBuffer& buffer) { SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); return IdentityImageFilter::Create(common.getInput(0)); diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp index bd6af3ff20..37ed885dd7 100644 --- a/gm/imagefiltersgraph.cpp +++ b/gm/imagefiltersgraph.cpp @@ -25,6 +25,18 @@ // perform a draw and this one does. class SimpleOffsetFilter : public SkImageFilter { public: + class Registrar { + public: + Registrar() { + SkFlattenable::Register("SimpleOffsetFilter", +#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING + SimpleOffsetFilter::DeepCreateProc, +#else + SimpleOffsetFilter::CreateProc, +#endif + SimpleOffsetFilter::GetFlattenableType()); + } + }; static SkImageFilter* Create(SkScalar dx, SkScalar dy, SkImageFilter* input) { return SkNEW_ARGS(SimpleOffsetFilter, (dx, dy, input)); } @@ -73,20 +85,15 @@ protected: private: SimpleOffsetFilter(SkScalar dx, SkScalar dy, SkImageFilter* input) - : SkImageFilter(1, &input), fDX(dx), fDY(dy) { - static bool gOnce; - if (!gOnce) { - gOnce = true; - SkFlattenable::Register("SimpleOffsetFilter", this->getFactory(), - this->GetFlattenableType()); - } - } + : SkImageFilter(1, &input), fDX(dx), fDY(dy) {} SkScalar fDX, fDY; typedef SkImageFilter INHERITED; }; +static SimpleOffsetFilter::Registrar gReg; + SkFlattenable* SimpleOffsetFilter::CreateProc(SkReadBuffer& buffer) { SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); SkScalar dx = buffer.readScalar(); -- cgit v1.2.3