diff options
author | msarett <msarett@google.com> | 2016-04-04 13:53:02 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-04 13:53:02 -0700 |
commit | 99d9231f6a4cb6b85b8637e9d8ae32f8bd7c466f (patch) | |
tree | afd7ff51e10b4860da79285cb19fb28d65c7f52d | |
parent | c19201f315d0fd91a6320c48ce18e5a87c4e8bda (diff) |
Delete SkFlattenable::Type
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1834303003
Review URL: https://codereview.chromium.org/1834303003
-rw-r--r-- | gm/imagefiltersbase.cpp | 6 | ||||
-rw-r--r-- | gm/imagefiltersgraph.cpp | 3 | ||||
-rw-r--r-- | include/core/SkColorFilter.h | 1 | ||||
-rw-r--r-- | include/core/SkDrawLooper.h | 1 | ||||
-rw-r--r-- | include/core/SkFlattenable.h | 27 | ||||
-rw-r--r-- | include/core/SkFlattenableSerialization.h | 3 | ||||
-rw-r--r-- | include/core/SkImageFilter.h | 1 | ||||
-rw-r--r-- | include/core/SkMaskFilter.h | 1 | ||||
-rw-r--r-- | include/core/SkPathEffect.h | 1 | ||||
-rw-r--r-- | include/core/SkRasterizer.h | 2 | ||||
-rw-r--r-- | include/core/SkShader.h | 1 | ||||
-rw-r--r-- | include/core/SkXfermode.h | 1 | ||||
-rw-r--r-- | samplecode/SampleFilterFuzz.cpp | 3 | ||||
-rw-r--r-- | src/core/SkFlattenable.cpp | 20 | ||||
-rw-r--r-- | src/core/SkFlattenableSerialization.cpp | 5 | ||||
-rw-r--r-- | src/core/SkReadBuffer.cpp | 6 | ||||
-rw-r--r-- | src/core/SkReadBuffer.h | 4 | ||||
-rw-r--r-- | src/core/SkScalerContext.cpp | 14 | ||||
-rw-r--r-- | src/core/SkValidatingReadBuffer.cpp | 8 | ||||
-rw-r--r-- | src/core/SkValidatingReadBuffer.h | 2 | ||||
-rw-r--r-- | src/utils/SkBitmapSourceDeserializer.h | 1 | ||||
-rw-r--r-- | tests/ImageFilterTest.cpp | 4 | ||||
-rw-r--r-- | tests/SerializationTest.cpp | 2 | ||||
-rw-r--r-- | tools/chrome_fuzz.cpp | 2 |
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) { |