Index: gm/dcshader.cpp |
diff --git a/gm/dcshader.cpp b/gm/dcshader.cpp |
index 1871e4daab4f2731cbf4e26d80f2c4d958338b66..9e9a2c27ad15a65e781fea307c6647b1eb560292 100644 |
--- a/gm/dcshader.cpp |
+++ b/gm/dcshader.cpp |
@@ -13,9 +13,11 @@ |
#include "gl/GrGLProcessor.h" |
#include "gl/builders/GrGLProgramBuilder.h" |
#include "Resources.h" |
+#include "SkReadBuffer.h" |
#include "SkShader.h" |
#include "SkStream.h" |
#include "SkTypeface.h" |
+#include "SkWriteBuffer.h" |
namespace skiagm { |
@@ -25,10 +27,11 @@ class DCShader : public SkShader { |
public: |
DCShader(const SkMatrix& matrix) : fDeviceMatrix(matrix) {} |
- // This is a custom shader, so we don't need to make it |
- // flattenable. Since this class is not part of the skia library, |
- // it wouldn't deserialize without linking this library anyway. |
- SK_DECLARE_NOT_FLATTENABLE_PROCS(DCShader) |
+ SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(DCShader); |
+ |
+ void flatten(SkWriteBuffer& buf) const SK_OVERRIDE { |
+ buf.writeMatrix(fDeviceMatrix); |
+ } |
bool asFragmentProcessor(GrContext*, const SkPaint& paint, const SkMatrix& viewM, |
const SkMatrix* localMatrix, GrColor* color, |
@@ -37,6 +40,12 @@ private: |
const SkMatrix fDeviceMatrix; |
}; |
+SkFlattenable* DCShader::CreateProc(SkReadBuffer& buf) { |
+ SkMatrix matrix; |
+ buf.readMatrix(&matrix); |
+ return SkNEW_ARGS(DCShader, (matrix)); |
+} |
+ |
class DCFP : public GrFragmentProcessor { |
public: |
DCFP(const SkMatrix& m) : fDeviceTransform(kDevice_GrCoordSet, m) { |