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

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

Issue 374923002: Goodbye GrEffectRef. (Closed) Base URL: https://skia.googlesource.com/skia.git@noref3
Patch Set: Address comments Created 6 years, 5 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/SkMagnifierImageFilter.cpp ('k') | src/effects/SkMorphologyImageFilter.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 2012 The Android Open Source Project 2 * Copyright 2012 The Android Open Source Project
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 "SkMatrixConvolutionImageFilter.h" 8 #include "SkMatrixConvolutionImageFilter.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkColorPriv.h" 10 #include "SkColorPriv.h"
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 323
324 #if SK_SUPPORT_GPU 324 #if SK_SUPPORT_GPU
325 325
326 /////////////////////////////////////////////////////////////////////////////// 326 ///////////////////////////////////////////////////////////////////////////////
327 327
328 class GrGLMatrixConvolutionEffect; 328 class GrGLMatrixConvolutionEffect;
329 329
330 class GrMatrixConvolutionEffect : public GrSingleTextureEffect { 330 class GrMatrixConvolutionEffect : public GrSingleTextureEffect {
331 public: 331 public:
332 typedef SkMatrixConvolutionImageFilter::TileMode TileMode; 332 typedef SkMatrixConvolutionImageFilter::TileMode TileMode;
333 static GrEffectRef* Create(GrTexture* texture, 333 static GrEffect* Create(GrTexture* texture,
334 const SkIRect& bounds, 334 const SkIRect& bounds,
335 const SkISize& kernelSize, 335 const SkISize& kernelSize,
336 const SkScalar* kernel, 336 const SkScalar* kernel,
337 SkScalar gain, 337 SkScalar gain,
338 SkScalar bias, 338 SkScalar bias,
339 const SkIPoint& kernelOffset, 339 const SkIPoint& kernelOffset,
340 TileMode tileMode, 340 TileMode tileMode,
341 bool convolveAlpha) { 341 bool convolveAlpha) {
342 return SkNEW_ARGS(GrMatrixConvolutionEffect, (texture, 342 return SkNEW_ARGS(GrMatrixConvolutionEffect, (texture,
343 bounds, 343 bounds,
344 kernelSize, 344 kernelSize,
345 kernel, 345 kernel,
346 gain, 346 gain,
347 bias, 347 bias,
348 kernelOffset, 348 kernelOffset,
349 tileMode, 349 tileMode,
350 convolveAlpha)); 350 convolveAlpha));
351 } 351 }
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 fTileMode == s.tileMode() && 618 fTileMode == s.tileMode() &&
619 fConvolveAlpha == s.convolveAlpha(); 619 fConvolveAlpha == s.convolveAlpha();
620 } 620 }
621 621
622 GR_DEFINE_EFFECT_TEST(GrMatrixConvolutionEffect); 622 GR_DEFINE_EFFECT_TEST(GrMatrixConvolutionEffect);
623 623
624 // A little bit less than the minimum # uniforms required by DX9SM2 (32). 624 // A little bit less than the minimum # uniforms required by DX9SM2 (32).
625 // Allows for a 5x5 kernel (or 25x1, for that matter). 625 // Allows for a 5x5 kernel (or 25x1, for that matter).
626 #define MAX_KERNEL_SIZE 25 626 #define MAX_KERNEL_SIZE 25
627 627
628 GrEffectRef* GrMatrixConvolutionEffect::TestCreate(SkRandom* random, 628 GrEffect* GrMatrixConvolutionEffect::TestCreate(SkRandom* random,
629 GrContext* context, 629 GrContext* context,
630 const GrDrawTargetCaps&, 630 const GrDrawTargetCaps&,
631 GrTexture* textures[]) { 631 GrTexture* textures[]) {
632 int texIdx = random->nextBool() ? GrEffectUnitTest::kSkiaPMTextureIdx : 632 int texIdx = random->nextBool() ? GrEffectUnitTest::kSkiaPMTextureIdx :
633 GrEffectUnitTest::kAlphaTextureIdx; 633 GrEffectUnitTest::kAlphaTextureIdx;
634 int width = random->nextRangeU(1, MAX_KERNEL_SIZE); 634 int width = random->nextRangeU(1, MAX_KERNEL_SIZE);
635 int height = random->nextRangeU(1, MAX_KERNEL_SIZE / width); 635 int height = random->nextRangeU(1, MAX_KERNEL_SIZE / width);
636 SkISize kernelSize = SkISize::Make(width, height); 636 SkISize kernelSize = SkISize::Make(width, height);
637 SkAutoTDeleteArray<SkScalar> kernel(new SkScalar[width * height]); 637 SkAutoTDeleteArray<SkScalar> kernel(new SkScalar[width * height]);
638 for (int i = 0; i < width * height; i++) { 638 for (int i = 0; i < width * height; i++) {
639 kernel.get()[i] = random->nextSScalar1(); 639 kernel.get()[i] = random->nextSScalar1();
640 } 640 }
641 SkScalar gain = random->nextSScalar1(); 641 SkScalar gain = random->nextSScalar1();
(...skipping 10 matching lines...) Expand all
652 bounds, 652 bounds,
653 kernelSize, 653 kernelSize,
654 kernel.get(), 654 kernel.get(),
655 gain, 655 gain,
656 bias, 656 bias,
657 kernelOffset, 657 kernelOffset,
658 tileMode, 658 tileMode,
659 convolveAlpha); 659 convolveAlpha);
660 } 660 }
661 661
662 bool SkMatrixConvolutionImageFilter::asNewEffect(GrEffectRef** effect, 662 bool SkMatrixConvolutionImageFilter::asNewEffect(GrEffect** effect,
663 GrTexture* texture, 663 GrTexture* texture,
664 const SkMatrix&, 664 const SkMatrix&,
665 const SkIRect& bounds 665 const SkIRect& bounds
666 ) const { 666 ) const {
667 if (!effect) { 667 if (!effect) {
668 return fKernelSize.width() * fKernelSize.height() <= MAX_KERNEL_SIZE; 668 return fKernelSize.width() * fKernelSize.height() <= MAX_KERNEL_SIZE;
669 } 669 }
670 SkASSERT(fKernelSize.width() * fKernelSize.height() <= MAX_KERNEL_SIZE); 670 SkASSERT(fKernelSize.width() * fKernelSize.height() <= MAX_KERNEL_SIZE);
671 *effect = GrMatrixConvolutionEffect::Create(texture, 671 *effect = GrMatrixConvolutionEffect::Create(texture,
672 bounds, 672 bounds,
673 fKernelSize, 673 fKernelSize,
674 fKernel, 674 fKernel,
675 fGain, 675 fGain,
676 fBias, 676 fBias,
677 fKernelOffset, 677 fKernelOffset,
678 fTileMode, 678 fTileMode,
679 fConvolveAlpha); 679 fConvolveAlpha);
680 return true; 680 return true;
681 } 681 }
682 682
683 /////////////////////////////////////////////////////////////////////////////// 683 ///////////////////////////////////////////////////////////////////////////////
684 684
685 #endif 685 #endif
OLDNEW
« no previous file with comments | « src/effects/SkMagnifierImageFilter.cpp ('k') | src/effects/SkMorphologyImageFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698