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

Side by Side Diff: gm/imagefiltersgraph.cpp

Issue 1860573002: Update SkMorphology 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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 sk_tool_utils::create_string_bitmap(100, 100, SK_ColorWHITE, 20, 70, 96, "e")); 115 sk_tool_utils::create_string_bitmap(100, 100, SK_ColorWHITE, 20, 70, 96, "e"));
116 } 116 }
117 117
118 void onDraw(SkCanvas* canvas) override { 118 void onDraw(SkCanvas* canvas) override {
119 canvas->clear(SK_ColorBLACK); 119 canvas->clear(SK_ColorBLACK);
120 { 120 {
121 sk_sp<SkImageFilter> bitmapSource(SkImageSource::Make(fImage)); 121 sk_sp<SkImageFilter> bitmapSource(SkImageSource::Make(fImage));
122 sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorRED, 122 sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorRED,
123 SkXfermode::kS rcIn_Mode)); 123 SkXfermode::kS rcIn_Mode));
124 sk_sp<SkImageFilter> blur(SkBlurImageFilter::Make(4.0f, 4.0f, std::m ove(bitmapSource))); 124 sk_sp<SkImageFilter> blur(SkBlurImageFilter::Make(4.0f, 4.0f, std::m ove(bitmapSource)));
125 sk_sp<SkImageFilter> erode(SkErodeImageFilter::Create(4, 4, blur.get ())); 125 sk_sp<SkImageFilter> erode(SkErodeImageFilter::Make(4, 4, blur));
126 sk_sp<SkImageFilter> color(SkColorFilterImageFilter::Create(cf.get() , erode.get())); 126 sk_sp<SkImageFilter> color(SkColorFilterImageFilter::Create(cf.get() , erode.get()));
127 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(blur, color)); 127 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(blur, color));
128 128
129 SkPaint paint; 129 SkPaint paint;
130 paint.setImageFilter(std::move(merge)); 130 paint.setImageFilter(std::move(merge));
131 canvas->drawPaint(paint); 131 canvas->drawPaint(paint);
132 canvas->translate(SkIntToScalar(100), 0); 132 canvas->translate(SkIntToScalar(100), 0);
133 } 133 }
134 { 134 {
135 SkAutoTUnref<SkImageFilter> morph(SkDilateImageFilter::Create(5, 5)) ; 135 sk_sp<SkImageFilter> morph(SkDilateImageFilter::Make(5, 5, nullptr)) ;
136 136
137 SkScalar matrix[20] = { SK_Scalar1, 0, 0, 0, 0, 137 SkScalar matrix[20] = { SK_Scalar1, 0, 0, 0, 0,
138 0, SK_Scalar1, 0, 0, 0, 138 0, SK_Scalar1, 0, 0, 0,
139 0, 0, SK_Scalar1, 0, 0, 139 0, 0, SK_Scalar1, 0, 0,
140 0, 0, 0, 0.5f, 0 }; 140 0, 0, 0, 0.5f, 0 };
141 141
142 auto matrixFilter(SkColorFilter::MakeMatrixFilterRowMajor255(matrix) ); 142 sk_sp<SkColorFilter> matrixFilter(SkColorFilter::MakeMatrixFilterRow Major255(matrix));
143 SkAutoTUnref<SkImageFilter> colorMorph(SkColorFilterImageFilter::Cre ate(matrixFilter.get(), morph)); 143 sk_sp<SkImageFilter> colorMorph(SkColorFilterImageFilter::Create(mat rixFilter.get(),
144 mor ph.get()));
144 SkPaint paint; 145 SkPaint paint;
145 paint.setImageFilter(SkXfermodeImageFilter::Make( 146 paint.setImageFilter(SkXfermodeImageFilter::Make(
146 SkXfermode::Make(SkXfermode::kSrcOver_Mo de), colorMorph)); 147 SkXfermode::Make(SkXfermode::kSrcOver_Mo de),
148 colorMorph.get()));
147 149
148 DrawClippedImage(canvas, fImage.get(), paint); 150 DrawClippedImage(canvas, fImage.get(), paint);
149 canvas->translate(SkIntToScalar(100), 0); 151 canvas->translate(SkIntToScalar(100), 0);
150 } 152 }
151 { 153 {
152 SkScalar matrix[20] = { SK_Scalar1, 0, 0, 0, 0, 154 SkScalar matrix[20] = { SK_Scalar1, 0, 0, 0, 0,
153 0, SK_Scalar1, 0, 0, 0, 155 0, SK_Scalar1, 0, 0, 0,
154 0, 0, SK_Scalar1, 0, 0, 156 0, 0, SK_Scalar1, 0, 0,
155 0, 0, 0, 0.5f, 0 }; 157 0, 0, 0, 0.5f, 0 };
156 auto matrixCF(SkColorFilter::MakeMatrixFilterRowMajor255(matrix)); 158 auto matrixCF(SkColorFilter::MakeMatrixFilterRowMajor255(matrix));
(...skipping 20 matching lines...) Expand all
177 SkXfermodeImageFilter::Make(SkXfermode::Make(SkXfermode::kSrcIn_ Mode), blur.get(), 179 SkXfermodeImageFilter::Make(SkXfermode::Make(SkXfermode::kSrcIn_ Mode), blur.get(),
178 nullptr, &cropRect)); 180 nullptr, &cropRect));
179 DrawClippedImage(canvas, fImage.get(), paint); 181 DrawClippedImage(canvas, fImage.get(), paint);
180 canvas->translate(SkIntToScalar(100), 0); 182 canvas->translate(SkIntToScalar(100), 0);
181 } 183 }
182 { 184 {
183 // Dilate -> matrix convolution. 185 // Dilate -> matrix convolution.
184 // This tests that a filter using asFragmentProcessor (matrix 186 // This tests that a filter using asFragmentProcessor (matrix
185 // convolution) correctly handles a non-zero source offset 187 // convolution) correctly handles a non-zero source offset
186 // (supplied by the dilate). 188 // (supplied by the dilate).
187 SkAutoTUnref<SkImageFilter> dilate(SkDilateImageFilter::Create(5, 5) ); 189 sk_sp<SkImageFilter> dilate(SkDilateImageFilter::Make(5, 5, nullptr) );
188 190
189 SkScalar kernel[9] = { 191 SkScalar kernel[9] = {
190 SkIntToScalar(-1), SkIntToScalar( -1 ), SkIntToScalar(-1), 192 SkIntToScalar(-1), SkIntToScalar( -1 ), SkIntToScalar(-1),
191 SkIntToScalar(-1), SkIntToScalar( 7 ), SkIntToScalar(-1), 193 SkIntToScalar(-1), SkIntToScalar( 7 ), SkIntToScalar(-1),
192 SkIntToScalar(-1), SkIntToScalar( -1 ), SkIntToScalar(-1), 194 SkIntToScalar(-1), SkIntToScalar( -1 ), SkIntToScalar(-1),
193 }; 195 };
194 SkISize kernelSize = SkISize::Make(3, 3); 196 SkISize kernelSize = SkISize::Make(3, 3);
195 SkScalar gain = 1.0f, bias = SkIntToScalar(0); 197 SkScalar gain = 1.0f, bias = SkIntToScalar(0);
196 SkIPoint kernelOffset = SkIPoint::Make(1, 1); 198 SkIPoint kernelOffset = SkIPoint::Make(1, 1);
197 auto tileMode = SkMatrixConvolutionImageFilter::kClamp_TileMode; 199 auto tileMode = SkMatrixConvolutionImageFilter::kClamp_TileMode;
198 bool convolveAlpha = false; 200 bool convolveAlpha = false;
199 SkAutoTUnref<SkImageFilter> convolve( 201 sk_sp<SkImageFilter> convolve(
200 SkMatrixConvolutionImageFilter::Create(kernelSize, 202 SkMatrixConvolutionImageFilter::Create(kernelSize,
201 kernel, 203 kernel,
202 gain, 204 gain,
203 bias, 205 bias,
204 kernelOffset, 206 kernelOffset,
205 tileMode, 207 tileMode,
206 convolveAlpha, 208 convolveAlpha,
207 dilate)); 209 dilate.get()));
208 210
209 SkPaint paint; 211 SkPaint paint;
210 paint.setImageFilter(convolve); 212 paint.setImageFilter(std::move(convolve));
211 DrawClippedImage(canvas, fImage.get(), paint); 213 DrawClippedImage(canvas, fImage.get(), paint);
212 canvas->translate(SkIntToScalar(100), 0); 214 canvas->translate(SkIntToScalar(100), 0);
213 } 215 }
214 { 216 {
215 // Test that crop offsets are absolute, not relative to the parent's crop rect. 217 // Test that crop offsets are absolute, not relative to the parent's crop rect.
216 auto cf1(SkColorFilter::MakeModeFilter(SK_ColorBLUE, SkXfermode::kSr cIn_Mode)); 218 auto cf1(SkColorFilter::MakeModeFilter(SK_ColorBLUE, SkXfermode::kSr cIn_Mode));
217 auto cf2(SkColorFilter::MakeModeFilter(SK_ColorGREEN, SkXfermode::kS rcIn_Mode)); 219 auto cf2(SkColorFilter::MakeModeFilter(SK_ColorGREEN, SkXfermode::kS rcIn_Mode));
218 SkImageFilter::CropRect outerRect(SkRect::MakeXYWH(SkIntToScalar(10) , SkIntToScalar(10), 220 SkImageFilter::CropRect outerRect(SkRect::MakeXYWH(SkIntToScalar(10) , SkIntToScalar(10),
219 SkIntToScalar(80) , SkIntToScalar(80))); 221 SkIntToScalar(80) , SkIntToScalar(80)));
220 SkImageFilter::CropRect innerRect(SkRect::MakeXYWH(SkIntToScalar(20) , SkIntToScalar(20), 222 SkImageFilter::CropRect innerRect(SkRect::MakeXYWH(SkIntToScalar(20) , SkIntToScalar(20),
221 SkIntToScalar(60) , SkIntToScalar(60))); 223 SkIntToScalar(60) , SkIntToScalar(60)));
222 SkAutoTUnref<SkImageFilter> color1(SkColorFilterImageFilter::Create( cf1.get(), nullptr, &outerRect)); 224 sk_sp<SkImageFilter> color1(SkColorFilterImageFilter::Create(cf1.get (),
223 SkAutoTUnref<SkImageFilter> color2(SkColorFilterImageFilter::Create( cf2.get(), color1, &innerRect)); 225 nullptr ,
226 &outerR ect));
227 sk_sp<SkImageFilter> color2(SkColorFilterImageFilter::Create(cf2.get (),
228 color1. get(),
229 &innerR ect));
224 230
225 SkPaint paint; 231 SkPaint paint;
226 paint.setImageFilter(color2); 232 paint.setImageFilter(std::move(color2));
227 paint.setColor(SK_ColorRED); 233 paint.setColor(SK_ColorRED);
228 canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), paint); 234 canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), paint);
229 canvas->translate(SkIntToScalar(100), 0); 235 canvas->translate(SkIntToScalar(100), 0);
230 } 236 }
231 } 237 }
232 238
233 private: 239 private:
234 static void DrawClippedImage(SkCanvas* canvas, const SkImage* image, const S kPaint& paint) { 240 static void DrawClippedImage(SkCanvas* canvas, const SkImage* image, const S kPaint& paint) {
235 canvas->save(); 241 canvas->save();
236 canvas->clipRect(SkRect::MakeIWH(image->width(), image->height())); 242 canvas->clipRect(SkRect::MakeIWH(image->width(), image->height()));
237 canvas->drawImage(image, 0, 0, &paint); 243 canvas->drawImage(image, 0, 0, &paint);
238 canvas->restore(); 244 canvas->restore();
239 } 245 }
240 246
241 sk_sp<SkImage> fImage; 247 sk_sp<SkImage> fImage;
242 248
243 typedef GM INHERITED; 249 typedef GM INHERITED;
244 }; 250 };
245 251
246 /////////////////////////////////////////////////////////////////////////////// 252 ///////////////////////////////////////////////////////////////////////////////
247 253
248 DEF_GM(return new ImageFiltersGraphGM;) 254 DEF_GM(return new ImageFiltersGraphGM;)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698