diff options
-rw-r--r-- | src/shaders/SkPerlinNoiseShader.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/shaders/SkPerlinNoiseShader.cpp b/src/shaders/SkPerlinNoiseShader.cpp index d864e165e5..7b457f5b32 100644 --- a/src/shaders/SkPerlinNoiseShader.cpp +++ b/src/shaders/SkPerlinNoiseShader.cpp @@ -75,6 +75,12 @@ public: , fWrapY(0) {} + StitchData(SkScalar w, SkScalar h) + : fWidth(SkTMin(SkScalarRoundToInt(w), SK_MaxS32 - kPerlinNoise)) + , fWrapX(kPerlinNoise + fWidth) + , fHeight(SkTMin(SkScalarRoundToInt(h), SK_MaxS32 - kPerlinNoise)) + , fWrapY(kPerlinNoise + fHeight) {} + bool operator==(const StitchData& other) const { return fWidth == other.fWidth && fWrapX == other.fWrapX && @@ -290,12 +296,8 @@ public: } } // Set up TurbulenceInitial stitch values. - fStitchDataInit.fWidth = - SkScalarRoundToInt(tileWidth * fBaseFrequency.fX); - fStitchDataInit.fWrapX = kPerlinNoise + fStitchDataInit.fWidth; - fStitchDataInit.fHeight = - SkScalarRoundToInt(tileHeight * fBaseFrequency.fY); - fStitchDataInit.fWrapY = kPerlinNoise + fStitchDataInit.fHeight; + fStitchDataInit = StitchData(tileWidth * fBaseFrequency.fX, + tileHeight * fBaseFrequency.fY); } public: @@ -543,10 +545,8 @@ SkScalar SkPerlinNoiseShaderImpl::PerlinNoiseShaderContext::calculateTurbulenceV ratio *= 2; if (perlinNoiseShader.fStitchTiles) { // Update stitch values - stitchData.fWidth *= 2; - stitchData.fWrapX = stitchData.fWidth + kPerlinNoise; - stitchData.fHeight *= 2; - stitchData.fWrapY = stitchData.fHeight + kPerlinNoise; + stitchData = StitchData(SkIntToScalar(stitchData.fWidth) * 2, + SkIntToScalar(stitchData.fHeight) * 2); } } |