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

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

Powered by Google App Engine
This is Rietveld 408576698