Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(269)

Side by Side Diff: src/effects/SkPerlinNoiseShader.cpp

Issue 395603002: Simplify flattening to just write enough to call the factory (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/effects/SkOffsetImageFilter.cpp ('k') | src/effects/SkPictureImageFilter.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkDither.h" 8 #include "SkDither.h"
9 #include "SkPerlinNoiseShader.h" 9 #include "SkPerlinNoiseShader.h"
10 #include "SkColorFilter.h" 10 #include "SkColorFilter.h"
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 , fBaseFrequencyX(baseFrequencyX) 280 , fBaseFrequencyX(baseFrequencyX)
281 , fBaseFrequencyY(baseFrequencyY) 281 , fBaseFrequencyY(baseFrequencyY)
282 , fNumOctaves(numOctaves > 255 ? 255 : numOctaves/*[0,255] octaves allowed*/) 282 , fNumOctaves(numOctaves > 255 ? 255 : numOctaves/*[0,255] octaves allowed*/)
283 , fSeed(seed) 283 , fSeed(seed)
284 , fTileSize(NULL == tileSize ? SkISize::Make(0, 0) : *tileSize) 284 , fTileSize(NULL == tileSize ? SkISize::Make(0, 0) : *tileSize)
285 , fStitchTiles(!fTileSize.isEmpty()) 285 , fStitchTiles(!fTileSize.isEmpty())
286 { 286 {
287 SkASSERT(numOctaves >= 0 && numOctaves < 256); 287 SkASSERT(numOctaves >= 0 && numOctaves < 256);
288 } 288 }
289 289
290 SkPerlinNoiseShader::SkPerlinNoiseShader(SkReadBuffer& buffer) 290 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
291 : INHERITED(buffer) 291 SkPerlinNoiseShader::SkPerlinNoiseShader(SkReadBuffer& buffer) : INHERITED(buffe r) {
292 {
293 fType = (SkPerlinNoiseShader::Type) buffer.readInt(); 292 fType = (SkPerlinNoiseShader::Type) buffer.readInt();
294 fBaseFrequencyX = buffer.readScalar(); 293 fBaseFrequencyX = buffer.readScalar();
295 fBaseFrequencyY = buffer.readScalar(); 294 fBaseFrequencyY = buffer.readScalar();
296 fNumOctaves = buffer.readInt(); 295 fNumOctaves = buffer.readInt();
297 fSeed = buffer.readScalar(); 296 fSeed = buffer.readScalar();
298 fStitchTiles = buffer.readBool(); 297 fStitchTiles = buffer.readBool();
299 fTileSize.fWidth = buffer.readInt(); 298 fTileSize.fWidth = buffer.readInt();
300 fTileSize.fHeight = buffer.readInt(); 299 fTileSize.fHeight = buffer.readInt();
301 buffer.validate(perlin_noise_type_is_valid(fType) && 300 buffer.validate(perlin_noise_type_is_valid(fType) &&
302 (fNumOctaves >= 0) && (fNumOctaves <= 255) && 301 (fNumOctaves >= 0) && (fNumOctaves <= 255) &&
303 (fStitchTiles != fTileSize.isEmpty())); 302 (fStitchTiles != fTileSize.isEmpty()));
304 } 303 }
304 #endif
305 305
306 SkPerlinNoiseShader::~SkPerlinNoiseShader() { 306 SkPerlinNoiseShader::~SkPerlinNoiseShader() {
307 } 307 }
308 308
309 SkFlattenable* SkPerlinNoiseShader::CreateProc(SkReadBuffer& buffer) {
310 Type type = (Type)buffer.readInt();
311 SkScalar freqX = buffer.readScalar();
312 SkScalar freqY = buffer.readScalar();
313 int octaves = buffer.readInt();
314 SkScalar seed = buffer.readScalar();
315 SkISize tileSize;
316 tileSize.fWidth = buffer.readInt();
317 tileSize.fHeight = buffer.readInt();
318
319 switch (type) {
320 case kFractalNoise_Type:
321 return SkPerlinNoiseShader::CreateFractalNoise(freqX, freqY, octaves , seed, &tileSize);
322 case kTurbulence_Type:
323 return SkPerlinNoiseShader::CreateTubulence(freqX, freqY, octaves, s eed, &tileSize);
324 default:
325 return NULL;
326 }
327 }
328
309 void SkPerlinNoiseShader::flatten(SkWriteBuffer& buffer) const { 329 void SkPerlinNoiseShader::flatten(SkWriteBuffer& buffer) const {
310 this->INHERITED::flatten(buffer);
311 buffer.writeInt((int) fType); 330 buffer.writeInt((int) fType);
312 buffer.writeScalar(fBaseFrequencyX); 331 buffer.writeScalar(fBaseFrequencyX);
313 buffer.writeScalar(fBaseFrequencyY); 332 buffer.writeScalar(fBaseFrequencyY);
314 buffer.writeInt(fNumOctaves); 333 buffer.writeInt(fNumOctaves);
315 buffer.writeScalar(fSeed); 334 buffer.writeScalar(fSeed);
316 buffer.writeBool(fStitchTiles);
317 buffer.writeInt(fTileSize.fWidth); 335 buffer.writeInt(fTileSize.fWidth);
318 buffer.writeInt(fTileSize.fHeight); 336 buffer.writeInt(fTileSize.fHeight);
319 } 337 }
320 338
321 SkScalar SkPerlinNoiseShader::PerlinNoiseShaderContext::noise2D( 339 SkScalar SkPerlinNoiseShader::PerlinNoiseShaderContext::noise2D(
322 int channel, const StitchData& stitchData, const SkPoint& noiseVector) c onst { 340 int channel, const StitchData& stitchData, const SkPoint& noiseVector) c onst {
323 struct Noise { 341 struct Noise {
324 int noisePositionIntegerValue; 342 int noisePositionIntegerValue;
325 int nextNoisePositionIntegerValue; 343 int nextNoisePositionIntegerValue;
326 SkScalar noisePositionFractionValue; 344 SkScalar noisePositionFractionValue;
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 str->append(" seed: "); 1061 str->append(" seed: ");
1044 str->appendScalar(fSeed); 1062 str->appendScalar(fSeed);
1045 str->append(" stitch tiles: "); 1063 str->append(" stitch tiles: ");
1046 str->append(fStitchTiles ? "true " : "false "); 1064 str->append(fStitchTiles ? "true " : "false ");
1047 1065
1048 this->INHERITED::toString(str); 1066 this->INHERITED::toString(str);
1049 1067
1050 str->append(")"); 1068 str->append(")");
1051 } 1069 }
1052 #endif 1070 #endif
OLDNEW
« no previous file with comments | « src/effects/SkOffsetImageFilter.cpp ('k') | src/effects/SkPictureImageFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698