aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar msarett <msarett@google.com>2016-04-04 13:53:02 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-04 13:53:02 -0700
commit99d9231f6a4cb6b85b8637e9d8ae32f8bd7c466f (patch)
treeafd7ff51e10b4860da79285cb19fb28d65c7f52d
parentc19201f315d0fd91a6320c48ce18e5a87c4e8bda (diff)
Delete SkFlattenable::Type
-rw-r--r--gm/imagefiltersbase.cpp6
-rw-r--r--gm/imagefiltersgraph.cpp3
-rw-r--r--include/core/SkColorFilter.h1
-rw-r--r--include/core/SkDrawLooper.h1
-rw-r--r--include/core/SkFlattenable.h27
-rw-r--r--include/core/SkFlattenableSerialization.h3
-rw-r--r--include/core/SkImageFilter.h1
-rw-r--r--include/core/SkMaskFilter.h1
-rw-r--r--include/core/SkPathEffect.h1
-rw-r--r--include/core/SkRasterizer.h2
-rw-r--r--include/core/SkShader.h1
-rw-r--r--include/core/SkXfermode.h1
-rw-r--r--samplecode/SampleFilterFuzz.cpp3
-rw-r--r--src/core/SkFlattenable.cpp20
-rw-r--r--src/core/SkFlattenableSerialization.cpp5
-rw-r--r--src/core/SkReadBuffer.cpp6
-rw-r--r--src/core/SkReadBuffer.h4
-rw-r--r--src/core/SkScalerContext.cpp14
-rw-r--r--src/core/SkValidatingReadBuffer.cpp8
-rw-r--r--src/core/SkValidatingReadBuffer.h2
-rw-r--r--src/utils/SkBitmapSourceDeserializer.h1
-rw-r--r--tests/ImageFilterTest.cpp4
-rw-r--r--tests/SerializationTest.cpp2
-rw-r--r--tools/chrome_fuzz.cpp2
24 files changed, 24 insertions, 95 deletions
diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp
index e2e92356e0..3cb43a8392 100644
--- a/gm/imagefiltersbase.cpp
+++ b/gm/imagefiltersbase.cpp
@@ -23,8 +23,7 @@ public:
public:
Registrar() {
SkFlattenable::Register("FailImageFilter",
- FailImageFilter::CreateProc,
- FailImageFilter::GetFlattenableType());
+ FailImageFilter::CreateProc);
}
};
static sk_sp<SkImageFilter> Make() {
@@ -66,8 +65,7 @@ public:
public:
Registrar() {
SkFlattenable::Register("IdentityImageFilter",
- IdentityImageFilter::CreateProc,
- IdentityImageFilter::GetFlattenableType());
+ IdentityImageFilter::CreateProc);
}
};
static sk_sp<SkImageFilter> Make(sk_sp<SkImageFilter> input) {
diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp
index e7bcf707c3..f49d38218c 100644
--- a/gm/imagefiltersgraph.cpp
+++ b/gm/imagefiltersgraph.cpp
@@ -32,8 +32,7 @@ public:
public:
Registrar() {
SkFlattenable::Register("SimpleOffsetFilter",
- SimpleOffsetFilter::CreateProc,
- SimpleOffsetFilter::GetFlattenableType());
+ SimpleOffsetFilter::CreateProc);
}
};
static sk_sp<SkImageFilter> Make(SkScalar dx, SkScalar dy, sk_sp<SkImageFilter> input) {
diff --git a/include/core/SkColorFilter.h b/include/core/SkColorFilter.h
index 7ac335fb10..5cfbf27f7f 100644
--- a/include/core/SkColorFilter.h
+++ b/include/core/SkColorFilter.h
@@ -162,7 +162,6 @@ public:
SK_TO_STRING_PUREVIRT()
SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
- SK_DEFINE_FLATTENABLE_TYPE(SkColorFilter)
protected:
SkColorFilter() {}
diff --git a/include/core/SkDrawLooper.h b/include/core/SkDrawLooper.h
index 28d7d8beef..e59e52f05c 100644
--- a/include/core/SkDrawLooper.h
+++ b/include/core/SkDrawLooper.h
@@ -107,7 +107,6 @@ public:
virtual bool asABlurShadow(BlurShadowRec*) const;
SK_TO_STRING_PUREVIRT()
- SK_DEFINE_FLATTENABLE_TYPE(SkDrawLooper)
protected:
SkDrawLooper() {}
diff --git a/include/core/SkFlattenable.h b/include/core/SkFlattenable.h
index c76f119c13..4d45e246a5 100644
--- a/include/core/SkFlattenable.h
+++ b/include/core/SkFlattenable.h
@@ -43,8 +43,7 @@ class SkPrivateEffectInitializer;
}
#define SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(flattenable) \
- SkFlattenable::Register(#flattenable, flattenable::CreateProc, \
- flattenable::GetFlattenableType());
+ SkFlattenable::Register(#flattenable, flattenable::CreateProc);
#define SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(flattenable) \
private: \
@@ -53,14 +52,6 @@ class SkPrivateEffectInitializer;
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; \
- }
-
/** \class SkFlattenable
SkFlattenable is the base class for objects that need to be flattened
@@ -69,19 +60,6 @@ class SkPrivateEffectInitializer;
*/
class SK_API SkFlattenable : public SkRefCnt {
public:
- enum Type {
- kSkColorFilter_Type,
- kSkDrawLooper_Type,
- kSkImageFilter_Type,
- kSkMaskFilter_Type,
- kSkPathEffect_Type,
- kSkPixelRef_Type,
- kSkRasterizer_Type,
- kSkShader_Type,
- kSkUnused_Type, // used to be SkUnitMapper
- kSkXfermode_Type,
- };
-
typedef sk_sp<SkFlattenable> (*Factory)(SkReadBuffer&);
SkFlattenable() {}
@@ -98,9 +76,8 @@ public:
static Factory NameToFactory(const char name[]);
static const char* FactoryToName(Factory);
- static bool NameToType(const char name[], Type* type);
- static void Register(const char name[], Factory, Type);
+ static void Register(const char name[], Factory);
/**
* Override this if your subclass needs to record data that it will need to recreate itself
diff --git a/include/core/SkFlattenableSerialization.h b/include/core/SkFlattenableSerialization.h
index ffb1b5ae97..6d0f6818f7 100644
--- a/include/core/SkFlattenableSerialization.h
+++ b/include/core/SkFlattenableSerialization.h
@@ -13,7 +13,6 @@
class SkData;
SK_API SkData* SkValidatingSerializeFlattenable(SkFlattenable*);
-SK_API SkFlattenable* SkValidatingDeserializeFlattenable(const void* data, size_t size,
- SkFlattenable::Type type);
+SK_API SkFlattenable* SkValidatingDeserializeFlattenable(const void* data, size_t size);
#endif
diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h
index 4493d282dd..cb2e7eaa16 100644
--- a/include/core/SkImageFilter.h
+++ b/include/core/SkImageFilter.h
@@ -292,7 +292,6 @@ public:
#endif
SK_TO_STRING_PUREVIRT()
- SK_DEFINE_FLATTENABLE_TYPE(SkImageFilter)
protected:
class Common {
diff --git a/include/core/SkMaskFilter.h b/include/core/SkMaskFilter.h
index 8d3d1caa67..405f44f56d 100644
--- a/include/core/SkMaskFilter.h
+++ b/include/core/SkMaskFilter.h
@@ -171,7 +171,6 @@ public:
virtual bool asABlur(BlurRec*) const;
SK_TO_STRING_PUREVIRT()
- SK_DEFINE_FLATTENABLE_TYPE(SkMaskFilter)
protected:
SkMaskFilter() {}
diff --git a/include/core/SkPathEffect.h b/include/core/SkPathEffect.h
index fd5957378a..6175fb0332 100644
--- a/include/core/SkPathEffect.h
+++ b/include/core/SkPathEffect.h
@@ -129,7 +129,6 @@ public:
virtual DashType asADash(DashInfo* info) const;
SK_TO_STRING_PUREVIRT()
- SK_DEFINE_FLATTENABLE_TYPE(SkPathEffect)
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
/// Override for subclasses as appropriate.
diff --git a/include/core/SkRasterizer.h b/include/core/SkRasterizer.h
index 1881ccef24..b065c449ba 100644
--- a/include/core/SkRasterizer.h
+++ b/include/core/SkRasterizer.h
@@ -26,8 +26,6 @@ public:
const SkIRect* clipBounds, SkMaskFilter* filter,
SkMask* mask, SkMask::CreateMode mode) const;
- SK_DEFINE_FLATTENABLE_TYPE(SkRasterizer)
-
protected:
SkRasterizer() {}
virtual bool onRasterize(const SkPath& path, const SkMatrix& matrix,
diff --git a/include/core/SkShader.h b/include/core/SkShader.h
index 0de53ad652..1d89f61832 100644
--- a/include/core/SkShader.h
+++ b/include/core/SkShader.h
@@ -456,7 +456,6 @@ public:
virtual SkShader* refAsALocalMatrixShader(SkMatrix* localMatrix) const;
SK_TO_STRING_VIRT()
- SK_DEFINE_FLATTENABLE_TYPE(SkShader)
protected:
void flatten(SkWriteBuffer&) const override;
diff --git a/include/core/SkXfermode.h b/include/core/SkXfermode.h
index db8d570ce0..7870f27f1a 100644
--- a/include/core/SkXfermode.h
+++ b/include/core/SkXfermode.h
@@ -234,7 +234,6 @@ public:
SK_TO_STRING_PUREVIRT()
SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
- SK_DEFINE_FLATTENABLE_TYPE(SkXfermode)
enum D32Flags {
kSrcIsOpaque_D32Flag = 1 << 0,
diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp
index 1b7d30be1d..57e7de57ae 100644
--- a/samplecode/SampleFilterFuzz.cpp
+++ b/samplecode/SampleFilterFuzz.cpp
@@ -799,8 +799,7 @@ static SkImageFilter* make_serialized_image_filter() {
}
}
#endif // SK_ADD_RANDOM_BIT_FLIPS
- SkFlattenable* flattenable = SkValidatingDeserializeFlattenable(ptr, len,
- SkImageFilter::GetFlattenableType());
+ SkFlattenable* flattenable = SkValidatingDeserializeFlattenable(ptr, len);
return static_cast<SkImageFilter*>(flattenable);
}
diff --git a/src/core/SkFlattenable.cpp b/src/core/SkFlattenable.cpp
index c759a1ab38..506a7b14e7 100644
--- a/src/core/SkFlattenable.cpp
+++ b/src/core/SkFlattenable.cpp
@@ -53,20 +53,18 @@ void SkRefCntSet::decPtr(void* ptr) {
struct Entry {
const char* fName;
SkFlattenable::Factory fFactory;
- SkFlattenable::Type fType;
};
static int gCount = 0;
static Entry gEntries[MAX_ENTRY_COUNT];
-void SkFlattenable::Register(const char name[], Factory factory, SkFlattenable::Type type) {
+void SkFlattenable::Register(const char name[], Factory factory) {
SkASSERT(name);
SkASSERT(factory);
SkASSERT(gCount < MAX_ENTRY_COUNT);
gEntries[gCount].fName = name;
gEntries[gCount].fFactory = factory;
- gEntries[gCount].fType = type;
gCount += 1;
}
@@ -94,22 +92,6 @@ SkFlattenable::Factory SkFlattenable::NameToFactory(const char name[]) {
return nullptr;
}
-bool SkFlattenable::NameToType(const char name[], SkFlattenable::Type* type) {
- SkASSERT(type);
- InitializeFlattenablesIfNeeded();
-#ifdef SK_DEBUG
- report_no_entries(__FUNCTION__);
-#endif
- const Entry* entries = gEntries;
- for (int i = gCount - 1; i >= 0; --i) {
- if (strcmp(entries[i].fName, name) == 0) {
- *type = entries[i].fType;
- return true;
- }
- }
- return false;
-}
-
const char* SkFlattenable::FactoryToName(Factory fact) {
InitializeFlattenablesIfNeeded();
#ifdef SK_DEBUG
diff --git a/src/core/SkFlattenableSerialization.cpp b/src/core/SkFlattenableSerialization.cpp
index e9ce09ff1f..748e20a9c2 100644
--- a/src/core/SkFlattenableSerialization.cpp
+++ b/src/core/SkFlattenableSerialization.cpp
@@ -20,8 +20,7 @@ SkData* SkValidatingSerializeFlattenable(SkFlattenable* flattenable) {
return data.release();
}
-SkFlattenable* SkValidatingDeserializeFlattenable(const void* data, size_t size,
- SkFlattenable::Type type) {
+SkFlattenable* SkValidatingDeserializeFlattenable(const void* data, size_t size) {
SkValidatingReadBuffer buffer(data, size);
- return buffer.readFlattenable(type);
+ return buffer.readFlattenable();
}
diff --git a/src/core/SkReadBuffer.cpp b/src/core/SkReadBuffer.cpp
index f220b5a9e6..d57b223700 100644
--- a/src/core/SkReadBuffer.cpp
+++ b/src/core/SkReadBuffer.cpp
@@ -329,11 +329,7 @@ SkTypeface* SkReadBuffer::readTypeface() {
}
}
-SkFlattenable* SkReadBuffer::readFlattenable(SkFlattenable::Type ft) {
- //
- // TODO: confirm that ft matches the factory we decide to use
- //
-
+SkFlattenable* SkReadBuffer::readFlattenable() {
SkFlattenable::Factory factory = nullptr;
if (fFactoryCount > 0) {
diff --git a/src/core/SkReadBuffer.h b/src/core/SkReadBuffer.h
index 7b12194fc0..cd570e18f3 100644
--- a/src/core/SkReadBuffer.h
+++ b/src/core/SkReadBuffer.h
@@ -126,9 +126,9 @@ public:
virtual void readPath(SkPath* path);
void readPaint(SkPaint* paint) { paint->unflatten(*this); }
- virtual SkFlattenable* readFlattenable(SkFlattenable::Type);
+ virtual SkFlattenable* readFlattenable();
template <typename T> sk_sp<T> readFlattenable() {
- return sk_sp<T>((T*)this->readFlattenable(T::GetFlattenableType()));
+ return sk_sp<T>((T*)this->readFlattenable());
}
sk_sp<SkColorFilter> readColorFilter() { return this->readFlattenable<SkColorFilter>(); }
sk_sp<SkDrawLooper> readDrawLooper() { return this->readFlattenable<SkDrawLooper>(); }
diff --git a/src/core/SkScalerContext.cpp b/src/core/SkScalerContext.cpp
index cf4098bbdd..3db9e30876 100644
--- a/src/core/SkScalerContext.cpp
+++ b/src/core/SkScalerContext.cpp
@@ -62,15 +62,14 @@ void SkGlyph::zeroMetrics() {
#define DUMP_RECx
#endif
-static SkFlattenable* load_flattenable(const SkDescriptor* desc, uint32_t tag,
- SkFlattenable::Type ft) {
+static SkFlattenable* load_flattenable(const SkDescriptor* desc, uint32_t tag) {
SkFlattenable* obj = nullptr;
uint32_t len;
const void* data = desc->findEntry(tag, &len);
if (data) {
SkReadBuffer buffer(data, len);
- obj = buffer.readFlattenable(ft);
+ obj = buffer.readFlattenable();
SkASSERT(buffer.offset() == buffer.size());
}
return obj;
@@ -80,12 +79,9 @@ SkScalerContext::SkScalerContext(SkTypeface* typeface, const SkDescriptor* desc)
: fRec(*static_cast<const Rec*>(desc->findEntry(kRec_SkDescriptorTag, nullptr)))
, fTypeface(SkRef(typeface))
- , fPathEffect(static_cast<SkPathEffect*>(load_flattenable(desc, kPathEffect_SkDescriptorTag,
- SkFlattenable::kSkPathEffect_Type)))
- , fMaskFilter(static_cast<SkMaskFilter*>(load_flattenable(desc, kMaskFilter_SkDescriptorTag,
- SkFlattenable::kSkMaskFilter_Type)))
- , fRasterizer(static_cast<SkRasterizer*>(load_flattenable(desc, kRasterizer_SkDescriptorTag,
- SkFlattenable::kSkRasterizer_Type)))
+ , fPathEffect(static_cast<SkPathEffect*>(load_flattenable(desc, kPathEffect_SkDescriptorTag)))
+ , fMaskFilter(static_cast<SkMaskFilter*>(load_flattenable(desc, kMaskFilter_SkDescriptorTag)))
+ , fRasterizer(static_cast<SkRasterizer*>(load_flattenable(desc, kRasterizer_SkDescriptorTag)))
// Initialize based on our settings. Subclasses can also force this.
, fGenerateImageFromPath(fRec.fFrameWidth > 0 || fPathEffect != nullptr || fRasterizer != nullptr)
diff --git a/src/core/SkValidatingReadBuffer.cpp b/src/core/SkValidatingReadBuffer.cpp
index ad4b6c409e..0ce8bf9c59 100644
--- a/src/core/SkValidatingReadBuffer.cpp
+++ b/src/core/SkValidatingReadBuffer.cpp
@@ -222,20 +222,14 @@ bool SkValidatingReadBuffer::validateAvailable(size_t size) {
return this->validate((size <= SK_MaxU32) && fReader.isAvailable(static_cast<uint32_t>(size)));
}
-SkFlattenable* SkValidatingReadBuffer::readFlattenable(SkFlattenable::Type type) {
+SkFlattenable* SkValidatingReadBuffer::readFlattenable() {
SkString name;
this->readString(&name);
if (fError) {
return nullptr;
}
- // Is this the type we wanted ?
const char* cname = name.c_str();
- SkFlattenable::Type baseType;
- if (!SkFlattenable::NameToType(cname, &baseType) || (baseType != type)) {
- return nullptr;
- }
-
SkFlattenable::Factory factory = SkFlattenable::NameToFactory(cname);
if (nullptr == factory) {
return nullptr; // writer failed to give us the flattenable
diff --git a/src/core/SkValidatingReadBuffer.h b/src/core/SkValidatingReadBuffer.h
index bcdcba5de4..4b8cdf88c0 100644
--- a/src/core/SkValidatingReadBuffer.h
+++ b/src/core/SkValidatingReadBuffer.h
@@ -39,7 +39,7 @@ public:
void* readEncodedString(size_t* length, SkPaint::TextEncoding encoding) override;
// common data structures
- SkFlattenable* readFlattenable(SkFlattenable::Type type) override;
+ SkFlattenable* readFlattenable() override;
void skipFlattenable() override;
void readPoint(SkPoint* point) override;
void readMatrix(SkMatrix* matrix) override;
diff --git a/src/utils/SkBitmapSourceDeserializer.h b/src/utils/SkBitmapSourceDeserializer.h
index e017599918..60f185e17a 100644
--- a/src/utils/SkBitmapSourceDeserializer.h
+++ b/src/utils/SkBitmapSourceDeserializer.h
@@ -14,7 +14,6 @@
// Should be removed when SKP versions which may contain SkBitmapSource records are phased out.
class SkBitmapSourceDeserializer : public SkFlattenable {
public:
- SK_DEFINE_FLATTENABLE_TYPE(SkImageFilter)
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapSource)
};
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
index e6430b4d87..c6f0433459 100644
--- a/tests/ImageFilterTest.cpp
+++ b/tests/ImageFilterTest.cpp
@@ -1089,7 +1089,7 @@ DEF_TEST(ImageFilterCrossProcessPictureImageFilter, reporter) {
// cross-process. Do this by "laundering" it through SkValidatingReadBuffer.
SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(imageFilter.get()));
SkAutoTUnref<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable(
- data->data(), data->size(), SkImageFilter::GetFlattenableType()));
+ data->data(), data->size()));
SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.get());
redPaintWithFilter.setImageFilter(unflattenedFilter);
@@ -1536,7 +1536,7 @@ DEF_TEST(ImageFilterImageSourceSerialization, reporter) {
sk_sp<SkData> data(SkValidatingSerializeFlattenable(filter.get()));
sk_sp<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable(
- data->data(), data->size(), SkImageFilter::GetFlattenableType()));
+ data->data(), data->size()));
SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.get());
REPORTER_ASSERT(reporter, unflattenedFilter);
diff --git a/tests/SerializationTest.cpp b/tests/SerializationTest.cpp
index 15b73827ae..b590fb5821 100644
--- a/tests/SerializationTest.cpp
+++ b/tests/SerializationTest.cpp
@@ -42,7 +42,7 @@ template<typename T> struct SerializationUtils {
writer.writeFlattenable(flattenable);
}
static void Read(SkValidatingReadBuffer& reader, T** flattenable) {
- *flattenable = (T*)reader.readFlattenable(T::GetFlattenableType());
+ *flattenable = (T*)reader.readFlattenable();
}
};
diff --git a/tools/chrome_fuzz.cpp b/tools/chrome_fuzz.cpp
index c59c741599..22cf088c78 100644
--- a/tools/chrome_fuzz.cpp
+++ b/tools/chrome_fuzz.cpp
@@ -31,7 +31,7 @@ static void run_test_case(const SkString& testdata, const SkBitmap& bitmap,
// This call shouldn't crash or cause ASAN to flag any memory issues
// If nothing bad happens within this call, everything is fine
SkFlattenable* flattenable = SkValidatingDeserializeFlattenable(
- testdata.c_str(), testdata.size(), SkImageFilter::GetFlattenableType());
+ testdata.c_str(), testdata.size());
// Adding some info, but the test passed if we got here without any trouble
if (flattenable != nullptr) {