diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-10 10:51:58 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-10 10:51:58 +0000 |
commit | cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977 (patch) | |
tree | aeeee764feb84da585a469d005bfaf0e4a69bc13 /bench | |
parent | b471a32460a44043e1f00d28cbefc87579dc30c5 (diff) |
Factory methods for heap-allocated SkImageFilter objects.
This is part of an effort to ensure that all SkPaint effects can only be
allocated on the heap.
This patch makes the constructors of SkImageFilter and its subclasses non-public
and instead provides factory methods for creating these objects on the heap. We
temporarily keep constructor of publicly visible classes public behind a flag.
BUG=skia:2187
R=scroggo@google.com, mtklein@chromium.org, reed@google.com, senorblanco@google.com, senorblanco@chromium.org, bsalomon@google.com, sugoi@chromium.org, zork@chromium.org
Author: dominikg@chromium.org
Review URL: https://codereview.chromium.org/182983003
git-svn-id: http://skia.googlecode.com/svn/trunk@13718 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'bench')
-rw-r--r-- | bench/BlurImageFilterBench.cpp | 2 | ||||
-rw-r--r-- | bench/DisplacementBench.cpp | 24 | ||||
-rw-r--r-- | bench/MagnifierBench.cpp | 2 | ||||
-rw-r--r-- | bench/MatrixConvolutionBench.cpp | 2 | ||||
-rw-r--r-- | bench/MergeBench.cpp | 6 | ||||
-rw-r--r-- | bench/MorphologyBench.cpp | 8 |
6 files changed, 22 insertions, 22 deletions
diff --git a/bench/BlurImageFilterBench.cpp b/bench/BlurImageFilterBench.cpp index 1cc205a70c..bd36b5b3c4 100644 --- a/bench/BlurImageFilterBench.cpp +++ b/bench/BlurImageFilterBench.cpp @@ -44,7 +44,7 @@ protected: virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { SkPaint paint; - paint.setImageFilter(new SkBlurImageFilter(fSigmaX, fSigmaY))->unref(); + paint.setImageFilter(SkBlurImageFilter::Create(fSigmaX, fSigmaY))->unref(); for (int i = 0; i < loops; i++) { canvas->drawBitmap(fCheckerboard, 0, 0, &paint); diff --git a/bench/DisplacementBench.cpp b/bench/DisplacementBench.cpp index 77ac305852..08da9b19af 100644 --- a/bench/DisplacementBench.cpp +++ b/bench/DisplacementBench.cpp @@ -101,11 +101,11 @@ protected: virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { SkPaint paint; - SkAutoTUnref<SkImageFilter> displ(SkNEW_ARGS(SkBitmapSource, (fCheckerboard))); + SkAutoTUnref<SkImageFilter> displ(SkBitmapSource::Create(fCheckerboard)); // No displacement effect - paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, - (SkDisplacementMapEffect::kR_ChannelSelectorType, - SkDisplacementMapEffect::kG_ChannelSelectorType, 0.0f, displ)))->unref(); + paint.setImageFilter(SkDisplacementMapEffect::Create( + SkDisplacementMapEffect::kR_ChannelSelectorType, + SkDisplacementMapEffect::kG_ChannelSelectorType, 0.0f, displ))->unref(); for (int i = 0; i < loops; i++) { this->drawClippedBitmap(canvas, 0, 0, paint); @@ -128,11 +128,11 @@ protected: virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { SkPaint paint; - SkAutoTUnref<SkImageFilter> displ(SkNEW_ARGS(SkBitmapSource, (fCheckerboard))); + SkAutoTUnref<SkImageFilter> displ(SkBitmapSource::Create(fCheckerboard)); // Displacement, with 1 alpha component (which isn't pre-multiplied) - paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, - (SkDisplacementMapEffect::kB_ChannelSelectorType, - SkDisplacementMapEffect::kA_ChannelSelectorType, 16.0f, displ)))->unref(); + paint.setImageFilter(SkDisplacementMapEffect::Create( + SkDisplacementMapEffect::kB_ChannelSelectorType, + SkDisplacementMapEffect::kA_ChannelSelectorType, 16.0f, displ))->unref(); for (int i = 0; i < loops; i++) { drawClippedBitmap(canvas, 100, 0, paint); } @@ -154,11 +154,11 @@ protected: virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { SkPaint paint; - SkAutoTUnref<SkImageFilter> displ(SkNEW_ARGS(SkBitmapSource, (fCheckerboard))); + SkAutoTUnref<SkImageFilter> displ(SkBitmapSource::Create(fCheckerboard)); // Displacement, with 2 non-alpha components - paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, - (SkDisplacementMapEffect::kR_ChannelSelectorType, - SkDisplacementMapEffect::kB_ChannelSelectorType, 32.0f, displ)))->unref(); + paint.setImageFilter(SkDisplacementMapEffect::Create( + SkDisplacementMapEffect::kR_ChannelSelectorType, + SkDisplacementMapEffect::kB_ChannelSelectorType, 32.0f, displ))->unref(); for (int i = 0; i < loops; ++i) { this->drawClippedBitmap(canvas, 200, 0, paint); } diff --git a/bench/MagnifierBench.cpp b/bench/MagnifierBench.cpp index 5c53244275..3ef2062c4e 100644 --- a/bench/MagnifierBench.cpp +++ b/bench/MagnifierBench.cpp @@ -38,7 +38,7 @@ protected: const int h = fIsSmall ? FILTER_HEIGHT_SMALL : FILTER_HEIGHT_LARGE; SkPaint paint; paint.setImageFilter( - new SkMagnifierImageFilter( + SkMagnifierImageFilter::Create( SkRect::MakeXYWH(SkIntToScalar(w / 4), SkIntToScalar(h / 4), SkIntToScalar(w / 2), diff --git a/bench/MatrixConvolutionBench.cpp b/bench/MatrixConvolutionBench.cpp index 1acc0cb01a..82529737c1 100644 --- a/bench/MatrixConvolutionBench.cpp +++ b/bench/MatrixConvolutionBench.cpp @@ -23,7 +23,7 @@ public: }; SkScalar gain = 0.3f, bias = SkIntToScalar(100); SkIPoint target = SkIPoint::Make(1, 1); - fFilter = new SkMatrixConvolutionImageFilter(kernelSize, kernel, gain, bias, target, tileMode, convolveAlpha); + fFilter = SkMatrixConvolutionImageFilter::Create(kernelSize, kernel, gain, bias, target, tileMode, convolveAlpha); } ~MatrixConvolutionBench() { diff --git a/bench/MergeBench.cpp b/bench/MergeBench.cpp index 1723cbfc21..cec0ea93e4 100644 --- a/bench/MergeBench.cpp +++ b/bench/MergeBench.cpp @@ -44,11 +44,11 @@ protected: private: SkImageFilter* mergeBitmaps() { - SkImageFilter* first = new SkBitmapSource(fCheckerboard); - SkImageFilter* second = new SkBitmapSource(fBitmap); + SkImageFilter* first = SkBitmapSource::Create(fCheckerboard); + SkImageFilter* second = SkBitmapSource::Create(fBitmap); SkAutoUnref aur0(first); SkAutoUnref aur1(second); - return new SkMergeImageFilter(first, second); + return SkMergeImageFilter::Create(first, second); } void make_bitmap() { diff --git a/bench/MorphologyBench.cpp b/bench/MorphologyBench.cpp index 0bf689eff6..a32bca620a 100644 --- a/bench/MorphologyBench.cpp +++ b/bench/MorphologyBench.cpp @@ -66,12 +66,12 @@ protected: SkMorphologyImageFilter* mf = NULL; switch (fStyle) { case kDilate_MT: - mf = new SkDilateImageFilter(SkScalarFloorToInt(fRadius), - SkScalarFloorToInt(fRadius)); + mf = SkDilateImageFilter::Create(SkScalarFloorToInt(fRadius), + SkScalarFloorToInt(fRadius)); break; case kErode_MT: - mf = new SkErodeImageFilter(SkScalarFloorToInt(fRadius), - SkScalarFloorToInt(fRadius)); + mf = SkErodeImageFilter::Create(SkScalarFloorToInt(fRadius), + SkScalarFloorToInt(fRadius)); break; } paint.setImageFilter(mf)->unref(); |