flatten/unflatten custom fields for 2-point gradient



git-svn-id: http://skia.googlecode.com/svn/trunk@423 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkGradientShader.cpp b/src/effects/SkGradientShader.cpp
index a30de6a..780ad18 100644
--- a/src/effects/SkGradientShader.cpp
+++ b/src/effects/SkGradientShader.cpp
@@ -1330,8 +1330,28 @@
         return SkNEW_ARGS(Two_Point_Radial_Gradient, (buffer));
     }
 
+    virtual void flatten(SkFlattenableWriteBuffer& buffer) {
+        this->INHERITED::flatten(buffer);
+        buffer.writeScalar(fDiff.fX);
+        buffer.writeScalar(fDiff.fY);
+        buffer.writeScalar(fStartRadius);
+        buffer.writeScalar(fDiffRadius);
+        buffer.writeScalar(fSr2D2);
+        buffer.writeScalar(fA);
+        buffer.writeScalar(fOneOverTwoA);
+    }
+    
 protected:
-    Two_Point_Radial_Gradient(SkFlattenableReadBuffer& buffer) : Gradient_Shader(buffer) {};
+    Two_Point_Radial_Gradient(SkFlattenableReadBuffer& buffer)
+            : Gradient_Shader(buffer) {
+        fDiff.fX = buffer.readScalar();
+        fDiff.fY = buffer.readScalar();
+        fStartRadius = buffer.readScalar();
+        fDiffRadius = buffer.readScalar();
+        fSr2D2 = buffer.readScalar();
+        fA = buffer.readScalar();
+        fOneOverTwoA = buffer.readScalar();
+    };
     virtual Factory getFactory() { return CreateProc; }
     virtual void onCacheReset() {}