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
This commit is contained in:
reed 2014-08-21 10:53:34 -07:00 committed by Commit bot
parent a6cac4ce38
commit 7daaaa4425
2 changed files with 45 additions and 24 deletions

View File

@ -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));

View File

@ -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();