aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Cary Clark <caryclark@skia.org>2018-05-21 11:56:57 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-21 17:33:39 +0000
commit4dc5a454052e64227ecbfadd903f590d9361be08 (patch)
tree7d22319f9e739fdc12490ad124d3e19bed5bb2bd
parent435282162ed6f69f86f8ec2c83ea9b4439a7a7d4 (diff)
remove defines and add commas
Preparation for generating bookmaker files for all remaining interfaces Standardize enum and enum classes by including a comma after the last entry. Replace flatten-related #define in public interfaces with their equivalent. The motivation is to give documentation something to refer to. An alternative would be to move part or all of this out of the public interface; something I can work on in a follow-up CL. R=reed@google.com,bsalomon@google.com Bug: skia:6898 Change-Id: I4b865f6ec3d8f5d31e50448fef7d2714510302f0 Reviewed-on: https://skia-review.googlesource.com/129312 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Cary Clark <caryclark@skia.org>
-rw-r--r--gm/imagefiltersbase.cpp1
-rw-r--r--include/core/SkBlendMode.h2
-rw-r--r--include/core/SkBlurTypes.h2
-rw-r--r--include/core/SkColorFilter.h18
-rw-r--r--include/core/SkColorSpace.h12
-rw-r--r--include/core/SkCoverageMode.h2
-rw-r--r--include/core/SkDeque.h2
-rw-r--r--include/core/SkDrawLooper.h16
-rw-r--r--include/core/SkDrawable.h16
-rw-r--r--include/core/SkFilterQuality.h2
-rw-r--r--include/core/SkFlattenable.h55
-rw-r--r--include/core/SkFontLCDConfig.h4
-rw-r--r--include/core/SkImageFilter.h19
-rw-r--r--include/core/SkMaskFilter.h16
-rw-r--r--include/core/SkPathEffect.h20
-rw-r--r--include/effects/Sk1DPathEffect.h7
-rw-r--r--include/effects/Sk2DPathEffect.h13
-rw-r--r--include/effects/SkAlphaThresholdFilter.h2
-rw-r--r--include/effects/SkArithmeticImageFilter.h2
-rw-r--r--include/effects/SkColorFilterImageFilter.h6
-rw-r--r--include/effects/SkComposeImageFilter.h7
-rw-r--r--include/effects/SkCornerPathEffect.h6
-rw-r--r--include/effects/SkDiscretePathEffect.h7
-rw-r--r--include/effects/SkDisplacementMapEffect.h7
-rw-r--r--include/effects/SkDropShadowImageFilter.h6
-rw-r--r--include/effects/SkGradientShader.h2
-rw-r--r--include/effects/SkHighContrastFilter.h3
-rw-r--r--include/effects/SkImageSource.h6
-rw-r--r--include/effects/SkLightingImageFilter.h2
-rw-r--r--include/effects/SkLumaColorFilter.h8
-rw-r--r--include/effects/SkMagnifierImageFilter.h6
-rw-r--r--include/effects/SkMatrixConvolutionImageFilter.h7
-rw-r--r--include/effects/SkMergeImageFilter.h6
-rw-r--r--include/effects/SkMorphologyImageFilter.h11
-rw-r--r--include/effects/SkOffsetImageFilter.h6
-rw-r--r--include/effects/SkOverdrawColorFilter.h2
-rw-r--r--include/effects/SkPaintImageFilter.h6
-rw-r--r--include/effects/SkPerlinNoiseShader.h2
-rw-r--r--include/effects/SkPictureImageFilter.h6
-rw-r--r--include/effects/SkTableColorFilter.h2
-rw-r--r--include/effects/SkTileImageFilter.h6
-rw-r--r--include/effects/SkToSRGBColorFilter.h6
-rw-r--r--include/effects/SkXfermodeImageFilter.h2
-rw-r--r--src/core/SkColorMatrixFilterRowMajor255.h5
-rw-r--r--src/core/SkFlattenablePriv.h69
-rw-r--r--src/core/SkGlobalInitialization_core.cpp2
-rw-r--r--src/core/SkLocalMatrixImageFilter.h6
-rw-r--r--src/core/SkMatrixImageFilter.h7
-rw-r--r--src/core/SkModeColorFilter.h7
-rw-r--r--src/effects/SkColorFilterImageFilter.cpp1
-rw-r--r--src/effects/SkDashImpl.h6
-rw-r--r--src/effects/SkDashPathEffect.cpp1
-rw-r--r--src/effects/SkDisplacementMapEffect.cpp1
-rw-r--r--src/effects/SkDropShadowImageFilter.cpp1
-rw-r--r--src/effects/SkEmbossMaskFilter.h1
-rw-r--r--src/effects/SkLightingImageFilter.cpp1
-rw-r--r--src/effects/SkMagnifierImageFilter.cpp1
-rw-r--r--src/effects/SkMatrixConvolutionImageFilter.cpp1
-rw-r--r--src/effects/SkMergeImageFilter.cpp1
-rw-r--r--src/effects/SkMorphologyImageFilter.cpp1
-rw-r--r--src/effects/SkOffsetImageFilter.cpp1
-rw-r--r--src/effects/SkPictureImageFilter.cpp1
-rw-r--r--src/effects/SkTileImageFilter.cpp1
-rw-r--r--src/effects/SkTrimPE.h1
-rw-r--r--src/effects/SkXfermodeImageFilter.cpp1
-rw-r--r--src/shaders/SkShaderBase.h1
-rw-r--r--src/shaders/gradients/SkGradientShader.cpp1
-rw-r--r--src/utils/SkShadowUtils.cpp1
-rw-r--r--tests/CanvasTest.cpp2
-rw-r--r--tests/QuickRejectTest.cpp1
-rw-r--r--tools/bookmaker/bookmaker.h1
-rw-r--r--tools/bookmaker/includeParser.cpp1
-rw-r--r--tools/bookmaker/includeWriter.cpp2
-rw-r--r--tools/bookmaker/parserCommon.cpp7
74 files changed, 359 insertions, 114 deletions
diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp
index 5432dee2a1..fc550fb8bc 100644
--- a/gm/imagefiltersbase.cpp
+++ b/gm/imagefiltersbase.cpp
@@ -10,6 +10,7 @@
#include "SkCanvas.h"
#include "SkColorFilter.h"
#include "SkColorPriv.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilterPriv.h"
#include "SkShader.h"
diff --git a/include/core/SkBlendMode.h b/include/core/SkBlendMode.h
index 3f8f30c510..71378b9cb3 100644
--- a/include/core/SkBlendMode.h
+++ b/include/core/SkBlendMode.h
@@ -47,7 +47,7 @@ enum class SkBlendMode {
kSaturation,
kColor,
kLuminosity,
- kLastMode = kLuminosity
+ kLastMode = kLuminosity,
};
/**
diff --git a/include/core/SkBlurTypes.h b/include/core/SkBlurTypes.h
index 1272643330..490beafc0c 100644
--- a/include/core/SkBlurTypes.h
+++ b/include/core/SkBlurTypes.h
@@ -16,7 +16,7 @@ enum SkBlurStyle {
kOuter_SkBlurStyle, //!< nothing inside, fuzzy outside
kInner_SkBlurStyle, //!< fuzzy inside, nothing outside
- kLastEnum_SkBlurStyle = kInner_SkBlurStyle
+ kLastEnum_SkBlurStyle = kInner_SkBlurStyle,
};
#endif
diff --git a/include/core/SkColorFilter.h b/include/core/SkColorFilter.h
index e8b09bae9c..8d86ce20cb 100644
--- a/include/core/SkColorFilter.h
+++ b/include/core/SkColorFilter.h
@@ -140,8 +140,22 @@ public:
virtual void toString(SkString* str) const = 0;
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
- SK_DEFINE_FLATTENABLE_TYPE(SkColorFilter)
+ static void InitializeFlattenables();
+
+ static SkFlattenable::Type GetFlattenableType() {
+ return kSkColorFilter_Type;
+ }
+
+ SkFlattenable::Type getFlattenableType() const override {
+ return kSkColorFilter_Type;
+ }
+
+ static sk_sp<SkColorFilter> Deserialize(const void* data, size_t size,
+ const SkDeserialProcs* procs = nullptr) {
+ return sk_sp<SkColorFilter>(static_cast<SkColorFilter*>(
+ SkFlattenable::Deserialize(
+ kSkColorFilter_Type, data, size, procs).release()));
+ }
protected:
SkColorFilter() {}
diff --git a/include/core/SkColorSpace.h b/include/core/SkColorSpace.h
index 8b75ade467..251eeea040 100644
--- a/include/core/SkColorSpace.h
+++ b/include/core/SkColorSpace.h
@@ -25,10 +25,14 @@ enum SkGammaNamed {
* Describes a color gamut with primaries and a white point.
*/
struct SK_API SkColorSpacePrimaries {
- float fRX, fRY;
- float fGX, fGY;
- float fBX, fBY;
- float fWX, fWY;
+ float fRX;
+ float fRY;
+ float fGX;
+ float fGY;
+ float fBX;
+ float fBY;
+ float fWX;
+ float fWY;
/**
* Convert primaries and a white point to a toXYZD50 matrix, the preferred color gamut
diff --git a/include/core/SkCoverageMode.h b/include/core/SkCoverageMode.h
index 2aa063fd61..856b767c28 100644
--- a/include/core/SkCoverageMode.h
+++ b/include/core/SkCoverageMode.h
@@ -24,7 +24,7 @@ enum class SkCoverageMode {
kReverseDifference, // B - A B*(1-A)
kXor, // A ⊕ B A+B-2*A*B
- kLast = kXor
+ kLast = kXor,
};
#endif
diff --git a/include/core/SkDeque.h b/include/core/SkDeque.h
index 0b3e37f3d0..a00e3c2dfe 100644
--- a/include/core/SkDeque.h
+++ b/include/core/SkDeque.h
@@ -66,7 +66,7 @@ public:
public:
enum IterStart {
kFront_IterStart,
- kBack_IterStart
+ kBack_IterStart,
};
/**
diff --git a/include/core/SkDrawLooper.h b/include/core/SkDrawLooper.h
index 4280daa4a9..5a4fe78d4f 100644
--- a/include/core/SkDrawLooper.h
+++ b/include/core/SkDrawLooper.h
@@ -97,7 +97,21 @@ public:
virtual bool asABlurShadow(BlurShadowRec*) const;
virtual void toString(SkString* str) const = 0;
- SK_DEFINE_FLATTENABLE_TYPE(SkDrawLooper)
+
+ static SkFlattenable::Type GetFlattenableType() {
+ return kSkDrawLooper_Type;
+ }
+
+ SkFlattenable::Type getFlattenableType() const override {
+ return kSkDrawLooper_Type;
+ }
+
+ static sk_sp<SkDrawLooper> Deserialize(const void* data, size_t size,
+ const SkDeserialProcs* procs = nullptr) {
+ return sk_sp<SkDrawLooper>(static_cast<SkDrawLooper*>(
+ SkFlattenable::Deserialize(
+ kSkDrawLooper_Type, data, size, procs).release()));
+ }
protected:
sk_sp<SkDrawLooper> makeColorSpace(SkColorSpaceXformer* xformer) const {
diff --git a/include/core/SkDrawable.h b/include/core/SkDrawable.h
index b6beca910e..cf0264867e 100644
--- a/include/core/SkDrawable.h
+++ b/include/core/SkDrawable.h
@@ -60,7 +60,21 @@ public:
*/
void notifyDrawingChanged();
- SK_DEFINE_FLATTENABLE_TYPE(SkDrawable)
+ static SkFlattenable::Type GetFlattenableType() {
+ return kSkDrawable_Type;
+ }
+
+ SkFlattenable::Type getFlattenableType() const override {
+ return kSkDrawable_Type;
+ }
+
+ static sk_sp<SkDrawable> Deserialize(const void* data, size_t size,
+ const SkDeserialProcs* procs = nullptr) {
+ return sk_sp<SkDrawable>(static_cast<SkDrawable*>(
+ SkFlattenable::Deserialize(
+ kSkDrawable_Type, data, size, procs).release()));
+ }
+
Factory getFactory() const override { return nullptr; }
protected:
diff --git a/include/core/SkFilterQuality.h b/include/core/SkFilterQuality.h
index 54fae51fe1..8f53258006 100644
--- a/include/core/SkFilterQuality.h
+++ b/include/core/SkFilterQuality.h
@@ -20,7 +20,7 @@ enum SkFilterQuality {
kMedium_SkFilterQuality, //!< typically bilerp + mipmaps for down-scaling
kHigh_SkFilterQuality, //!< slowest but highest quality, typically bicubic or better
- kLast_SkFilterQuality = kHigh_SkFilterQuality
+ kLast_SkFilterQuality = kHigh_SkFilterQuality,
};
#endif
diff --git a/include/core/SkFlattenable.h b/include/core/SkFlattenable.h
index ed343c82ae..19fabe4086 100644
--- a/include/core/SkFlattenable.h
+++ b/include/core/SkFlattenable.h
@@ -17,61 +17,6 @@ class SkWriteBuffer;
struct SkSerialProcs;
struct SkDeserialProcs;
-/*
- * Flattening is straight-forward:
- * 1. call getFactory() so we have a function-ptr to recreate the subclass
- * 2. call flatten(buffer) to write out enough data for the factory to read
- *
- * Unflattening is easy for the caller: new_instance = factory(buffer)
- *
- * The complexity of supporting this is as follows.
- *
- * If your subclass wants to control unflattening, use this macro in your declaration:
- * SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS
- * This will provide a getFactory(), and require that the subclass implements CreateProc.
- *
- * For older buffers (before the DEEPFLATTENING change, the macros below declare
- * a thin factory DeepCreateProc. It checks the version of the buffer, and if it is pre-deep,
- * then it calls through to a (usually protected) constructor, passing the buffer.
- * If the buffer is newer, then it directly calls the "real" factory: CreateProc.
- */
-
-#define SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() static void InitializeFlattenables();
-
-#define SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(flattenable) \
- void flattenable::InitializeFlattenables() {
-
-#define SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END \
- }
-
-#define SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(flattenable) \
- SkFlattenable::Register(#flattenable, flattenable::CreateProc, \
- flattenable::GetFlattenableType());
-
-#define SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(flattenable) \
- private: \
- static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&); \
- friend class SkFlattenable::PrivateInitializer; \
- public: \
- Factory getFactory() const override { return CreateProc; }
-
-/** For SkFlattenable derived objects with a valid type
- This macro should only be used in base class objects in core
- */
-#define SK_DEFINE_FLATTENABLE_TYPE(flattenable) \
- static Type GetFlattenableType() { \
- return k##flattenable##_Type; \
- } \
- Type getFlattenableType() const override { \
- return k##flattenable##_Type; \
- } \
- static sk_sp<flattenable> Deserialize(const void* data, size_t size, \
- const SkDeserialProcs* procs = nullptr) { \
- return sk_sp<flattenable>(static_cast<flattenable*>( \
- SkFlattenable::Deserialize( \
- k##flattenable##_Type, data, size, procs).release()));\
- }
-
/** \class SkFlattenable
SkFlattenable is the base class for objects that need to be flattened
diff --git a/include/core/SkFontLCDConfig.h b/include/core/SkFontLCDConfig.h
index 58b5a82b9c..ec738f1d61 100644
--- a/include/core/SkFontLCDConfig.h
+++ b/include/core/SkFontLCDConfig.h
@@ -23,7 +23,7 @@ public:
*/
enum LCDOrientation {
kHorizontal_LCDOrientation = 0, //!< this is the default
- kVertical_LCDOrientation = 1
+ kVertical_LCDOrientation = 1,
};
/** @deprecated set on Device creation. */
@@ -46,7 +46,7 @@ public:
enum LCDOrder {
kRGB_LCDOrder = 0, //!< this is the default
kBGR_LCDOrder = 1,
- kNONE_LCDOrder = 2
+ kNONE_LCDOrder = 2,
};
/** @deprecated set on Device creation. */
diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h
index 70f5513843..c95fc432cc 100644
--- a/include/core/SkImageFilter.h
+++ b/include/core/SkImageFilter.h
@@ -250,8 +250,23 @@ public:
sk_sp<SkImageFilter> input);
virtual void toString(SkString* str) const = 0;
- SK_DEFINE_FLATTENABLE_TYPE(SkImageFilter)
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
+
+ static void InitializeFlattenables();
+
+ static SkFlattenable::Type GetFlattenableType() {
+ return kSkImageFilter_Type;
+ }
+
+ SkFlattenable::Type getFlattenableType() const override {
+ return kSkImageFilter_Type;
+ }
+
+ static sk_sp<SkImageFilter> Deserialize(const void* data, size_t size,
+ const SkDeserialProcs* procs = nullptr) {
+ return sk_sp<SkImageFilter>(static_cast<SkImageFilter*>(
+ SkFlattenable::Deserialize(
+ kSkImageFilter_Type, data, size, procs).release()));
+ }
protected:
class Common {
diff --git a/include/core/SkMaskFilter.h b/include/core/SkMaskFilter.h
index bd2a20b825..8158e7a3eb 100644
--- a/include/core/SkMaskFilter.h
+++ b/include/core/SkMaskFilter.h
@@ -60,7 +60,21 @@ public:
sk_sp<SkMaskFilter> makeWithMatrix(const SkMatrix&) const;
virtual void toString(SkString* str) const = 0;
- SK_DEFINE_FLATTENABLE_TYPE(SkMaskFilter)
+
+ static SkFlattenable::Type GetFlattenableType() {
+ return kSkMaskFilter_Type;
+ }
+
+ SkFlattenable::Type getFlattenableType() const override {
+ return kSkMaskFilter_Type;
+ }
+
+ static sk_sp<SkMaskFilter> Deserialize(const void* data, size_t size,
+ const SkDeserialProcs* procs = nullptr) {
+ return sk_sp<SkMaskFilter>(static_cast<SkMaskFilter*>(
+ SkFlattenable::Deserialize(
+ kSkMaskFilter_Type, data, size, procs).release()));
+ }
private:
static void InitializeFlattenables();
diff --git a/include/core/SkPathEffect.h b/include/core/SkPathEffect.h
index 97b48ea503..b734575299 100644
--- a/include/core/SkPathEffect.h
+++ b/include/core/SkPathEffect.h
@@ -146,15 +146,29 @@ public:
virtual DashType asADash(DashInfo* info) const;
virtual void toString(SkString* str) const = 0;
- SK_DEFINE_FLATTENABLE_TYPE(SkPathEffect)
+
+ static void InitializeFlattenables();
+
+ static SkFlattenable::Type GetFlattenableType() {
+ return kSkPathEffect_Type;
+ }
+
+ SkFlattenable::Type getFlattenableType() const override {
+ return kSkPathEffect_Type;
+ }
+
+ static sk_sp<SkPathEffect> Deserialize(const void* data, size_t size,
+ const SkDeserialProcs* procs = nullptr) {
+ return sk_sp<SkPathEffect>(static_cast<SkPathEffect*>(
+ SkFlattenable::Deserialize(
+ kSkPathEffect_Type, data, size, procs).release()));
+ }
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
/// Override for subclasses as appropriate.
virtual bool exposedInAndroidJavaAPI() const { return false; }
#endif
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
-
protected:
SkPathEffect() {}
diff --git a/include/effects/Sk1DPathEffect.h b/include/effects/Sk1DPathEffect.h
index 88a36ff7c6..a78aded601 100644
--- a/include/effects/Sk1DPathEffect.h
+++ b/include/effects/Sk1DPathEffect.h
@@ -8,6 +8,7 @@
#ifndef Sk1DPathEffect_DEFINED
#define Sk1DPathEffect_DEFINED
+#include "SkFlattenable.h"
#include "SkPathEffect.h"
#include "SkPath.h"
@@ -62,7 +63,8 @@ public:
SkStrokeRec*, const SkRect*) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPath1DPathEffect)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
SkPath1DPathEffect(const SkPath& path, SkScalar advance, SkScalar phase, Style);
@@ -73,6 +75,9 @@ protected:
SkScalar next(SkPath*, SkScalar, SkPathMeasure&) const override;
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
SkPath fPath; // copied from constructor
SkScalar fAdvance; // copied from constructor
SkScalar fInitialOffset; // computed from phase
diff --git a/include/effects/Sk2DPathEffect.h b/include/effects/Sk2DPathEffect.h
index 5ebadab0d5..841e5b8ab2 100644
--- a/include/effects/Sk2DPathEffect.h
+++ b/include/effects/Sk2DPathEffect.h
@@ -8,6 +8,7 @@
#ifndef Sk2DPathEffect_DEFINED
#define Sk2DPathEffect_DEFINED
+#include "SkFlattenable.h"
#include "SkPath.h"
#include "SkPathEffect.h"
#include "SkMatrix.h"
@@ -66,7 +67,8 @@ public:
SkStrokeRec*, const SkRect*) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLine2DPathEffect)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
SkLine2DPathEffect(SkScalar width, const SkMatrix& matrix)
@@ -78,6 +80,9 @@ protected:
void nextSpan(int u, int v, int ucount, SkPath*) const override;
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
SkScalar fWidth;
typedef Sk2DPathEffect INHERITED;
@@ -94,7 +99,8 @@ public:
}
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPath2DPathEffect)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
SkPath2DPathEffect(const SkMatrix&, const SkPath&);
@@ -103,6 +109,9 @@ protected:
void next(const SkPoint&, int u, int v, SkPath*) const override;
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
SkPath fPath;
typedef Sk2DPathEffect INHERITED;
diff --git a/include/effects/SkAlphaThresholdFilter.h b/include/effects/SkAlphaThresholdFilter.h
index 9bb69f004d..884efff389 100644
--- a/include/effects/SkAlphaThresholdFilter.h
+++ b/include/effects/SkAlphaThresholdFilter.h
@@ -26,7 +26,7 @@ public:
const SkImageFilter::CropRect* cropRect = nullptr);
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP();
+ static void InitializeFlattenables();
};
#endif
diff --git a/include/effects/SkArithmeticImageFilter.h b/include/effects/SkArithmeticImageFilter.h
index a8b7100abb..40b91e8fd6 100644
--- a/include/effects/SkArithmeticImageFilter.h
+++ b/include/effects/SkArithmeticImageFilter.h
@@ -17,7 +17,7 @@ public:
sk_sp<SkImageFilter> foreground,
const SkImageFilter::CropRect* cropRect);
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP();
+ static void InitializeFlattenables();
private:
SkArithmeticImageFilter(); // can't instantiate
diff --git a/include/effects/SkColorFilterImageFilter.h b/include/effects/SkColorFilterImageFilter.h
index 491a2b05b0..f422b0901a 100644
--- a/include/effects/SkColorFilterImageFilter.h
+++ b/include/effects/SkColorFilterImageFilter.h
@@ -8,6 +8,7 @@
#ifndef SkColorFilterImageFilter_DEFINED
#define SkColorFilterImageFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
class SkColorFilter;
@@ -19,7 +20,8 @@ public:
const CropRect* cropRect = nullptr);
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorFilterImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
void flatten(SkWriteBuffer&) const override;
@@ -34,6 +36,8 @@ private:
SkColorFilterImageFilter(sk_sp<SkColorFilter> cf,
sk_sp<SkImageFilter> input,
const CropRect* cropRect);
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
sk_sp<SkColorFilter> fColorFilter;
diff --git a/include/effects/SkComposeImageFilter.h b/include/effects/SkComposeImageFilter.h
index 0bfb7d8c5c..7c86126638 100644
--- a/include/effects/SkComposeImageFilter.h
+++ b/include/effects/SkComposeImageFilter.h
@@ -8,6 +8,7 @@
#ifndef SkComposeImageFilter_DEFINED
#define SkComposeImageFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
class SK_API SkComposeImageFilter : public SkImageFilter {
@@ -17,7 +18,8 @@ public:
SkRect computeFastBounds(const SkRect& src) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
explicit SkComposeImageFilter(sk_sp<SkImageFilter> inputs[2]) : INHERITED(inputs, 2, nullptr) {
@@ -32,6 +34,9 @@ protected:
bool onCanHandleComplexCTM() const override { return true; }
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
typedef SkImageFilter INHERITED;
};
diff --git a/include/effects/SkCornerPathEffect.h b/include/effects/SkCornerPathEffect.h
index ac9401a7bc..0f052b880d 100644
--- a/include/effects/SkCornerPathEffect.h
+++ b/include/effects/SkCornerPathEffect.h
@@ -8,6 +8,7 @@
#ifndef SkCornerPathEffect_DEFINED
#define SkCornerPathEffect_DEFINED
+#include "SkFlattenable.h"
#include "SkPathEffect.h"
/** \class SkCornerPathEffect
@@ -28,7 +29,8 @@ public:
SkStrokeRec*, const SkRect*) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkCornerPathEffect)
+
+ Factory getFactory() const override { return CreateProc; }
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
bool exposedInAndroidJavaAPI() const override { return true; }
@@ -36,6 +38,8 @@ public:
protected:
~SkCornerPathEffect() override;
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
explicit SkCornerPathEffect(SkScalar radius);
void flatten(SkWriteBuffer&) const override;
diff --git a/include/effects/SkDiscretePathEffect.h b/include/effects/SkDiscretePathEffect.h
index eb2a994982..252e6de8a3 100644
--- a/include/effects/SkDiscretePathEffect.h
+++ b/include/effects/SkDiscretePathEffect.h
@@ -8,6 +8,7 @@
#ifndef SkDiscretePathEffect_DEFINED
#define SkDiscretePathEffect_DEFINED
+#include "SkFlattenable.h"
#include "SkPathEffect.h"
/** \class SkDiscretePathEffect
@@ -35,7 +36,8 @@ public:
SkStrokeRec*, const SkRect*) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiscretePathEffect)
+
+ Factory getFactory() const override { return CreateProc; }
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
bool exposedInAndroidJavaAPI() const override { return true; }
@@ -48,6 +50,9 @@ protected:
void flatten(SkWriteBuffer&) const override;
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
SkScalar fSegLength, fPerterb;
/* Caller-supplied 32 bit seed assist */
diff --git a/include/effects/SkDisplacementMapEffect.h b/include/effects/SkDisplacementMapEffect.h
index daf03d742c..929086cabd 100644
--- a/include/effects/SkDisplacementMapEffect.h
+++ b/include/effects/SkDisplacementMapEffect.h
@@ -31,8 +31,6 @@ public:
sk_sp<SkImageFilter> color,
const CropRect* cropRect = nullptr);
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDisplacementMapEffect)
-
SkRect computeFastBounds(const SkRect& src) const override;
virtual SkIRect onFilterBounds(const SkIRect& src, const SkMatrix& ctm,
@@ -43,6 +41,8 @@ public:
void toString(SkString* str) const override;
+ Factory getFactory() const override { return CreateProc; }
+
protected:
sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
SkIPoint* offset) const override;
@@ -54,6 +54,9 @@ protected:
void flatten(SkWriteBuffer&) const override;
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
ChannelSelectorType fXChannelSelector;
ChannelSelectorType fYChannelSelector;
SkScalar fScale;
diff --git a/include/effects/SkDropShadowImageFilter.h b/include/effects/SkDropShadowImageFilter.h
index d1ee44c168..e8c5740f9d 100644
--- a/include/effects/SkDropShadowImageFilter.h
+++ b/include/effects/SkDropShadowImageFilter.h
@@ -9,6 +9,7 @@
#define SkDropShadowImageFilter_DEFINED
#include "SkColor.h"
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
#include "SkScalar.h"
@@ -30,7 +31,8 @@ public:
SkRect computeFastBounds(const SkRect&) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDropShadowImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
void flatten(SkWriteBuffer&) const override;
@@ -44,6 +46,8 @@ private:
SkDropShadowImageFilter(SkScalar dx, SkScalar dy, SkScalar sigmaX, SkScalar sigmaY, SkColor,
ShadowMode shadowMode, sk_sp<SkImageFilter> input,
const CropRect* cropRect);
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
SkScalar fDx, fDy, fSigmaX, fSigmaY;
SkColor fColor;
diff --git a/include/effects/SkGradientShader.h b/include/effects/SkGradientShader.h
index 9821c4be82..278fc25735 100644
--- a/include/effects/SkGradientShader.h
+++ b/include/effects/SkGradientShader.h
@@ -224,7 +224,7 @@ public:
return MakeSweep(cx, cy, colors, std::move(colorSpace), pos, count, 0, nullptr);
}
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
+ static void InitializeFlattenables();
};
#endif
diff --git a/include/effects/SkHighContrastFilter.h b/include/effects/SkHighContrastFilter.h
index fd97c7d48d..ed33576bb4 100644
--- a/include/effects/SkHighContrastFilter.h
+++ b/include/effects/SkHighContrastFilter.h
@@ -72,12 +72,13 @@ struct SkHighContrastConfig {
* not valid, e.g. if you try to call it with a contrast outside the range of
* -1.0 to 1.0.
*/
+
class SK_API SkHighContrastFilter {
public:
// Returns the filter, or nullptr if the config is invalid.
static sk_sp<SkColorFilter> Make(const SkHighContrastConfig& config);
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
+ static void InitializeFlattenables();
};
#endif
diff --git a/include/effects/SkImageSource.h b/include/effects/SkImageSource.h
index 6ef855ab93..d25cb6dc36 100644
--- a/include/effects/SkImageSource.h
+++ b/include/effects/SkImageSource.h
@@ -8,6 +8,7 @@
#ifndef SkImageSource_DEFINED
#define SkImageSource_DEFINED
+#include "SkFlattenable.h"
#include "SkImage.h"
#include "SkImageFilter.h"
@@ -22,7 +23,8 @@ public:
SkRect computeFastBounds(const SkRect& src) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageSource)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
void flatten(SkWriteBuffer&) const override;
@@ -40,6 +42,8 @@ private:
const SkRect& srcRect,
const SkRect& dstRect,
SkFilterQuality);
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
sk_sp<SkImage> fImage;
SkRect fSrcRect, fDstRect;
diff --git a/include/effects/SkLightingImageFilter.h b/include/effects/SkLightingImageFilter.h
index ce941bc124..5c25020637 100644
--- a/include/effects/SkLightingImageFilter.h
+++ b/include/effects/SkLightingImageFilter.h
@@ -39,7 +39,7 @@ public:
SkScalar shininess, sk_sp<SkImageFilter> input, const CropRect* cropRect = nullptr);
~SkLightingImageFilter() override;
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
+ static void InitializeFlattenables();
protected:
SkLightingImageFilter(sk_sp<SkImageFilterLight> light,
diff --git a/include/effects/SkLumaColorFilter.h b/include/effects/SkLumaColorFilter.h
index bdf02d322e..14f2d4f773 100644
--- a/include/effects/SkLumaColorFilter.h
+++ b/include/effects/SkLumaColorFilter.h
@@ -24,6 +24,9 @@ class SkRasterPipeline;
* C' = [ Lum * a, 0, 0, 0 ]
*
*/
+
+ #include "SkFlattenable.h"
+
class SK_API SkLumaColorFilter : public SkColorFilter {
public:
static sk_sp<SkColorFilter> Make();
@@ -34,7 +37,8 @@ public:
#endif
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLumaColorFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
void flatten(SkWriteBuffer&) const override;
@@ -43,6 +47,8 @@ private:
SkLumaColorFilter();
void onAppendStages(SkRasterPipeline*, SkColorSpace*, SkArenaAlloc*,
bool shaderIsOpaque) const override;
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
typedef SkColorFilter INHERITED;
};
diff --git a/include/effects/SkMagnifierImageFilter.h b/include/effects/SkMagnifierImageFilter.h
index dda4190322..382f62bc52 100644
--- a/include/effects/SkMagnifierImageFilter.h
+++ b/include/effects/SkMagnifierImageFilter.h
@@ -19,7 +19,8 @@ public:
const CropRect* cropRect = nullptr);
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMagnifierImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
SkMagnifierImageFilter(const SkRect& srcRect,
@@ -33,6 +34,9 @@ protected:
sk_sp<SkImageFilter> onMakeColorSpace(SkColorSpaceXformer*) const override;
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
SkRect fSrcRect;
SkScalar fInset;
diff --git a/include/effects/SkMatrixConvolutionImageFilter.h b/include/effects/SkMatrixConvolutionImageFilter.h
index 5361fef928..cb4f087a75 100644
--- a/include/effects/SkMatrixConvolutionImageFilter.h
+++ b/include/effects/SkMatrixConvolutionImageFilter.h
@@ -8,6 +8,7 @@
#ifndef SkMatrixConvolutionImageFilter_DEFINED
#define SkMatrixConvolutionImageFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
#include "SkScalar.h"
#include "SkSize.h"
@@ -68,7 +69,8 @@ public:
const CropRect* cropRect = nullptr);
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMatrixConvolutionImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
SkMatrixConvolutionImageFilter(const SkISize& kernelSize,
@@ -90,6 +92,9 @@ protected:
bool affectsTransparentBlack() const override;
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
SkISize fKernelSize;
SkScalar* fKernel;
SkScalar fGain;
diff --git a/include/effects/SkMergeImageFilter.h b/include/effects/SkMergeImageFilter.h
index b1a85d5c74..5fc6bcb010 100644
--- a/include/effects/SkMergeImageFilter.h
+++ b/include/effects/SkMergeImageFilter.h
@@ -8,6 +8,7 @@
#ifndef SkMergeImageFilter_DEFINED
#define SkMergeImageFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
class SK_API SkMergeImageFilter : public SkImageFilter {
@@ -25,7 +26,8 @@ public:
}
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMergeImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
void flatten(SkWriteBuffer&) const override;
@@ -36,6 +38,8 @@ protected:
private:
SkMergeImageFilter(sk_sp<SkImageFilter>* const filters, int count, const CropRect* cropRect);
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
typedef SkImageFilter INHERITED;
};
diff --git a/include/effects/SkMorphologyImageFilter.h b/include/effects/SkMorphologyImageFilter.h
index d88a31dc65..ceb4867a79 100644
--- a/include/effects/SkMorphologyImageFilter.h
+++ b/include/effects/SkMorphologyImageFilter.h
@@ -9,6 +9,7 @@
#define SkMorphologyImageFilter_DEFINED
#include "SkColor.h"
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
#include "SkSize.h"
@@ -62,7 +63,8 @@ public:
const CropRect* cropRect = nullptr);
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDilateImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
Op op() const override { return kDilate_Op; }
@@ -72,6 +74,8 @@ private:
sk_sp<SkImageFilter> input,
const CropRect* cropRect)
: INHERITED(radiusX, radiusY, input, cropRect) {}
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
typedef SkMorphologyImageFilter INHERITED;
};
@@ -84,7 +88,8 @@ public:
const CropRect* cropRect = nullptr);
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkErodeImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
Op op() const override { return kErode_Op; }
@@ -93,6 +98,8 @@ private:
SkErodeImageFilter(int radiusX, int radiusY,
sk_sp<SkImageFilter> input, const CropRect* cropRect)
: INHERITED(radiusX, radiusY, input, cropRect) {}
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
typedef SkMorphologyImageFilter INHERITED;
};
diff --git a/include/effects/SkOffsetImageFilter.h b/include/effects/SkOffsetImageFilter.h
index 2d7b14f652..f352a76e07 100644
--- a/include/effects/SkOffsetImageFilter.h
+++ b/include/effects/SkOffsetImageFilter.h
@@ -8,6 +8,7 @@
#ifndef SkOffsetImageFilter_DEFINED
#define SkOffsetImageFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
#include "SkPoint.h"
@@ -20,7 +21,8 @@ public:
SkRect computeFastBounds(const SkRect& src) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkOffsetImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
void flatten(SkWriteBuffer&) const override;
@@ -32,6 +34,8 @@ protected:
private:
SkOffsetImageFilter(SkScalar dx, SkScalar dy, sk_sp<SkImageFilter> input, const CropRect*);
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
SkVector fOffset;
diff --git a/include/effects/SkOverdrawColorFilter.h b/include/effects/SkOverdrawColorFilter.h
index 63f636a0cc..33eb27fcc2 100644
--- a/include/effects/SkOverdrawColorFilter.h
+++ b/include/effects/SkOverdrawColorFilter.h
@@ -36,7 +36,7 @@ public:
static sk_sp<SkFlattenable> CreateProc(SkReadBuffer& buffer);
Factory getFactory() const override { return CreateProc; }
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
+ static void InitializeFlattenables();
protected:
void flatten(SkWriteBuffer& buffer) const override;
diff --git a/include/effects/SkPaintImageFilter.h b/include/effects/SkPaintImageFilter.h
index b27c2624b1..bf7c51b50e 100644
--- a/include/effects/SkPaintImageFilter.h
+++ b/include/effects/SkPaintImageFilter.h
@@ -8,6 +8,7 @@
#ifndef SkPaintImageFilter_DEFINED
#define SkPaintImageFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
#include "SkPaint.h"
@@ -27,7 +28,8 @@ public:
bool affectsTransparentBlack() const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPaintImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
void flatten(SkWriteBuffer&) const override;
@@ -37,6 +39,8 @@ protected:
private:
SkPaintImageFilter(const SkPaint& paint, const CropRect* rect);
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
SkPaint fPaint;
diff --git a/include/effects/SkPerlinNoiseShader.h b/include/effects/SkPerlinNoiseShader.h
index 6b9bcd86d1..1623520cd6 100644
--- a/include/effects/SkPerlinNoiseShader.h
+++ b/include/effects/SkPerlinNoiseShader.h
@@ -51,7 +51,7 @@ public:
static sk_sp<SkShader> MakeImprovedNoise(SkScalar baseFrequencyX, SkScalar baseFrequencyY,
int numOctaves, SkScalar z);
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
+ static void InitializeFlattenables();
private:
SkPerlinNoiseShader() = delete;
diff --git a/include/effects/SkPictureImageFilter.h b/include/effects/SkPictureImageFilter.h
index 1885cfe6ae..0cde3988c5 100644
--- a/include/effects/SkPictureImageFilter.h
+++ b/include/effects/SkPictureImageFilter.h
@@ -8,6 +8,7 @@
#ifndef SkPictureImageFilter_DEFINED
#define SkPictureImageFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
#include "SkPicture.h"
@@ -25,7 +26,8 @@ public:
static sk_sp<SkImageFilter> Make(sk_sp<SkPicture> picture, const SkRect& cropRect);
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPictureImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
/* Constructs an SkPictureImageFilter object from an SkReadBuffer.
@@ -42,6 +44,8 @@ protected:
private:
explicit SkPictureImageFilter(sk_sp<SkPicture> picture);
SkPictureImageFilter(sk_sp<SkPicture> picture, const SkRect& cropRect, sk_sp<SkColorSpace>);
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
sk_sp<SkPicture> fPicture;
SkRect fCropRect;
diff --git a/include/effects/SkTableColorFilter.h b/include/effects/SkTableColorFilter.h
index 2695f42357..3989b5ac2d 100644
--- a/include/effects/SkTableColorFilter.h
+++ b/include/effects/SkTableColorFilter.h
@@ -36,7 +36,7 @@ public:
const uint8_t tableG[256],
const uint8_t tableB[256]);
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
+ static void InitializeFlattenables();
};
#endif
diff --git a/include/effects/SkTileImageFilter.h b/include/effects/SkTileImageFilter.h
index f62d8a02d4..c2e38823d0 100644
--- a/include/effects/SkTileImageFilter.h
+++ b/include/effects/SkTileImageFilter.h
@@ -8,6 +8,7 @@
#ifndef SkTileImageFilter_DEFINED
#define SkTileImageFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
class SK_API SkTileImageFilter : public SkImageFilter {
@@ -28,7 +29,8 @@ public:
SkRect computeFastBounds(const SkRect& src) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTileImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
void flatten(SkWriteBuffer& buffer) const override;
@@ -40,6 +42,8 @@ protected:
private:
SkTileImageFilter(const SkRect& srcRect, const SkRect& dstRect, sk_sp<SkImageFilter> input)
: INHERITED(&input, 1, nullptr), fSrcRect(srcRect), fDstRect(dstRect) {}
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
SkRect fSrcRect;
SkRect fDstRect;
diff --git a/include/effects/SkToSRGBColorFilter.h b/include/effects/SkToSRGBColorFilter.h
index 03bb37b172..797e9d81dc 100644
--- a/include/effects/SkToSRGBColorFilter.h
+++ b/include/effects/SkToSRGBColorFilter.h
@@ -8,6 +8,7 @@
#ifndef SkToSRGBColorFilter_DEFINED
#define SkToSRGBColorFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkColorFilter.h"
#include "SkRefCnt.h"
@@ -27,13 +28,16 @@ public:
#endif
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkToSRGBColorFilter)
+
+ Factory getFactory() const override { return CreateProc; }
private:
void flatten(SkWriteBuffer&) const override;
SkToSRGBColorFilter(sk_sp<SkColorSpace>);
void onAppendStages(SkRasterPipeline*, SkColorSpace*, SkArenaAlloc*,
bool shaderIsOpaque) const override;
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
sk_sp<SkColorSpace> fSrcColorSpace;
diff --git a/include/effects/SkXfermodeImageFilter.h b/include/effects/SkXfermodeImageFilter.h
index e677813288..c403d2fbe6 100644
--- a/include/effects/SkXfermodeImageFilter.h
+++ b/include/effects/SkXfermodeImageFilter.h
@@ -25,7 +25,7 @@ public:
return Make(mode, std::move(background), nullptr, nullptr);
}
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP();
+ static void InitializeFlattenables();
private:
SkXfermodeImageFilter(); // can't instantiate
diff --git a/src/core/SkColorMatrixFilterRowMajor255.h b/src/core/SkColorMatrixFilterRowMajor255.h
index 0260379ef9..8c774504e9 100644
--- a/src/core/SkColorMatrixFilterRowMajor255.h
+++ b/src/core/SkColorMatrixFilterRowMajor255.h
@@ -8,6 +8,7 @@
#ifndef SkColorMatrixFilter_DEFINED
#define SkColorMatrixFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkColorFilter.h"
class SkColorMatrixFilterRowMajor255 : public SkColorFilter {
@@ -29,7 +30,7 @@ public:
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorMatrixFilter)
+ Factory getFactory() const override { return CreateProc; }
protected:
void flatten(SkWriteBuffer&) const override;
@@ -37,6 +38,8 @@ protected:
private:
void onAppendStages(SkRasterPipeline*, SkColorSpace*, SkArenaAlloc*,
bool shaderIsOpaque) const override;
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
SkScalar fMatrix[20];
float fTranspose[20]; // for Sk4s
diff --git a/src/core/SkFlattenablePriv.h b/src/core/SkFlattenablePriv.h
new file mode 100644
index 0000000000..381de93b1e
--- /dev/null
+++ b/src/core/SkFlattenablePriv.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkFlattenablePriv_DEFINED
+#define SkFlattenablePriv_DEFINED
+
+#include "SkFlattenable.h"
+
+/*
+ * Flattening is straight-forward:
+ * 1. call getFactory() so we have a function-ptr to recreate the subclass
+ * 2. call flatten(buffer) to write out enough data for the factory to read
+ *
+ * Unflattening is easy for the caller: new_instance = factory(buffer)
+ *
+ * The complexity of supporting this is as follows.
+ *
+ * If your subclass wants to control unflattening, use this macro in your declaration:
+ * SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS
+ * This will provide a getFactory(), and require that the subclass implements CreateProc.
+ *
+ * For older buffers (before the DEEPFLATTENING change, the macros below declare
+ * a thin factory DeepCreateProc. It checks the version of the buffer, and if it is pre-deep,
+ * then it calls through to a (usually protected) constructor, passing the buffer.
+ * If the buffer is newer, then it directly calls the "real" factory: CreateProc.
+ */
+
+#define SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() static void InitializeFlattenables();
+
+#define SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(flattenable) \
+ void flattenable::InitializeFlattenables() {
+
+#define SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END \
+ }
+
+#define SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(flattenable) \
+ SkFlattenable::Register(#flattenable, flattenable::CreateProc, \
+ flattenable::GetFlattenableType());
+
+#define SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(flattenable) \
+ private: \
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&); \
+ friend class SkFlattenable::PrivateInitializer; \
+ public: \
+ Factory getFactory() const override { return CreateProc; }
+
+/** For SkFlattenable derived objects with a valid type
+ This macro should only be used in base class objects in core
+ */
+#define SK_DEFINE_FLATTENABLE_TYPE(flattenable) \
+ static Type GetFlattenableType() { \
+ return k##flattenable##_Type; \
+ } \
+ Type getFlattenableType() const override { \
+ return k##flattenable##_Type; \
+ } \
+ static sk_sp<flattenable> Deserialize(const void* data, size_t size, \
+ const SkDeserialProcs* procs = nullptr) { \
+ return sk_sp<flattenable>(static_cast<flattenable*>( \
+ SkFlattenable::Deserialize( \
+ k##flattenable##_Type, data, size, procs).release()));\
+ }
+
+
+#endif
diff --git a/src/core/SkGlobalInitialization_core.cpp b/src/core/SkGlobalInitialization_core.cpp
index f4f2ec8cb7..cb4d1d0549 100644
--- a/src/core/SkGlobalInitialization_core.cpp
+++ b/src/core/SkGlobalInitialization_core.cpp
@@ -11,7 +11,7 @@
#include "SkColorShader.h"
#include "SkComposeShader.h"
#include "SkEmptyShader.h"
-#include "SkFlattenable.h"
+#include "SkFlattenablePriv.h"
#include "SkImageShader.h"
#include "SkLocalMatrixShader.h"
#include "SkMatrixImageFilter.h"
diff --git a/src/core/SkLocalMatrixImageFilter.h b/src/core/SkLocalMatrixImageFilter.h
index 89a7e9d145..f4ca73c185 100644
--- a/src/core/SkLocalMatrixImageFilter.h
+++ b/src/core/SkLocalMatrixImageFilter.h
@@ -8,6 +8,7 @@
#ifndef SkLocalMatrixImageFilter_DEFINED
#define SkLocalMatrixImageFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
/**
@@ -19,7 +20,8 @@ public:
static sk_sp<SkImageFilter> Make(const SkMatrix& localM, sk_sp<SkImageFilter> input);
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLocalMatrixImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
void flatten(SkWriteBuffer&) const override;
@@ -31,6 +33,8 @@ protected:
private:
SkLocalMatrixImageFilter(const SkMatrix& localM, sk_sp<SkImageFilter> input);
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
SkMatrix fLocalM;
diff --git a/src/core/SkMatrixImageFilter.h b/src/core/SkMatrixImageFilter.h
index b43df9166d..32d4adc448 100644
--- a/src/core/SkMatrixImageFilter.h
+++ b/src/core/SkMatrixImageFilter.h
@@ -8,6 +8,7 @@
#ifndef SkMatrixImageFilter_DEFINED
#define SkMatrixImageFilter_DEFINED
+#include "SkFlattenable.h"
#include "SkImageFilter.h"
#include "SkMatrix.h"
@@ -32,7 +33,8 @@ public:
SkRect computeFastBounds(const SkRect&) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMatrixImageFilter)
+
+ Factory getFactory() const override { return CreateProc; }
protected:
SkMatrixImageFilter(const SkMatrix& transform,
@@ -47,6 +49,9 @@ protected:
MapDirection, const SkIRect* inputRect) const override;
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
SkMatrix fTransform;
SkFilterQuality fFilterQuality;
typedef SkImageFilter INHERITED;
diff --git a/src/core/SkModeColorFilter.h b/src/core/SkModeColorFilter.h
index a2a629f2c1..d2018e5cb9 100644
--- a/src/core/SkModeColorFilter.h
+++ b/src/core/SkModeColorFilter.h
@@ -6,6 +6,7 @@
*/
#include "SkColorFilter.h"
+#include "SkFlattenable.h"
#ifndef SkModeColorFilter_DEFINED
#define SkModeColorFilter_DEFINED
@@ -24,11 +25,12 @@ public:
void toString(SkString* str) const override;
+ Factory getFactory() const override { return CreateProc; }
+
#if SK_SUPPORT_GPU
std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(
GrContext*, const GrColorSpaceInfo&) const override;
#endif
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkModeColorFilter)
protected:
SkModeColorFilter(SkColor color, SkBlendMode mode);
@@ -41,6 +43,9 @@ protected:
sk_sp<SkColorFilter> onMakeColorSpace(SkColorSpaceXformer*) const override;
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
SkColor fColor;
SkBlendMode fMode;
// cache
diff --git a/src/effects/SkColorFilterImageFilter.cpp b/src/effects/SkColorFilterImageFilter.cpp
index 514d04622e..845a26ac0f 100644
--- a/src/effects/SkColorFilterImageFilter.cpp
+++ b/src/effects/SkColorFilterImageFilter.cpp
@@ -10,6 +10,7 @@
#include "SkCanvas.h"
#include "SkColorFilter.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilterPriv.h"
#include "SkReadBuffer.h"
#include "SkSpecialImage.h"
diff --git a/src/effects/SkDashImpl.h b/src/effects/SkDashImpl.h
index f5c4244dc3..13ec155847 100644
--- a/src/effects/SkDashImpl.h
+++ b/src/effects/SkDashImpl.h
@@ -22,7 +22,8 @@ public:
DashType asADash(DashInfo* info) const override;
void toString(SkString* str) const override;
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDashImpl)
+
+ Factory getFactory() const override { return CreateProc; }
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
bool exposedInAndroidJavaAPI() const override { return true; }
@@ -33,6 +34,9 @@ protected:
void flatten(SkWriteBuffer&) const override;
private:
+ static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
+ friend class SkFlattenable::PrivateInitializer;
+
SkScalar* fIntervals;
int32_t fCount;
SkScalar fPhase;
diff --git a/src/effects/SkDashPathEffect.cpp b/src/effects/SkDashPathEffect.cpp
index cdadcf907d..1a2c635a7f 100644
--- a/src/effects/SkDashPathEffect.cpp
+++ b/src/effects/SkDashPathEffect.cpp
@@ -8,6 +8,7 @@
#include "SkDashPathEffect.h"
#include "SkDashImpl.h"
#include "SkDashPathPriv.h"
+#include "SkFlattenablePriv.h"
#include "SkReadBuffer.h"
#include "SkWriteBuffer.h"
#include "SkStrokeRec.h"
diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp
index d40e521b0a..f1b704e1c8 100644
--- a/src/effects/SkDisplacementMapEffect.cpp
+++ b/src/effects/SkDisplacementMapEffect.cpp
@@ -9,6 +9,7 @@
#include "SkBitmap.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilterPriv.h"
#include "SkReadBuffer.h"
#include "SkSpecialImage.h"
diff --git a/src/effects/SkDropShadowImageFilter.cpp b/src/effects/SkDropShadowImageFilter.cpp
index 7532894bce..1a0ce2ee6b 100644
--- a/src/effects/SkDropShadowImageFilter.cpp
+++ b/src/effects/SkDropShadowImageFilter.cpp
@@ -10,6 +10,7 @@
#include "SkBlurImageFilter.h"
#include "SkCanvas.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilterPriv.h"
#include "SkReadBuffer.h"
#include "SkSpecialImage.h"
diff --git a/src/effects/SkEmbossMaskFilter.h b/src/effects/SkEmbossMaskFilter.h
index bc992a09b5..67d068cdb7 100644
--- a/src/effects/SkEmbossMaskFilter.h
+++ b/src/effects/SkEmbossMaskFilter.h
@@ -8,6 +8,7 @@
#ifndef SkEmbossMaskFilter_DEFINED
#define SkEmbossMaskFilter_DEFINED
+#include "SkFlattenablePriv.h"
#include "SkMaskFilterBase.h"
/** \class SkEmbossMaskFilter
diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp
index 0a1330583a..7c4f9b790d 100644
--- a/src/effects/SkLightingImageFilter.cpp
+++ b/src/effects/SkLightingImageFilter.cpp
@@ -9,6 +9,7 @@
#include "SkBitmap.h"
#include "SkColorData.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilterPriv.h"
#include "SkPoint3.h"
#include "SkReadBuffer.h"
diff --git a/src/effects/SkMagnifierImageFilter.cpp b/src/effects/SkMagnifierImageFilter.cpp
index 75e9817b8d..3a6679d2e3 100644
--- a/src/effects/SkMagnifierImageFilter.cpp
+++ b/src/effects/SkMagnifierImageFilter.cpp
@@ -10,6 +10,7 @@
#include "SkBitmap.h"
#include "SkColorData.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilterPriv.h"
#include "SkReadBuffer.h"
#include "SkSpecialImage.h"
diff --git a/src/effects/SkMatrixConvolutionImageFilter.cpp b/src/effects/SkMatrixConvolutionImageFilter.cpp
index 848676afaf..585103a008 100644
--- a/src/effects/SkMatrixConvolutionImageFilter.cpp
+++ b/src/effects/SkMatrixConvolutionImageFilter.cpp
@@ -9,6 +9,7 @@
#include "SkBitmap.h"
#include "SkColorData.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilterPriv.h"
#include "SkReadBuffer.h"
#include "SkSpecialImage.h"
diff --git a/src/effects/SkMergeImageFilter.cpp b/src/effects/SkMergeImageFilter.cpp
index 41d545e187..debe332e84 100644
--- a/src/effects/SkMergeImageFilter.cpp
+++ b/src/effects/SkMergeImageFilter.cpp
@@ -9,6 +9,7 @@
#include "SkCanvas.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkReadBuffer.h"
#include "SkSpecialImage.h"
#include "SkSpecialSurface.h"
diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp
index e421fdd28a..9d87aa033b 100644
--- a/src/effects/SkMorphologyImageFilter.cpp
+++ b/src/effects/SkMorphologyImageFilter.cpp
@@ -10,6 +10,7 @@
#include "SkBitmap.h"
#include "SkColorData.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilterPriv.h"
#include "SkOpts.h"
#include "SkReadBuffer.h"
diff --git a/src/effects/SkOffsetImageFilter.cpp b/src/effects/SkOffsetImageFilter.cpp
index 5b1533b371..19aa68ec2f 100644
--- a/src/effects/SkOffsetImageFilter.cpp
+++ b/src/effects/SkOffsetImageFilter.cpp
@@ -8,6 +8,7 @@
#include "SkOffsetImageFilter.h"
#include "SkColorSpaceXformer.h"
#include "SkCanvas.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilterPriv.h"
#include "SkMatrix.h"
#include "SkPaint.h"
diff --git a/src/effects/SkPictureImageFilter.cpp b/src/effects/SkPictureImageFilter.cpp
index 93a494d1e7..66fea1fe3f 100644
--- a/src/effects/SkPictureImageFilter.cpp
+++ b/src/effects/SkPictureImageFilter.cpp
@@ -10,6 +10,7 @@
#include "SkCanvas.h"
#include "SkColorSpaceXformCanvas.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkImageSource.h"
#include "SkReadBuffer.h"
#include "SkSpecialImage.h"
diff --git a/src/effects/SkTileImageFilter.cpp b/src/effects/SkTileImageFilter.cpp
index 1aac5814c5..f96af87a81 100644
--- a/src/effects/SkTileImageFilter.cpp
+++ b/src/effects/SkTileImageFilter.cpp
@@ -8,6 +8,7 @@
#include "SkTileImageFilter.h"
#include "SkColorSpaceXformer.h"
#include "SkCanvas.h"
+#include "SkFlattenablePriv.h"
#include "SkImage.h"
#include "SkImageFilterPriv.h"
#include "SkMatrix.h"
diff --git a/src/effects/SkTrimPE.h b/src/effects/SkTrimPE.h
index 7a05e72074..b7ed0c7c00 100644
--- a/src/effects/SkTrimPE.h
+++ b/src/effects/SkTrimPE.h
@@ -8,6 +8,7 @@
#ifndef SkTrimImpl_DEFINED
#define SkTrimImpl_DEFINED
+#include "SkFlattenablePriv.h"
#include "SkPathEffect.h"
#include "SkTrimPathEffect.h"
diff --git a/src/effects/SkXfermodeImageFilter.cpp b/src/effects/SkXfermodeImageFilter.cpp
index 9123818c84..0aa33d9cc0 100644
--- a/src/effects/SkXfermodeImageFilter.cpp
+++ b/src/effects/SkXfermodeImageFilter.cpp
@@ -10,6 +10,7 @@
#include "SkCanvas.h"
#include "SkColorData.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilterPriv.h"
#include "SkReadBuffer.h"
#include "SkSpecialImage.h"
diff --git a/src/shaders/SkShaderBase.h b/src/shaders/SkShaderBase.h
index cddc5540ee..53ec0dc853 100644
--- a/src/shaders/SkShaderBase.h
+++ b/src/shaders/SkShaderBase.h
@@ -9,6 +9,7 @@
#define SkShaderBase_DEFINED
#include "SkFilterQuality.h"
+#include "SkFlattenablePriv.h"
#include "SkMask.h"
#include "SkMatrix.h"
#include "SkShader.h"
diff --git a/src/shaders/gradients/SkGradientShader.cpp b/src/shaders/gradients/SkGradientShader.cpp
index 78f514c1c6..a574b7d46d 100644
--- a/src/shaders/gradients/SkGradientShader.cpp
+++ b/src/shaders/gradients/SkGradientShader.cpp
@@ -9,6 +9,7 @@
#include "Sk4fLinearGradient.h"
#include "SkColorSpace_XYZ.h"
#include "SkColorSpaceXformer.h"
+#include "SkFlattenablePriv.h"
#include "SkFloatBits.h"
#include "SkGradientBitmapCache.h"
#include "SkGradientShaderPriv.h"
diff --git a/src/utils/SkShadowUtils.cpp b/src/utils/SkShadowUtils.cpp
index 5049dd6f59..dfd5ba4886 100644
--- a/src/utils/SkShadowUtils.cpp
+++ b/src/utils/SkShadowUtils.cpp
@@ -12,6 +12,7 @@
#include "SkColorData.h"
#include "SkDevice.h"
#include "SkDrawShadowInfo.h"
+#include "SkFlattenablePriv.h"
#include "SkMaskFilter.h"
#include "SkPath.h"
#include "SkPM4f.h"
diff --git a/tests/CanvasTest.cpp b/tests/CanvasTest.cpp
index aee1d405be..9f942d26c3 100644
--- a/tests/CanvasTest.cpp
+++ b/tests/CanvasTest.cpp
@@ -53,7 +53,7 @@
#include "SkClipOpPriv.h"
#include "SkColor.h"
#include "SkDocument.h"
-#include "SkFlattenable.h"
+#include "SkFlattenablePriv.h"
#include "SkImageFilter.h"
#include "SkImageInfo.h"
#include "SkMalloc.h"
diff --git a/tests/QuickRejectTest.cpp b/tests/QuickRejectTest.cpp
index 103a31d936..d673ceb844 100644
--- a/tests/QuickRejectTest.cpp
+++ b/tests/QuickRejectTest.cpp
@@ -10,6 +10,7 @@
#include "SkCanvas.h"
#include "SkColorSpaceXformer.h"
#include "SkDrawLooper.h"
+#include "SkFlattenablePriv.h"
#include "SkLightingImageFilter.h"
#include "SkPoint3.h"
#include "SkTypes.h"
diff --git a/tools/bookmaker/bookmaker.h b/tools/bookmaker/bookmaker.h
index c755beec43..322aa4c446 100644
--- a/tools/bookmaker/bookmaker.h
+++ b/tools/bookmaker/bookmaker.h
@@ -76,6 +76,7 @@ enum class KeyWord {
kUint32_t,
kUint64_t,
kUint8_t,
+ kUintPtr_t,
kUnion,
kUnsigned,
kVoid,
diff --git a/tools/bookmaker/includeParser.cpp b/tools/bookmaker/includeParser.cpp
index ebc2384d61..12bd787eb8 100644
--- a/tools/bookmaker/includeParser.cpp
+++ b/tools/bookmaker/includeParser.cpp
@@ -50,6 +50,7 @@ const IncludeKey kKeyWords[] = {
{ "uint32_t", KeyWord::kUint32_t, KeyProperty::kNumber },
{ "uint64_t", KeyWord::kUint64_t, KeyProperty::kNumber },
{ "uint8_t", KeyWord::kUint8_t, KeyProperty::kNumber },
+ { "uintptr_t", KeyWord::kUintPtr_t, KeyProperty::kNumber },
{ "union", KeyWord::kUnion, KeyProperty::kObject },
{ "unsigned", KeyWord::kUnsigned, KeyProperty::kNumber },
{ "void", KeyWord::kVoid, KeyProperty::kNumber },
diff --git a/tools/bookmaker/includeWriter.cpp b/tools/bookmaker/includeWriter.cpp
index b183a958ec..62e8205e3d 100644
--- a/tools/bookmaker/includeWriter.cpp
+++ b/tools/bookmaker/includeWriter.cpp
@@ -1018,6 +1018,7 @@ void IncludeWriter::structSizeMembers(const Definition& child) {
case KeyWord::kUint16_t:
case KeyWord::kUint32_t:
case KeyWord::kUint64_t:
+ case KeyWord::kUintPtr_t:
case KeyWord::kSize_t:
case KeyWord::kFloat:
case KeyWord::kBool:
@@ -1502,6 +1503,7 @@ bool IncludeWriter::populate(Definition* def, ParentPair* prevPair, RootDefiniti
case KeyWord::kUint16_t:
case KeyWord::kUint32_t:
case KeyWord::kUint64_t:
+ case KeyWord::kUintPtr_t:
case KeyWord::kUnsigned:
case KeyWord::kSize_t:
case KeyWord::kFloat:
diff --git a/tools/bookmaker/parserCommon.cpp b/tools/bookmaker/parserCommon.cpp
index 0ce45dc1ff..3733aed366 100644
--- a/tools/bookmaker/parserCommon.cpp
+++ b/tools/bookmaker/parserCommon.cpp
@@ -23,6 +23,13 @@ bool ParserCommon::parseFile(const char* fileOrPath, const char* suffix, OneFile
} else if (OneFile::kNo == oneFile) {
SkOSFile::Iter it(fileOrPath, suffix);
for (SkString file; it.next(&file); ) {
+ // FIXME: skip difficult file for now
+ if (string::npos != string(file.c_str()).find("SkFontArguments")) {
+ continue;
+ }
+ if (string::npos != string(file.c_str()).find("SkFontStyle")) {
+ continue;
+ }
SkString p = SkOSPath::Join(fileOrPath, file.c_str());
const char* hunk = p.c_str();
if (!SkStrEndsWith(hunk, suffix)) {