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

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

Issue 1316123003: Style Change: SkNEW->new; SkDELETE->delete (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-08-26 (Wednesday) 15:59:00 EDT Created 5 years, 3 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/SkMorphologyImageFilter.cpp ('k') | src/effects/SkRectShaderImageFilter.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 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 #if SK_SUPPORT_GPU 243 #if SK_SUPPORT_GPU
244 const SkBitmap& getPermutationsBitmap() const { return fPermutationsBitmap; } 244 const SkBitmap& getPermutationsBitmap() const { return fPermutationsBitmap; }
245 245
246 const SkBitmap& getNoiseBitmap() const { return fNoiseBitmap; } 246 const SkBitmap& getNoiseBitmap() const { return fNoiseBitmap; }
247 #endif 247 #endif
248 }; 248 };
249 249
250 SkShader* SkPerlinNoiseShader::CreateFractalNoise(SkScalar baseFrequencyX, SkSca lar baseFrequencyY, 250 SkShader* SkPerlinNoiseShader::CreateFractalNoise(SkScalar baseFrequencyX, SkSca lar baseFrequencyY,
251 int numOctaves, SkScalar seed, 251 int numOctaves, SkScalar seed,
252 const SkISize* tileSize) { 252 const SkISize* tileSize) {
253 return SkNEW_ARGS(SkPerlinNoiseShader, (kFractalNoise_Type, baseFrequencyX, baseFrequencyY, 253 return new SkPerlinNoiseShader(kFractalNoise_Type, baseFrequencyX, baseFrequ encyY, numOctaves,
254 numOctaves, seed, tileSize)); 254 seed, tileSize);
255 } 255 }
256 256
257 SkShader* SkPerlinNoiseShader::CreateTurbulence(SkScalar baseFrequencyX, SkScala r baseFrequencyY, 257 SkShader* SkPerlinNoiseShader::CreateTurbulence(SkScalar baseFrequencyX, SkScala r baseFrequencyY,
258 int numOctaves, SkScalar seed, 258 int numOctaves, SkScalar seed,
259 const SkISize* tileSize) { 259 const SkISize* tileSize) {
260 return SkNEW_ARGS(SkPerlinNoiseShader, (kTurbulence_Type, baseFrequencyX, ba seFrequencyY, 260 return new SkPerlinNoiseShader(kTurbulence_Type, baseFrequencyX, baseFrequen cyY, numOctaves,
261 numOctaves, seed, tileSize)); 261 seed, tileSize);
262 } 262 }
263 263
264 SkPerlinNoiseShader::SkPerlinNoiseShader(SkPerlinNoiseShader::Type type, 264 SkPerlinNoiseShader::SkPerlinNoiseShader(SkPerlinNoiseShader::Type type,
265 SkScalar baseFrequencyX, 265 SkScalar baseFrequencyX,
266 SkScalar baseFrequencyY, 266 SkScalar baseFrequencyY,
267 int numOctaves, 267 int numOctaves,
268 SkScalar seed, 268 SkScalar seed,
269 const SkISize* tileSize) 269 const SkISize* tileSize)
270 : fType(type) 270 : fType(type)
271 , fBaseFrequencyX(baseFrequencyX) 271 , fBaseFrequencyX(baseFrequencyX)
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 U8CPU rgba[4]; 422 U8CPU rgba[4];
423 for (int channel = 3; channel >= 0; --channel) { 423 for (int channel = 3; channel >= 0; --channel) {
424 rgba[channel] = SkScalarFloorToInt(255 * 424 rgba[channel] = SkScalarFloorToInt(255 *
425 calculateTurbulenceValueForPoint(channel, stitchData, newPoint)); 425 calculateTurbulenceValueForPoint(channel, stitchData, newPoint));
426 } 426 }
427 return SkPreMultiplyARGB(rgba[3], rgba[0], rgba[1], rgba[2]); 427 return SkPreMultiplyARGB(rgba[3], rgba[0], rgba[1], rgba[2]);
428 } 428 }
429 429
430 SkShader::Context* SkPerlinNoiseShader::onCreateContext(const ContextRec& rec, 430 SkShader::Context* SkPerlinNoiseShader::onCreateContext(const ContextRec& rec,
431 void* storage) const { 431 void* storage) const {
432 return SkNEW_PLACEMENT_ARGS(storage, PerlinNoiseShaderContext, (*this, rec)) ; 432 return new (storage) PerlinNoiseShaderContext(*this, rec);
433 } 433 }
434 434
435 size_t SkPerlinNoiseShader::contextSize() const { 435 size_t SkPerlinNoiseShader::contextSize() const {
436 return sizeof(PerlinNoiseShaderContext); 436 return sizeof(PerlinNoiseShaderContext);
437 } 437 }
438 438
439 SkPerlinNoiseShader::PerlinNoiseShaderContext::PerlinNoiseShaderContext( 439 SkPerlinNoiseShader::PerlinNoiseShaderContext::PerlinNoiseShaderContext(
440 const SkPerlinNoiseShader& shader, const ContextRec& rec) 440 const SkPerlinNoiseShader& shader, const ContextRec& rec)
441 : INHERITED(shader, rec) 441 : INHERITED(shader, rec)
442 { 442 {
443 SkMatrix newMatrix = *rec.fMatrix; 443 SkMatrix newMatrix = *rec.fMatrix;
444 newMatrix.preConcat(shader.getLocalMatrix()); 444 newMatrix.preConcat(shader.getLocalMatrix());
445 if (rec.fLocalMatrix) { 445 if (rec.fLocalMatrix) {
446 newMatrix.preConcat(*rec.fLocalMatrix); 446 newMatrix.preConcat(*rec.fLocalMatrix);
447 } 447 }
448 // This (1,1) translation is due to WebKit's 1 based coordinates for the noi se 448 // This (1,1) translation is due to WebKit's 1 based coordinates for the noi se
449 // (as opposed to 0 based, usually). The same adjustment is in the setData() function. 449 // (as opposed to 0 based, usually). The same adjustment is in the setData() function.
450 fMatrix.setTranslate(-newMatrix.getTranslateX() + SK_Scalar1, -newMatrix.get TranslateY() + SK_Scalar1); 450 fMatrix.setTranslate(-newMatrix.getTranslateX() + SK_Scalar1, -newMatrix.get TranslateY() + SK_Scalar1);
451 fPaintingData = SkNEW_ARGS(PaintingData, (shader.fTileSize, shader.fSeed, sh ader.fBaseFrequencyX, shader.fBaseFrequencyY, newMatrix)); 451 fPaintingData = new PaintingData(shader.fTileSize, shader.fSeed, shader.fBas eFrequencyX,
452 shader.fBaseFrequencyY, newMatrix);
452 } 453 }
453 454
454 SkPerlinNoiseShader::PerlinNoiseShaderContext::~PerlinNoiseShaderContext() { 455 SkPerlinNoiseShader::PerlinNoiseShaderContext::~PerlinNoiseShaderContext() { del ete fPaintingData; }
455 SkDELETE(fPaintingData);
456 }
457 456
458 void SkPerlinNoiseShader::PerlinNoiseShaderContext::shadeSpan( 457 void SkPerlinNoiseShader::PerlinNoiseShaderContext::shadeSpan(
459 int x, int y, SkPMColor result[], int count) { 458 int x, int y, SkPMColor result[], int count) {
460 SkPoint point = SkPoint::Make(SkIntToScalar(x), SkIntToScalar(y)); 459 SkPoint point = SkPoint::Make(SkIntToScalar(x), SkIntToScalar(y));
461 StitchData stitchData; 460 StitchData stitchData;
462 for (int i = 0; i < count; ++i) { 461 for (int i = 0; i < count; ++i) {
463 result[i] = shade(point, stitchData); 462 result[i] = shade(point, stitchData);
464 point.fX += SK_Scalar1; 463 point.fX += SK_Scalar1;
465 } 464 }
466 } 465 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 ///////////////////////////////////////////////////////////////////// 509 /////////////////////////////////////////////////////////////////////
511 510
512 class GrPerlinNoiseEffect : public GrFragmentProcessor { 511 class GrPerlinNoiseEffect : public GrFragmentProcessor {
513 public: 512 public:
514 static GrFragmentProcessor* Create(GrProcessorDataManager* procDataManager, 513 static GrFragmentProcessor* Create(GrProcessorDataManager* procDataManager,
515 SkPerlinNoiseShader::Type type, 514 SkPerlinNoiseShader::Type type,
516 int numOctaves, bool stitchTiles, 515 int numOctaves, bool stitchTiles,
517 SkPerlinNoiseShader::PaintingData* painti ngData, 516 SkPerlinNoiseShader::PaintingData* painti ngData,
518 GrTexture* permutationsTexture, GrTexture * noiseTexture, 517 GrTexture* permutationsTexture, GrTexture * noiseTexture,
519 const SkMatrix& matrix, uint8_t alpha) { 518 const SkMatrix& matrix, uint8_t alpha) {
520 return SkNEW_ARGS(GrPerlinNoiseEffect, (procDataManager, type, numOctave s, stitchTiles, 519 return new GrPerlinNoiseEffect(procDataManager, type, numOctaves, stitch Tiles, paintingData,
521 paintingData, permutationsTextur e, noiseTexture, 520 permutationsTexture, noiseTexture, matrix , alpha);
522 matrix, alpha));
523 } 521 }
524 522
525 virtual ~GrPerlinNoiseEffect() { 523 virtual ~GrPerlinNoiseEffect() { delete fPaintingData; }
526 SkDELETE(fPaintingData);
527 }
528 524
529 const char* name() const override { return "PerlinNoise"; } 525 const char* name() const override { return "PerlinNoise"; }
530 526
531 const SkPerlinNoiseShader::StitchData& stitchData() const { return fPainting Data->fStitchDataInit; } 527 const SkPerlinNoiseShader::StitchData& stitchData() const { return fPainting Data->fStitchDataInit; }
532 528
533 SkPerlinNoiseShader::Type type() const { return fType; } 529 SkPerlinNoiseShader::Type type() const { return fType; }
534 bool stitchTiles() const { return fStitchTiles; } 530 bool stitchTiles() const { return fStitchTiles; }
535 const SkVector& baseFrequency() const { return fPaintingData->fBaseFrequency ; } 531 const SkVector& baseFrequency() const { return fPaintingData->fBaseFrequency ; }
536 int numOctaves() const { return fNumOctaves; } 532 int numOctaves() const { return fNumOctaves; }
537 const SkMatrix& matrix() const { return fCoordTransform.getMatrix(); } 533 const SkMatrix& matrix() const { return fCoordTransform.getMatrix(); }
538 uint8_t alpha() const { return fAlpha; } 534 uint8_t alpha() const { return fAlpha; }
539 535
540 private: 536 private:
541 GrGLFragmentProcessor* onCreateGLInstance() const override { 537 GrGLFragmentProcessor* onCreateGLInstance() const override {
542 return SkNEW_ARGS(GrGLPerlinNoise, (*this)); 538 return new GrGLPerlinNoise(*this);
543 } 539 }
544 540
545 virtual void onGetGLProcessorKey(const GrGLSLCaps& caps, 541 virtual void onGetGLProcessorKey(const GrGLSLCaps& caps,
546 GrProcessorKeyBuilder* b) const override { 542 GrProcessorKeyBuilder* b) const override {
547 GrGLPerlinNoise::GenKey(*this, caps, b); 543 GrGLPerlinNoise::GenKey(*this, caps, b);
548 } 544 }
549 545
550 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 546 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
551 const GrPerlinNoiseEffect& s = sBase.cast<GrPerlinNoiseEffect>(); 547 const GrPerlinNoiseEffect& s = sBase.cast<GrPerlinNoiseEffect>();
552 return fType == s.fType && 548 return fType == s.fType &&
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 613
618 SkPaint paint; 614 SkPaint paint;
619 GrColor paintColor; 615 GrColor paintColor;
620 GrFragmentProcessor* effect; 616 GrFragmentProcessor* effect;
621 GrPaint grPaint; 617 GrPaint grPaint;
622 SkAssertResult(shader->asFragmentProcessor(d->fContext, paint, 618 SkAssertResult(shader->asFragmentProcessor(d->fContext, paint,
623 GrTest::TestMatrix(d->fRandom), N ULL, 619 GrTest::TestMatrix(d->fRandom), N ULL,
624 &paintColor, grPaint.getProcessor DataManager(), 620 &paintColor, grPaint.getProcessor DataManager(),
625 &effect)); 621 &effect));
626 622
627 SkDELETE(shader); 623 delete shader;
628 624
629 return effect; 625 return effect;
630 } 626 }
631 627
632 GrGLPerlinNoise::GrGLPerlinNoise(const GrProcessor& processor) 628 GrGLPerlinNoise::GrGLPerlinNoise(const GrProcessor& processor)
633 : fType(processor.cast<GrPerlinNoiseEffect>().type()) 629 : fType(processor.cast<GrPerlinNoiseEffect>().type())
634 , fStitchTiles(processor.cast<GrPerlinNoiseEffect>().stitchTiles()) 630 , fStitchTiles(processor.cast<GrPerlinNoiseEffect>().stitchTiles())
635 , fNumOctaves(processor.cast<GrPerlinNoiseEffect>().numOctaves()) { 631 , fNumOctaves(processor.cast<GrPerlinNoiseEffect>().numOctaves()) {
636 } 632 }
637 633
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
961 } else { 957 } else {
962 *paintColor = 0; 958 *paintColor = 0;
963 } 959 }
964 return true; 960 return true;
965 } 961 }
966 962
967 // Either we don't stitch tiles, either we have a valid tile size 963 // Either we don't stitch tiles, either we have a valid tile size
968 SkASSERT(!fStitchTiles || !fTileSize.isEmpty()); 964 SkASSERT(!fStitchTiles || !fTileSize.isEmpty());
969 965
970 SkPerlinNoiseShader::PaintingData* paintingData = 966 SkPerlinNoiseShader::PaintingData* paintingData =
971 SkNEW_ARGS(PaintingData, (fTileSize, fSeed, fBaseFrequencyX, fBaseFr equencyY, matrix)); 967 new PaintingData(fTileSize, fSeed, fBaseFrequencyX, fBaseFrequencyY, matrix);
972 SkAutoTUnref<GrTexture> permutationsTexture( 968 SkAutoTUnref<GrTexture> permutationsTexture(
973 GrRefCachedBitmapTexture(context, paintingData->getPermutationsBitmap(), NULL)); 969 GrRefCachedBitmapTexture(context, paintingData->getPermutationsBitmap(), NULL));
974 SkAutoTUnref<GrTexture> noiseTexture( 970 SkAutoTUnref<GrTexture> noiseTexture(
975 GrRefCachedBitmapTexture(context, paintingData->getNoiseBitmap(), NULL)) ; 971 GrRefCachedBitmapTexture(context, paintingData->getNoiseBitmap(), NULL)) ;
976 972
977 SkMatrix m = viewM; 973 SkMatrix m = viewM;
978 m.setTranslateX(-localMatrix.getTranslateX() + SK_Scalar1); 974 m.setTranslateX(-localMatrix.getTranslateX() + SK_Scalar1);
979 m.setTranslateY(-localMatrix.getTranslateY() + SK_Scalar1); 975 m.setTranslateY(-localMatrix.getTranslateY() + SK_Scalar1);
980 if ((permutationsTexture) && (noiseTexture)) { 976 if ((permutationsTexture) && (noiseTexture)) {
981 *fp = GrPerlinNoiseEffect::Create(procDataManager, 977 *fp = GrPerlinNoiseEffect::Create(procDataManager,
982 fType, 978 fType,
983 fNumOctaves, 979 fNumOctaves,
984 fStitchTiles, 980 fStitchTiles,
985 paintingData, 981 paintingData,
986 permutationsTexture, noiseTexture, 982 permutationsTexture, noiseTexture,
987 m, paint.getAlpha()); 983 m, paint.getAlpha());
988 } else { 984 } else {
989 SkDELETE(paintingData); 985 delete paintingData;
990 *fp = NULL; 986 *fp = NULL;
991 } 987 }
992 return true; 988 return true;
993 } 989 }
994 990
995 #else 991 #else
996 992
997 bool SkPerlinNoiseShader::asFragmentProcessor(GrContext*, const SkPaint&, const SkMatrix&, 993 bool SkPerlinNoiseShader::asFragmentProcessor(GrContext*, const SkPaint&, const SkMatrix&,
998 const SkMatrix*, GrColor*, GrProce ssorDataManager*, 994 const SkMatrix*, GrColor*, GrProce ssorDataManager*,
999 GrFragmentProcessor**) const { 995 GrFragmentProcessor**) const {
(...skipping 28 matching lines...) Expand all
1028 str->append(" seed: "); 1024 str->append(" seed: ");
1029 str->appendScalar(fSeed); 1025 str->appendScalar(fSeed);
1030 str->append(" stitch tiles: "); 1026 str->append(" stitch tiles: ");
1031 str->append(fStitchTiles ? "true " : "false "); 1027 str->append(fStitchTiles ? "true " : "false ");
1032 1028
1033 this->INHERITED::toString(str); 1029 this->INHERITED::toString(str);
1034 1030
1035 str->append(")"); 1031 str->append(")");
1036 } 1032 }
1037 #endif 1033 #endif
OLDNEW
« no previous file with comments | « src/effects/SkMorphologyImageFilter.cpp ('k') | src/effects/SkRectShaderImageFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698