Index: include/effects/SkPerlinNoiseShader.h |
diff --git a/include/effects/SkPerlinNoiseShader.h b/include/effects/SkPerlinNoiseShader.h |
index dfd5a8c1e72da46d4332369e98e81c7983695ca6..5b270293b16a19b70db7878e67ceb1242772e01e 100644 |
--- a/include/effects/SkPerlinNoiseShader.h |
+++ b/include/effects/SkPerlinNoiseShader.h |
@@ -72,10 +72,32 @@ |
} |
- virtual bool setContext(const SkBitmap& device, const SkPaint& paint, |
- const SkMatrix& matrix); |
- virtual void shadeSpan(int x, int y, SkPMColor[], int count) SK_OVERRIDE; |
- virtual void shadeSpan16(int x, int y, uint16_t[], int count) SK_OVERRIDE; |
+ virtual SkShader::Context* createContext( |
+ const SkBitmap& device, const SkPaint& paint, |
+ const SkMatrix& matrix, void* storage) const SK_OVERRIDE; |
+ virtual size_t contextSize() const SK_OVERRIDE; |
+ |
+ class PerlinNoiseShaderContext : public SkShader::Context { |
+ public: |
+ PerlinNoiseShaderContext(const SkPerlinNoiseShader& shader, const SkBitmap& device, |
+ const SkPaint& paint, const SkMatrix& matrix); |
+ virtual ~PerlinNoiseShaderContext() {} |
+ |
+ virtual void shadeSpan(int x, int y, SkPMColor[], int count) SK_OVERRIDE; |
+ virtual void shadeSpan16(int x, int y, uint16_t[], int count) SK_OVERRIDE; |
+ |
+ private: |
+ SkPMColor shade(const SkPoint& point, StitchData& stitchData) const; |
+ SkScalar calculateTurbulenceValueForPoint( |
+ int channel, const PaintingData& paintingData, |
+ StitchData& stitchData, const SkPoint& point) const; |
+ SkScalar noise2D(int channel, const PaintingData& paintingData, |
+ const StitchData& stitchData, const SkPoint& noiseVector) const; |
+ |
+ SkMatrix fMatrix; |
+ |
+ typedef SkShader::Context INHERITED; |
+ }; |
virtual GrEffectRef* asNewEffect(GrContext* context, const SkPaint&) const SK_OVERRIDE; |
@@ -92,14 +114,6 @@ |
const SkISize* tileSize); |
virtual ~SkPerlinNoiseShader(); |
- SkScalar noise2D(int channel, const PaintingData& paintingData, |
- const StitchData& stitchData, const SkPoint& noiseVector) const; |
- |
- SkScalar calculateTurbulenceValueForPoint(int channel, const PaintingData& paintingData, |
- StitchData& stitchData, const SkPoint& point) const; |
- |
- SkPMColor shade(const SkPoint& point, StitchData& stitchData) const; |
- |
// TODO (scroggo): Once all SkShaders are created from a factory, and we have removed the |
// constructor that creates SkPerlinNoiseShader from an SkReadBuffer, several fields can |
// be made constant. |
@@ -110,8 +124,6 @@ |
/*const*/ SkScalar fSeed; |
/*const*/ SkISize fTileSize; |
/*const*/ bool fStitchTiles; |
- // TODO (scroggo): Once setContext creates a new object, place this on that object. |
- SkMatrix fMatrix; |
PaintingData* fPaintingData; |