Cleanup code related to SkFlattenable::flatten()
The following changes were made by this CL:
1. Make flatten() a protected method as callers should use
SkFlattenableWriteBuffer to flatten an object
2. Make flatten a const method (including subclasses)
3. Mark subclass implementation of flatten with SK_OVERRIDE
4. Ensure overridden flatten impls call their parent
5. Remove no-op implementations of flatten from subclasses
Additionally, if necessary the unflattening constructor was
also moved to the protected section of the subclasses
header if it was not already there.
git-svn-id: http://skia.googlecode.com/svn/trunk@3540 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkGradientShader.cpp b/src/effects/SkGradientShader.cpp
index 0fcb514..a93bd52 100644
--- a/src/effects/SkGradientShader.cpp
+++ b/src/effects/SkGradientShader.cpp
@@ -174,6 +174,8 @@
protected:
Gradient_Shader(SkFlattenableReadBuffer& );
+ virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
+
SkUnitMapper* fMapper;
SkMatrix fPtsToUnit; // set by subclass
SkMatrix fDstToIndex;
@@ -190,7 +192,6 @@
};
Rec* fRecs;
- virtual void flatten(SkFlattenableWriteBuffer& );
const uint16_t* getCache16() const;
const SkPMColor* getCache32() const;
@@ -404,7 +405,7 @@
fColorsAreOpaque = colorAlpha == 0xFF;
}
-void Gradient_Shader::flatten(SkFlattenableWriteBuffer& buffer) {
+void Gradient_Shader::flatten(SkFlattenableWriteBuffer& buffer) const {
this->INHERITED::flatten(buffer);
buffer.writeFlattenable(fMapper);
buffer.write32(fColorCount);
@@ -849,7 +850,15 @@
SkScalar* twoPointRadialParams) const SK_OVERRIDE;
virtual GradientType asAGradient(GradientInfo* info) const SK_OVERRIDE;
- virtual void flatten(SkFlattenableWriteBuffer& buffer) SK_OVERRIDE {
+ SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Linear_Gradient)
+
+protected:
+ Linear_Gradient(SkFlattenableReadBuffer& buffer)
+ : INHERITED(buffer),
+ fStart(unflatten_point(buffer)),
+ fEnd(unflatten_point(buffer)) {
+ }
+ virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE {
this->INHERITED::flatten(buffer);
buffer.writeScalar(fStart.fX);
buffer.writeScalar(fStart.fY);
@@ -857,15 +866,6 @@
buffer.writeScalar(fEnd.fY);
}
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Linear_Gradient)
-
-protected:
- Linear_Gradient(SkFlattenableReadBuffer& buffer)
- : Gradient_Shader(buffer),
- fStart(unflatten_point(buffer)),
- fEnd(unflatten_point(buffer)) {
- }
-
private:
typedef Gradient_Shader INHERITED;
const SkPoint fStart;
@@ -1507,21 +1507,20 @@
return kRadial_GradientType;
}
- virtual void flatten(SkFlattenableWriteBuffer& buffer) SK_OVERRIDE {
- this->INHERITED::flatten(buffer);
- buffer.writeScalar(fCenter.fX);
- buffer.writeScalar(fCenter.fY);
- buffer.writeScalar(fRadius);
- }
-
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Radial_Gradient)
protected:
Radial_Gradient(SkFlattenableReadBuffer& buffer)
- : Gradient_Shader(buffer),
+ : INHERITED(buffer),
fCenter(unflatten_point(buffer)),
fRadius(buffer.readScalar()) {
}
+ virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE {
+ this->INHERITED::flatten(buffer);
+ buffer.writeScalar(fCenter.fX);
+ buffer.writeScalar(fCenter.fY);
+ buffer.writeScalar(fRadius);
+ }
private:
typedef Gradient_Shader INHERITED;
@@ -2039,7 +2038,19 @@
return true;
}
- virtual void flatten(SkFlattenableWriteBuffer& buffer) SK_OVERRIDE {
+ SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Two_Point_Radial_Gradient)
+
+protected:
+ Two_Point_Radial_Gradient(SkFlattenableReadBuffer& buffer)
+ : INHERITED(buffer),
+ fCenter1(unflatten_point(buffer)),
+ fCenter2(unflatten_point(buffer)),
+ fRadius1(buffer.readScalar()),
+ fRadius2(buffer.readScalar()) {
+ init();
+ };
+
+ virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE {
this->INHERITED::flatten(buffer);
buffer.writeScalar(fCenter1.fX);
buffer.writeScalar(fCenter1.fY);
@@ -2049,18 +2060,6 @@
buffer.writeScalar(fRadius2);
}
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Two_Point_Radial_Gradient)
-
-protected:
- Two_Point_Radial_Gradient(SkFlattenableReadBuffer& buffer)
- : Gradient_Shader(buffer),
- fCenter1(unflatten_point(buffer)),
- fCenter2(unflatten_point(buffer)),
- fRadius1(buffer.readScalar()),
- fRadius2(buffer.readScalar()) {
- init();
- };
-
private:
typedef Gradient_Shader INHERITED;
const SkPoint fCenter1;
@@ -2125,19 +2124,18 @@
return kSweep_GradientType;
}
- virtual void flatten(SkFlattenableWriteBuffer& buffer) SK_OVERRIDE {
- this->INHERITED::flatten(buffer);
- buffer.writeScalar(fCenter.fX);
- buffer.writeScalar(fCenter.fY);
- }
-
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Sweep_Gradient)
protected:
Sweep_Gradient(SkFlattenableReadBuffer& buffer)
- : Gradient_Shader(buffer),
+ : INHERITED(buffer),
fCenter(unflatten_point(buffer)) {
}
+ virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE {
+ this->INHERITED::flatten(buffer);
+ buffer.writeScalar(fCenter.fX);
+ buffer.writeScalar(fCenter.fY);
+ }
private:
typedef Gradient_Shader INHERITED;