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

Side by Side Diff: gm/imagefiltersgraph.cpp

Issue 1854023003: Update internal testing ImageFilters to sk_sp (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 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 "gm.h" 8 #include "gm.h"
9 9
10 #include "SkArithmeticMode.h" 10 #include "SkArithmeticMode.h"
(...skipping 17 matching lines...) Expand all
28 class SimpleOffsetFilter : public SkImageFilter { 28 class SimpleOffsetFilter : public SkImageFilter {
29 public: 29 public:
30 class Registrar { 30 class Registrar {
31 public: 31 public:
32 Registrar() { 32 Registrar() {
33 SkFlattenable::Register("SimpleOffsetFilter", 33 SkFlattenable::Register("SimpleOffsetFilter",
34 SimpleOffsetFilter::CreateProc, 34 SimpleOffsetFilter::CreateProc,
35 SimpleOffsetFilter::GetFlattenableType()); 35 SimpleOffsetFilter::GetFlattenableType());
36 } 36 }
37 }; 37 };
38 static SkImageFilter* Create(SkScalar dx, SkScalar dy, SkImageFilter* input) { 38 static sk_sp<SkImageFilter> Make(SkScalar dx, SkScalar dy, sk_sp<SkImageFilt er> input) {
39 return new SimpleOffsetFilter(dx, dy, input); 39 return sk_sp<SkImageFilter>(new SimpleOffsetFilter(dx, dy, std::move(inp ut)));
40 } 40 }
41 41
42 SK_TO_STRING_OVERRIDE()
43 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SimpleOffsetFilter);
44
45 protected:
42 bool onFilterImageDeprecated(Proxy* proxy, const SkBitmap& src, const Contex t& ctx, 46 bool onFilterImageDeprecated(Proxy* proxy, const SkBitmap& src, const Contex t& ctx,
43 SkBitmap* dst, SkIPoint* offset) const override { 47 SkBitmap* dst, SkIPoint* offset) const override {
44 SkBitmap source = src; 48 SkBitmap source = src;
45 SkIPoint srcOffset = SkIPoint::Make(0, 0); 49 SkIPoint srcOffset = SkIPoint::Make(0, 0);
46 if (!this->filterInputDeprecated(0, proxy, src, ctx, &source, &srcOffset )) { 50 if (!this->filterInputDeprecated(0, proxy, src, ctx, &source, &srcOffset )) {
47 return false; 51 return false;
48 } 52 }
49 53
50 SkIRect bounds; 54 SkIRect bounds;
51 if (!this->applyCropRectDeprecated(ctx, proxy, source, &srcOffset, &boun ds, &source)) { 55 if (!this->applyCropRectDeprecated(ctx, proxy, source, &srcOffset, &boun ds, &source)) {
52 return false; 56 return false;
53 } 57 }
54 58
55 SkAutoTUnref<SkBaseDevice> device(proxy->createDevice(bounds.width(), bo unds.height())); 59 SkAutoTUnref<SkBaseDevice> device(proxy->createDevice(bounds.width(), bo unds.height()));
56 SkCanvas canvas(device); 60 SkCanvas canvas(device);
57 SkPaint paint; 61 SkPaint paint;
58 paint.setXfermodeMode(SkXfermode::kSrc_Mode); 62 paint.setXfermodeMode(SkXfermode::kSrc_Mode);
59 canvas.drawBitmap(source, fDX - bounds.left(), fDY - bounds.top(), &pain t); 63 canvas.drawBitmap(source, fDX - bounds.left(), fDY - bounds.top(), &pain t);
60 *dst = device->accessBitmap(false); 64 *dst = device->accessBitmap(false);
61 offset->fX += bounds.left(); 65 offset->fX += bounds.left();
62 offset->fY += bounds.top(); 66 offset->fY += bounds.top();
63 return true; 67 return true;
64 } 68 }
65 69
66 SK_TO_STRING_OVERRIDE()
67 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SimpleOffsetFilter);
68
69 protected:
70 void flatten(SkWriteBuffer& buffer) const override { 70 void flatten(SkWriteBuffer& buffer) const override {
71 this->INHERITED::flatten(buffer); 71 this->INHERITED::flatten(buffer);
72 buffer.writeScalar(fDX); 72 buffer.writeScalar(fDX);
73 buffer.writeScalar(fDY); 73 buffer.writeScalar(fDY);
74 } 74 }
75 75
76 private: 76 private:
77 SimpleOffsetFilter(SkScalar dx, SkScalar dy, SkImageFilter* input) 77 SimpleOffsetFilter(SkScalar dx, SkScalar dy, sk_sp<SkImageFilter> input)
78 : SkImageFilter(1, &input), fDX(dx), fDY(dy) {} 78 : SkImageFilter(&input, 1, nullptr)
79 , fDX(dx)
80 , fDY(dy) {
81 }
79 82
80 SkScalar fDX, fDY; 83 SkScalar fDX, fDY;
81 84
82 typedef SkImageFilter INHERITED; 85 typedef SkImageFilter INHERITED;
83 }; 86 };
84 87
85 static SimpleOffsetFilter::Registrar gReg; 88 static SimpleOffsetFilter::Registrar gReg;
86 89
87 sk_sp<SkFlattenable> SimpleOffsetFilter::CreateProc(SkReadBuffer& buffer) { 90 sk_sp<SkFlattenable> SimpleOffsetFilter::CreateProc(SkReadBuffer& buffer) {
88 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); 91 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1);
89 SkScalar dx = buffer.readScalar(); 92 SkScalar dx = buffer.readScalar();
90 SkScalar dy = buffer.readScalar(); 93 SkScalar dy = buffer.readScalar();
91 return sk_sp<SkFlattenable>(Create(dx, dy, common.getInput(0).get())); 94 return Make(dx, dy, common.getInput(0));
92 } 95 }
93 96
94 #ifndef SK_IGNORE_TO_STRING 97 #ifndef SK_IGNORE_TO_STRING
95 void SimpleOffsetFilter::toString(SkString* str) const { 98 void SimpleOffsetFilter::toString(SkString* str) const {
96 str->appendf("SimpleOffsetFilter: ("); 99 str->appendf("SimpleOffsetFilter: (");
97 str->append(")"); 100 str->append(")");
98 } 101 }
99 #endif 102 #endif
100 103
101 class ImageFiltersGraphGM : public skiagm::GM { 104 class ImageFiltersGraphGM : public skiagm::GM {
(...skipping 23 matching lines...) Expand all
125 sk_sp<SkImageFilter> erode(SkErodeImageFilter::Create(4, 4, blur.get ())); 128 sk_sp<SkImageFilter> erode(SkErodeImageFilter::Create(4, 4, blur.get ()));
126 sk_sp<SkImageFilter> color(SkColorFilterImageFilter::Create(cf.get() , erode.get())); 129 sk_sp<SkImageFilter> color(SkColorFilterImageFilter::Create(cf.get() , erode.get()));
127 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(blur, color)); 130 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(blur, color));
128 131
129 SkPaint paint; 132 SkPaint paint;
130 paint.setImageFilter(std::move(merge)); 133 paint.setImageFilter(std::move(merge));
131 canvas->drawPaint(paint); 134 canvas->drawPaint(paint);
132 canvas->translate(SkIntToScalar(100), 0); 135 canvas->translate(SkIntToScalar(100), 0);
133 } 136 }
134 { 137 {
135 SkAutoTUnref<SkImageFilter> morph(SkDilateImageFilter::Create(5, 5)) ; 138 sk_sp<SkImageFilter> morph(SkDilateImageFilter::Create(5, 5));
136 139
137 SkScalar matrix[20] = { SK_Scalar1, 0, 0, 0, 0, 140 SkScalar matrix[20] = { SK_Scalar1, 0, 0, 0, 0,
138 0, SK_Scalar1, 0, 0, 0, 141 0, SK_Scalar1, 0, 0, 0,
139 0, 0, SK_Scalar1, 0, 0, 142 0, 0, SK_Scalar1, 0, 0,
140 0, 0, 0, 0.5f, 0 }; 143 0, 0, 0, 0.5f, 0 };
141 144
142 auto matrixFilter(SkColorFilter::MakeMatrixFilterRowMajor255(matrix) ); 145 sk_sp<SkColorFilter> matrixFilter(SkColorFilter::MakeMatrixFilterRow Major255(matrix));
143 SkAutoTUnref<SkImageFilter> colorMorph(SkColorFilterImageFilter::Cre ate(matrixFilter.get(), morph)); 146 sk_sp<SkImageFilter> colorMorph(SkColorFilterImageFilter::Create(mat rixFilter.get(),
147 mor ph.get()));
144 SkPaint paint; 148 SkPaint paint;
145 paint.setImageFilter(SkXfermodeImageFilter::Make( 149 paint.setImageFilter(SkXfermodeImageFilter::Make(
146 SkXfermode::Make(SkXfermode::kSrcOver_Mo de), colorMorph)); 150 SkXfermode::Make(SkXfermode::kSrcOver_Mo de),
151 colorMorph.get()));
147 152
148 DrawClippedImage(canvas, fImage.get(), paint); 153 DrawClippedImage(canvas, fImage.get(), paint);
149 canvas->translate(SkIntToScalar(100), 0); 154 canvas->translate(SkIntToScalar(100), 0);
150 } 155 }
151 { 156 {
152 SkScalar matrix[20] = { SK_Scalar1, 0, 0, 0, 0, 157 SkScalar matrix[20] = { SK_Scalar1, 0, 0, 0, 0,
153 0, SK_Scalar1, 0, 0, 0, 158 0, SK_Scalar1, 0, 0, 0,
154 0, 0, SK_Scalar1, 0, 0, 159 0, 0, SK_Scalar1, 0, 0,
155 0, 0, 0, 0.5f, 0 }; 160 0, 0, 0, 0.5f, 0 };
156 auto matrixCF(SkColorFilter::MakeMatrixFilterRowMajor255(matrix)); 161 sk_sp<SkColorFilter> matrixCF(SkColorFilter::MakeMatrixFilterRowMajo r255(matrix));
157 SkAutoTUnref<SkImageFilter> matrixFilter(SkColorFilterImageFilter::C reate(matrixCF.get())); 162 sk_sp<SkImageFilter> matrixFilter(SkColorFilterImageFilter::Create(m atrixCF.get()));
158 SkAutoTUnref<SkImageFilter> offsetFilter( 163 sk_sp<SkImageFilter> offsetFilter(SimpleOffsetFilter::Make(10.0f, 10 .f, matrixFilter));
159 SimpleOffsetFilter::Create(10.0f, 10.f, matrixFilter));
160 164
161 SkPaint paint; 165 SkPaint paint;
162 paint.setImageFilter( 166 paint.setImageFilter(
163 SkXfermodeImageFilter::Make(SkArithmeticMode::Make(0, SK_Scalar1 , SK_Scalar1, 0), 167 SkXfermodeImageFilter::Make(SkArithmeticMode::Make(0, SK_Scalar1 , SK_Scalar1, 0),
164 matrixFilter, offsetFilter, nullptr) ); 168 matrixFilter.get(), offsetFilter.get (), nullptr));
165 169
166 DrawClippedImage(canvas, fImage.get(), paint); 170 DrawClippedImage(canvas, fImage.get(), paint);
167 canvas->translate(SkIntToScalar(100), 0); 171 canvas->translate(SkIntToScalar(100), 0);
168 } 172 }
169 { 173 {
170 SkAutoTUnref<SkImageFilter> blur(SkBlurImageFilter::Create( 174 SkAutoTUnref<SkImageFilter> blur(SkBlurImageFilter::Create(
171 SkIntToScalar(10), SkIntToScalar(10))); 175 SkIntToScalar(10), SkIntToScalar(10)));
172 176
173 SkImageFilter::CropRect cropRect(SkRect::MakeWH(SkIntToScalar(95), S kIntToScalar(100))); 177 SkImageFilter::CropRect cropRect(SkRect::MakeWH(SkIntToScalar(95), S kIntToScalar(100)));
174 SkPaint paint; 178 SkPaint paint;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 } 242 }
239 243
240 sk_sp<SkImage> fImage; 244 sk_sp<SkImage> fImage;
241 245
242 typedef GM INHERITED; 246 typedef GM INHERITED;
243 }; 247 };
244 248
245 /////////////////////////////////////////////////////////////////////////////// 249 ///////////////////////////////////////////////////////////////////////////////
246 250
247 DEF_GM(return new ImageFiltersGraphGM;) 251 DEF_GM(return new ImageFiltersGraphGM;)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698