Constify SkFlattenable::getFactory().
This allows us to also constify the argument of
SkFlattenableWriteBuffer::writeFlattenable() - which I've recently found
myself const-casting for no apparent good reason.
R=bungeman@google.com, mtklein@google.com, reed@google.com
Author: fmalita@chromium.org
Review URL: https://codereview.chromium.org/29143005
git-svn-id: http://skia.googlecode.com/svn/trunk@11862 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/core/SkFlattenable.h b/include/core/SkFlattenable.h
index 58e69fd..6cc76db 100644
--- a/include/core/SkFlattenable.h
+++ b/include/core/SkFlattenable.h
@@ -27,10 +27,10 @@
}
#define SK_DECLARE_UNFLATTENABLE_OBJECT() \
- virtual Factory getFactory() SK_OVERRIDE { return NULL; }
+ virtual Factory getFactory() const SK_OVERRIDE { return NULL; }
#define SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(flattenable) \
- virtual Factory getFactory() SK_OVERRIDE { return CreateProc; } \
+ virtual Factory getFactory() const SK_OVERRIDE { return CreateProc; } \
static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer) { \
return SkNEW_ARGS(flattenable, (buffer)); \
}
@@ -53,7 +53,7 @@
to recreate your class given a buffer (previously written to by your
override of flatten().
*/
- virtual Factory getFactory() = 0;
+ virtual Factory getFactory() const = 0;
static Factory NameToFactory(const char name[]);
static const char* FactoryToName(Factory);
diff --git a/include/core/SkFlattenableBuffers.h b/include/core/SkFlattenableBuffers.h
index 51016c7..d71f7c0 100644
--- a/include/core/SkFlattenableBuffers.h
+++ b/include/core/SkFlattenableBuffers.h
@@ -182,7 +182,7 @@
SkPaint::TextEncoding encoding) = 0;
// common data structures
- virtual void writeFlattenable(SkFlattenable* flattenable) = 0;
+ virtual void writeFlattenable(const SkFlattenable* flattenable) = 0;
virtual void writeColor(const SkColor& color) = 0;
virtual void writeColorArray(const SkColor* color, uint32_t count) = 0;
virtual void writePoint(const SkPoint& point) = 0;
@@ -222,7 +222,7 @@
protected:
// A helper function so that each subclass does not have to be a friend of SkFlattenable
- void flattenObject(SkFlattenable* obj, SkFlattenableWriteBuffer& buffer);
+ void flattenObject(const SkFlattenable* obj, SkFlattenableWriteBuffer& buffer);
uint32_t fFlags;
};
diff --git a/include/effects/SkDashPathEffect.h b/include/effects/SkDashPathEffect.h
index 9c0775d..4e83f45 100644
--- a/include/effects/SkDashPathEffect.h
+++ b/include/effects/SkDashPathEffect.h
@@ -47,7 +47,7 @@
const SkStrokeRec&, const SkMatrix&,
const SkRect*) const SK_OVERRIDE;
- virtual Factory getFactory() SK_OVERRIDE;
+ virtual Factory getFactory() const SK_OVERRIDE;
static SkFlattenable* CreateProc(SkFlattenableReadBuffer&);
diff --git a/src/core/SkFlattenableBuffers.cpp b/src/core/SkFlattenableBuffers.cpp
index 50a47d5..5167c2e 100644
--- a/src/core/SkFlattenableBuffers.cpp
+++ b/src/core/SkFlattenableBuffers.cpp
@@ -51,6 +51,7 @@
paint.flatten(*this);
}
-void SkFlattenableWriteBuffer::flattenObject(SkFlattenable* obj, SkFlattenableWriteBuffer& buffer) {
+void SkFlattenableWriteBuffer::flattenObject(const SkFlattenable* obj,
+ SkFlattenableWriteBuffer& buffer) {
obj->flatten(buffer);
}
diff --git a/src/core/SkOrderedWriteBuffer.cpp b/src/core/SkOrderedWriteBuffer.cpp
index 64f5219..9c31b4c 100644
--- a/src/core/SkOrderedWriteBuffer.cpp
+++ b/src/core/SkOrderedWriteBuffer.cpp
@@ -253,7 +253,7 @@
}
}
-void SkOrderedWriteBuffer::writeFlattenable(SkFlattenable* flattenable) {
+void SkOrderedWriteBuffer::writeFlattenable(const SkFlattenable* flattenable) {
/*
* If we have a factoryset, then the first 32bits tell us...
* 0: failure to write the flattenable
diff --git a/src/core/SkOrderedWriteBuffer.h b/src/core/SkOrderedWriteBuffer.h
index 277b7bf..f3b414e 100644
--- a/src/core/SkOrderedWriteBuffer.h
+++ b/src/core/SkOrderedWriteBuffer.h
@@ -59,7 +59,7 @@
virtual void writeEncodedString(const void* value, size_t byteLength,
SkPaint::TextEncoding encoding) SK_OVERRIDE;
- virtual void writeFlattenable(SkFlattenable* flattenable) SK_OVERRIDE;
+ virtual void writeFlattenable(const SkFlattenable* flattenable) SK_OVERRIDE;
virtual void writeColor(const SkColor& color) SK_OVERRIDE;
virtual void writeColorArray(const SkColor* color, uint32_t count) SK_OVERRIDE;
virtual void writePoint(const SkPoint& point) SK_OVERRIDE;
diff --git a/src/effects/SkColorFilters.cpp b/src/effects/SkColorFilters.cpp
index 41a201e..a821129 100644
--- a/src/effects/SkColorFilters.cpp
+++ b/src/effects/SkColorFilters.cpp
@@ -498,7 +498,7 @@
virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE {}
- virtual Factory getFactory() {
+ virtual Factory getFactory() const {
return CreateProc;
}
diff --git a/src/effects/SkDashPathEffect.cpp b/src/effects/SkDashPathEffect.cpp
index be06591..4aa46ab 100644
--- a/src/effects/SkDashPathEffect.cpp
+++ b/src/effects/SkDashPathEffect.cpp
@@ -528,7 +528,7 @@
return true;
}
-SkFlattenable::Factory SkDashPathEffect::getFactory() {
+SkFlattenable::Factory SkDashPathEffect::getFactory() const {
return fInitialDashLength < 0 ? NULL : CreateProc;
}