OLD | NEW |
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 Loading... |
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 Loading... |
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;) |
OLD | NEW |