clean up flattenable macro cruft
I'm finding it easier to reason about the code without most of these
macros, but SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY still looks useful.
Adding flattenable:: to CreateProc helps enforce that we pass the
correct type name. The name is not currently used, but I'd like to.
Change-Id: I87c77eb6020fb3ae4696d8f73d09de62fd814875
Reviewed-on: https://skia-review.googlesource.com/c/163840
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
diff --git a/src/shaders/SkColorShader.h b/src/shaders/SkColorShader.h
index e8625c0..1b29044 100644
--- a/src/shaders/SkColorShader.h
+++ b/src/shaders/SkColorShader.h
@@ -107,7 +107,7 @@
std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorShader)
+ SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColor4Shader)
protected:
SkColor4Shader(SkReadBuffer&);
diff --git a/src/shaders/SkImageShader.cpp b/src/shaders/SkImageShader.cpp
index 670b668..c200889 100644
--- a/src/shaders/SkImageShader.cpp
+++ b/src/shaders/SkImageShader.cpp
@@ -242,9 +242,9 @@
tmx, tmy, localMatrix);
}
-SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkShaderBase)
-SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkImageShader)
-SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
+void SkShaderBase::InitializeFlattenables() {
+ SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkImageShader)
+}
bool SkImageShader::onAppendStages(const StageRec& rec) const {
SkRasterPipeline* p = rec.fPipeline;
diff --git a/src/shaders/SkLightingShader.cpp b/src/shaders/SkLightingShader.cpp
index f3019cd..73e40bb 100644
--- a/src/shaders/SkLightingShader.cpp
+++ b/src/shaders/SkLightingShader.cpp
@@ -496,8 +496,6 @@
///////////////////////////////////////////////////////////////////////////////
-SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingShader)
+void SkLightingShader::InitializeFlattenables() {
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingShaderImpl)
-SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
-
-///////////////////////////////////////////////////////////////////////////////
+}
diff --git a/src/shaders/SkLightingShader.h b/src/shaders/SkLightingShader.h
index 62c881c..f7e63b2 100644
--- a/src/shaders/SkLightingShader.h
+++ b/src/shaders/SkLightingShader.h
@@ -34,7 +34,7 @@
static sk_sp<SkShader> Make(sk_sp<SkShader> diffuseShader, sk_sp<SkNormalSource> normalSource,
sk_sp<SkLights> lights);
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
+ static void InitializeFlattenables();
};
#endif
diff --git a/src/shaders/SkPerlinNoiseShader.cpp b/src/shaders/SkPerlinNoiseShader.cpp
index a5e9381..357df0a 100644
--- a/src/shaders/SkPerlinNoiseShader.cpp
+++ b/src/shaders/SkPerlinNoiseShader.cpp
@@ -1537,6 +1537,6 @@
nullptr));
}
-SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkPerlinNoiseShader)
+void SkPerlinNoiseShader::InitializeFlattenables() {
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPerlinNoiseShaderImpl)
-SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
+}
diff --git a/src/shaders/SkShaderBase.h b/src/shaders/SkShaderBase.h
index 23e5ff4..b607cc8 100644
--- a/src/shaders/SkShaderBase.h
+++ b/src/shaders/SkShaderBase.h
@@ -197,8 +197,15 @@
return nullptr;
}
- SK_DEFINE_FLATTENABLE_TYPE(SkShaderBase)
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
+ static Type GetFlattenableType() { return kSkShaderBase_Type; }
+ Type getFlattenableType() const override { return GetFlattenableType(); }
+
+ static sk_sp<SkShaderBase> Deserialize(const void* data, size_t size,
+ const SkDeserialProcs* procs = nullptr) {
+ return sk_sp<SkShaderBase>(static_cast<SkShaderBase*>(
+ SkFlattenable::Deserialize(GetFlattenableType(), data, size, procs).release()));
+ }
+ static void InitializeFlattenables();
protected:
SkShaderBase(const SkMatrix* localMatrix = nullptr);
diff --git a/src/shaders/gradients/SkGradientShader.cpp b/src/shaders/gradients/SkGradientShader.cpp
index e5801de..9d00708 100644
--- a/src/shaders/gradients/SkGradientShader.cpp
+++ b/src/shaders/gradients/SkGradientShader.cpp
@@ -776,9 +776,9 @@
return sk_make_sp<SkSweepGradient>(SkPoint::Make(cx, cy), t0, t1, desc);
}
-SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkGradientShader)
+void SkGradientShader::InitializeFlattenables() {
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLinearGradient)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRadialGradient)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSweepGradient)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTwoPointConicalGradient)
-SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
+}