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

Side by Side Diff: tests/ImageFilterTest.cpp

Issue 1316233002: Style Change: NULL->nullptr (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-08-27 (Thursday) 10:25:06 EDT Created 5 years, 3 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 | « tests/ImageDecodingTest.cpp ('k') | tests/ImageGeneratorTest.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 2013 Google Inc. 2 * Copyright 2013 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 "SkBitmap.h" 8 #include "SkBitmap.h"
9 #include "SkBitmapDevice.h" 9 #include "SkBitmapDevice.h"
10 #include "SkBitmapSource.h" 10 #include "SkBitmapSource.h"
(...skipping 29 matching lines...) Expand all
40 #include "SkGpuDevice.h" 40 #include "SkGpuDevice.h"
41 #endif 41 #endif
42 42
43 static const int kBitmapSize = 4; 43 static const int kBitmapSize = 4;
44 44
45 namespace { 45 namespace {
46 46
47 class MatrixTestImageFilter : public SkImageFilter { 47 class MatrixTestImageFilter : public SkImageFilter {
48 public: 48 public:
49 MatrixTestImageFilter(skiatest::Reporter* reporter, const SkMatrix& expected Matrix) 49 MatrixTestImageFilter(skiatest::Reporter* reporter, const SkMatrix& expected Matrix)
50 : SkImageFilter(0, NULL), fReporter(reporter), fExpectedMatrix(expectedMat rix) { 50 : SkImageFilter(0, nullptr), fReporter(reporter), fExpectedMatrix(expected Matrix) {
51 } 51 }
52 52
53 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context& ctx, 53 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context& ctx,
54 SkBitmap* result, SkIPoint* offset) const overrid e { 54 SkBitmap* result, SkIPoint* offset) const overrid e {
55 REPORTER_ASSERT(fReporter, ctx.ctm() == fExpectedMatrix); 55 REPORTER_ASSERT(fReporter, ctx.ctm() == fExpectedMatrix);
56 return true; 56 return true;
57 } 57 }
58 58
59 SK_TO_STRING_OVERRIDE() 59 SK_TO_STRING_OVERRIDE()
60 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(MatrixTestImageFilter) 60 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(MatrixTestImageFilter)
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 SkIntToScalar(i)), lightPaint); 116 SkIntToScalar(i)), lightPaint);
117 canvas.drawRect(SkRect::MakeXYWH(SkIntToScalar(i), 117 canvas.drawRect(SkRect::MakeXYWH(SkIntToScalar(i),
118 SkIntToScalar(i), 118 SkIntToScalar(i),
119 SkIntToScalar(i), 119 SkIntToScalar(i),
120 SkIntToScalar(i)), darkPaint); 120 SkIntToScalar(i)), darkPaint);
121 canvas.restore(); 121 canvas.restore();
122 } 122 }
123 } 123 }
124 } 124 }
125 125
126 static SkImageFilter* make_scale(float amount, SkImageFilter* input = NULL) { 126 static SkImageFilter* make_scale(float amount, SkImageFilter* input = nullptr) {
127 SkScalar s = amount; 127 SkScalar s = amount;
128 SkScalar matrix[20] = { s, 0, 0, 0, 0, 128 SkScalar matrix[20] = { s, 0, 0, 0, 0,
129 0, s, 0, 0, 0, 129 0, s, 0, 0, 0,
130 0, 0, s, 0, 0, 130 0, 0, s, 0, 0,
131 0, 0, 0, s, 0 }; 131 0, 0, 0, s, 0 };
132 SkAutoTUnref<SkColorFilter> filter(SkColorMatrixFilter::Create(matrix)); 132 SkAutoTUnref<SkColorFilter> filter(SkColorMatrixFilter::Create(matrix));
133 return SkColorFilterImageFilter::Create(filter, input); 133 return SkColorFilterImageFilter::Create(filter, input);
134 } 134 }
135 135
136 static SkImageFilter* make_grayscale(SkImageFilter* input, const SkImageFilter:: CropRect* cropRect) { 136 static SkImageFilter* make_grayscale(SkImageFilter* input, const SkImageFilter:: CropRect* cropRect) {
(...skipping 11 matching lines...) Expand all
148 SkAutoTUnref<SkColorFilter> filter(SkColorFilter::CreateModeFilter(SK_ColorB LUE, 148 SkAutoTUnref<SkColorFilter> filter(SkColorFilter::CreateModeFilter(SK_ColorB LUE,
149 SkXfermod e::kSrcIn_Mode)); 149 SkXfermod e::kSrcIn_Mode));
150 return SkColorFilterImageFilter::Create(filter, input, cropRect); 150 return SkColorFilterImageFilter::Create(filter, input, cropRect);
151 } 151 }
152 152
153 DEF_TEST(ImageFilter, reporter) { 153 DEF_TEST(ImageFilter, reporter) {
154 { 154 {
155 // Check that two non-clipping color-matrice-filters concatenate into a single filter. 155 // Check that two non-clipping color-matrice-filters concatenate into a single filter.
156 SkAutoTUnref<SkImageFilter> halfBrightness(make_scale(0.5f)); 156 SkAutoTUnref<SkImageFilter> halfBrightness(make_scale(0.5f));
157 SkAutoTUnref<SkImageFilter> quarterBrightness(make_scale(0.5f, halfBrigh tness)); 157 SkAutoTUnref<SkImageFilter> quarterBrightness(make_scale(0.5f, halfBrigh tness));
158 REPORTER_ASSERT(reporter, NULL == quarterBrightness->getInput(0)); 158 REPORTER_ASSERT(reporter, nullptr == quarterBrightness->getInput(0));
159 SkColorFilter* cf; 159 SkColorFilter* cf;
160 REPORTER_ASSERT(reporter, quarterBrightness->asColorFilter(&cf)); 160 REPORTER_ASSERT(reporter, quarterBrightness->asColorFilter(&cf));
161 REPORTER_ASSERT(reporter, cf->asColorMatrix(NULL)); 161 REPORTER_ASSERT(reporter, cf->asColorMatrix(nullptr));
162 cf->unref(); 162 cf->unref();
163 } 163 }
164 164
165 { 165 {
166 // Check that a clipping color-matrice-filter followed by a color-matric e-filters 166 // Check that a clipping color-matrice-filter followed by a color-matric e-filters
167 // concatenates into a single filter, but not a matrixfilter (due to cla mping). 167 // concatenates into a single filter, but not a matrixfilter (due to cla mping).
168 SkAutoTUnref<SkImageFilter> doubleBrightness(make_scale(2.0f)); 168 SkAutoTUnref<SkImageFilter> doubleBrightness(make_scale(2.0f));
169 SkAutoTUnref<SkImageFilter> halfBrightness(make_scale(0.5f, doubleBright ness)); 169 SkAutoTUnref<SkImageFilter> halfBrightness(make_scale(0.5f, doubleBright ness));
170 REPORTER_ASSERT(reporter, NULL == halfBrightness->getInput(0)); 170 REPORTER_ASSERT(reporter, nullptr == halfBrightness->getInput(0));
171 SkColorFilter* cf; 171 SkColorFilter* cf;
172 REPORTER_ASSERT(reporter, halfBrightness->asColorFilter(&cf)); 172 REPORTER_ASSERT(reporter, halfBrightness->asColorFilter(&cf));
173 REPORTER_ASSERT(reporter, !cf->asColorMatrix(NULL)); 173 REPORTER_ASSERT(reporter, !cf->asColorMatrix(nullptr));
174 cf->unref(); 174 cf->unref();
175 } 175 }
176 176
177 { 177 {
178 // Check that a color filter image filter without a crop rect can be 178 // Check that a color filter image filter without a crop rect can be
179 // expressed as a color filter. 179 // expressed as a color filter.
180 SkAutoTUnref<SkImageFilter> gray(make_grayscale(NULL, NULL)); 180 SkAutoTUnref<SkImageFilter> gray(make_grayscale(nullptr, nullptr));
181 REPORTER_ASSERT(reporter, true == gray->asColorFilter(NULL)); 181 REPORTER_ASSERT(reporter, true == gray->asColorFilter(nullptr));
182 } 182 }
183 183
184 { 184 {
185 // Check that a colorfilterimage filter without a crop rect but with an input 185 // Check that a colorfilterimage filter without a crop rect but with an input
186 // that is another colorfilterimage can be expressed as a colorfilter (c omposed). 186 // that is another colorfilterimage can be expressed as a colorfilter (c omposed).
187 SkAutoTUnref<SkImageFilter> mode(make_blue(NULL, NULL)); 187 SkAutoTUnref<SkImageFilter> mode(make_blue(nullptr, nullptr));
188 SkAutoTUnref<SkImageFilter> gray(make_grayscale(mode, NULL)); 188 SkAutoTUnref<SkImageFilter> gray(make_grayscale(mode, nullptr));
189 REPORTER_ASSERT(reporter, true == gray->asColorFilter(NULL)); 189 REPORTER_ASSERT(reporter, true == gray->asColorFilter(nullptr));
190 } 190 }
191 191
192 { 192 {
193 // Test that if we exceed the limit of what ComposeColorFilter can combi ne, we still 193 // Test that if we exceed the limit of what ComposeColorFilter can combi ne, we still
194 // can build the DAG and won't assert if we call asColorFilter. 194 // can build the DAG and won't assert if we call asColorFilter.
195 SkAutoTUnref<SkImageFilter> filter(make_blue(NULL, NULL)); 195 SkAutoTUnref<SkImageFilter> filter(make_blue(nullptr, nullptr));
196 const int kWayTooManyForComposeColorFilter = 100; 196 const int kWayTooManyForComposeColorFilter = 100;
197 for (int i = 0; i < kWayTooManyForComposeColorFilter; ++i) { 197 for (int i = 0; i < kWayTooManyForComposeColorFilter; ++i) {
198 filter.reset(make_blue(filter, NULL)); 198 filter.reset(make_blue(filter, nullptr));
199 // the first few of these will succeed, but after we hit the interna l limit, 199 // the first few of these will succeed, but after we hit the interna l limit,
200 // it will then return false. 200 // it will then return false.
201 (void)filter->asColorFilter(NULL); 201 (void)filter->asColorFilter(nullptr);
202 } 202 }
203 } 203 }
204 204
205 { 205 {
206 // Check that a color filter image filter with a crop rect cannot 206 // Check that a color filter image filter with a crop rect cannot
207 // be expressed as a color filter. 207 // be expressed as a color filter.
208 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(0, 0, 100, 100)); 208 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(0, 0, 100, 100));
209 SkAutoTUnref<SkImageFilter> grayWithCrop(make_grayscale(NULL, &cropRect) ); 209 SkAutoTUnref<SkImageFilter> grayWithCrop(make_grayscale(nullptr, &cropRe ct));
210 REPORTER_ASSERT(reporter, false == grayWithCrop->asColorFilter(NULL)); 210 REPORTER_ASSERT(reporter, false == grayWithCrop->asColorFilter(nullptr)) ;
211 } 211 }
212 212
213 { 213 {
214 // Check that two non-commutative matrices are concatenated in 214 // Check that two non-commutative matrices are concatenated in
215 // the correct order. 215 // the correct order.
216 SkScalar blueToRedMatrix[20] = { 0 }; 216 SkScalar blueToRedMatrix[20] = { 0 };
217 blueToRedMatrix[2] = blueToRedMatrix[18] = SK_Scalar1; 217 blueToRedMatrix[2] = blueToRedMatrix[18] = SK_Scalar1;
218 SkScalar redToGreenMatrix[20] = { 0 }; 218 SkScalar redToGreenMatrix[20] = { 0 };
219 redToGreenMatrix[5] = redToGreenMatrix[18] = SK_Scalar1; 219 redToGreenMatrix[5] = redToGreenMatrix[18] = SK_Scalar1;
220 SkAutoTUnref<SkColorFilter> blueToRed(SkColorMatrixFilter::Create(blueTo RedMatrix)); 220 SkAutoTUnref<SkColorFilter> blueToRed(SkColorMatrixFilter::Create(blueTo RedMatrix));
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 static void test_crop_rects(SkImageFilter::Proxy* proxy, skiatest::Reporter* rep orter) { 269 static void test_crop_rects(SkImageFilter::Proxy* proxy, skiatest::Reporter* rep orter) {
270 // Check that all filters offset to their absolute crop rect, 270 // Check that all filters offset to their absolute crop rect,
271 // unaffected by the input crop rect. 271 // unaffected by the input crop rect.
272 // Tests pass by not asserting. 272 // Tests pass by not asserting.
273 SkBitmap bitmap; 273 SkBitmap bitmap;
274 bitmap.allocN32Pixels(100, 100); 274 bitmap.allocN32Pixels(100, 100);
275 bitmap.eraseARGB(0, 0, 0, 0); 275 bitmap.eraseARGB(0, 0, 0, 0);
276 276
277 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80)); 277 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80));
278 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60)); 278 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60));
279 SkAutoTUnref<SkImageFilter> input(make_grayscale(NULL, &inputCropRect)); 279 SkAutoTUnref<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect));
280 280
281 SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(SK_ColorRED, SkXfermode::kSrcIn_Mode)); 281 SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(SK_ColorRED, SkXfermode::kSrcIn_Mode));
282 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); 282 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1);
283 SkScalar kernel[9] = { 283 SkScalar kernel[9] = {
284 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), 284 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1),
285 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), 285 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1),
286 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), 286 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1),
287 }; 287 };
288 SkISize kernelSize = SkISize::Make(3, 3); 288 SkISize kernelSize = SkISize::Make(3, 3);
289 SkScalar gain = SK_Scalar1, bias = 0; 289 SkScalar gain = SK_Scalar1, bias = 0;
(...skipping 18 matching lines...) Expand all
308 SkTileImageFilter::Create(inputCropRect.rect(), cropRect.rect(), input.g et()), 308 SkTileImageFilter::Create(inputCropRect.rect(), cropRect.rect(), input.g et()),
309 SkXfermodeImageFilter::Create(SkXfermode::Create(SkXfermode::kSrcOver_Mo de), input.get(), input.get(), &cropRect), 309 SkXfermodeImageFilter::Create(SkXfermode::Create(SkXfermode::kSrcOver_Mo de), input.get(), input.get(), &cropRect),
310 }; 310 };
311 311
312 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { 312 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
313 SkImageFilter* filter = filters[i]; 313 SkImageFilter* filter = filters[i];
314 SkBitmap result; 314 SkBitmap result;
315 SkIPoint offset; 315 SkIPoint offset;
316 SkString str; 316 SkString str;
317 str.printf("filter %d", static_cast<int>(i)); 317 str.printf("filter %d", static_cast<int>(i));
318 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), NULL); 318 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), nullpt r);
319 REPORTER_ASSERT_MESSAGE(reporter, filter->filterImage(proxy, bitmap, ctx , 319 REPORTER_ASSERT_MESSAGE(reporter, filter->filterImage(proxy, bitmap, ctx ,
320 &result, &offset), str.c_str()); 320 &result, &offset), str.c_str());
321 REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, st r.c_str()); 321 REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, st r.c_str());
322 } 322 }
323 323
324 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { 324 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
325 SkSafeUnref(filters[i]); 325 SkSafeUnref(filters[i]);
326 } 326 }
327 } 327 }
328 328
329 static SkBitmap make_gradient_circle(int width, int height) { 329 static SkBitmap make_gradient_circle(int width, int height) {
330 SkBitmap bitmap; 330 SkBitmap bitmap;
331 SkScalar x = SkIntToScalar(width / 2); 331 SkScalar x = SkIntToScalar(width / 2);
332 SkScalar y = SkIntToScalar(height / 2); 332 SkScalar y = SkIntToScalar(height / 2);
333 SkScalar radius = SkMinScalar(x, y) * 0.8f; 333 SkScalar radius = SkMinScalar(x, y) * 0.8f;
334 bitmap.allocN32Pixels(width, height); 334 bitmap.allocN32Pixels(width, height);
335 SkCanvas canvas(bitmap); 335 SkCanvas canvas(bitmap);
336 canvas.clear(0x00000000); 336 canvas.clear(0x00000000);
337 SkColor colors[2]; 337 SkColor colors[2];
338 colors[0] = SK_ColorWHITE; 338 colors[0] = SK_ColorWHITE;
339 colors[1] = SK_ColorBLACK; 339 colors[1] = SK_ColorBLACK;
340 SkAutoTUnref<SkShader> shader( 340 SkAutoTUnref<SkShader> shader(
341 SkGradientShader::CreateRadial(SkPoint::Make(x, y), radius, colors, NULL , 2, 341 SkGradientShader::CreateRadial(SkPoint::Make(x, y), radius, colors, null ptr, 2,
342 SkShader::kClamp_TileMode) 342 SkShader::kClamp_TileMode)
343 ); 343 );
344 SkPaint paint; 344 SkPaint paint;
345 paint.setShader(shader); 345 paint.setShader(shader);
346 canvas.drawCircle(x, y, radius, paint); 346 canvas.drawCircle(x, y, radius, paint);
347 return bitmap; 347 return bitmap;
348 } 348 }
349 349
350 static void test_negative_blur_sigma(SkImageFilter::Proxy* proxy, skiatest::Repo rter* reporter) { 350 static void test_negative_blur_sigma(SkImageFilter::Proxy* proxy, skiatest::Repo rter* reporter) {
351 // Check that SkBlurImageFilter will accept a negative sigma, either in 351 // Check that SkBlurImageFilter will accept a negative sigma, either in
352 // the given arguments or after CTM application. 352 // the given arguments or after CTM application.
353 int width = 32, height = 32; 353 int width = 32, height = 32;
354 SkScalar five = SkIntToScalar(5); 354 SkScalar five = SkIntToScalar(5);
355 355
356 SkAutoTUnref<SkBlurImageFilter> positiveFilter( 356 SkAutoTUnref<SkBlurImageFilter> positiveFilter(
357 SkBlurImageFilter::Create(five, five) 357 SkBlurImageFilter::Create(five, five)
358 ); 358 );
359 359
360 SkAutoTUnref<SkBlurImageFilter> negativeFilter( 360 SkAutoTUnref<SkBlurImageFilter> negativeFilter(
361 SkBlurImageFilter::Create(-five, five) 361 SkBlurImageFilter::Create(-five, five)
362 ); 362 );
363 363
364 SkBitmap gradient = make_gradient_circle(width, height); 364 SkBitmap gradient = make_gradient_circle(width, height);
365 SkBitmap positiveResult1, negativeResult1; 365 SkBitmap positiveResult1, negativeResult1;
366 SkBitmap positiveResult2, negativeResult2; 366 SkBitmap positiveResult2, negativeResult2;
367 SkIPoint offset; 367 SkIPoint offset;
368 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), NULL); 368 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), nullptr);
369 positiveFilter->filterImage(proxy, gradient, ctx, &positiveResult1, &offset) ; 369 positiveFilter->filterImage(proxy, gradient, ctx, &positiveResult1, &offset) ;
370 negativeFilter->filterImage(proxy, gradient, ctx, &negativeResult1, &offset) ; 370 negativeFilter->filterImage(proxy, gradient, ctx, &negativeResult1, &offset) ;
371 SkMatrix negativeScale; 371 SkMatrix negativeScale;
372 negativeScale.setScale(-SK_Scalar1, SK_Scalar1); 372 negativeScale.setScale(-SK_Scalar1, SK_Scalar1);
373 SkImageFilter::Context negativeCTX(negativeScale, SkIRect::MakeLargest(), NU LL); 373 SkImageFilter::Context negativeCTX(negativeScale, SkIRect::MakeLargest(), nu llptr);
374 positiveFilter->filterImage(proxy, gradient, negativeCTX, &negativeResult2, &offset); 374 positiveFilter->filterImage(proxy, gradient, negativeCTX, &negativeResult2, &offset);
375 negativeFilter->filterImage(proxy, gradient, negativeCTX, &positiveResult2, &offset); 375 negativeFilter->filterImage(proxy, gradient, negativeCTX, &positiveResult2, &offset);
376 SkAutoLockPixels lockP1(positiveResult1); 376 SkAutoLockPixels lockP1(positiveResult1);
377 SkAutoLockPixels lockP2(positiveResult2); 377 SkAutoLockPixels lockP2(positiveResult2);
378 SkAutoLockPixels lockN1(negativeResult1); 378 SkAutoLockPixels lockN1(negativeResult1);
379 SkAutoLockPixels lockN2(negativeResult2); 379 SkAutoLockPixels lockN2(negativeResult2);
380 for (int y = 0; y < height; y++) { 380 for (int y = 0; y < height; y++) {
381 int diffs = memcmp(positiveResult1.getAddr32(0, y), negativeResult1.getA ddr32(0, y), positiveResult1.rowBytes()); 381 int diffs = memcmp(positiveResult1.getAddr32(0, y), negativeResult1.getA ddr32(0, y), positiveResult1.rowBytes());
382 REPORTER_ASSERT(reporter, !diffs); 382 REPORTER_ASSERT(reporter, !diffs);
383 if (diffs) { 383 if (diffs) {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_ColorGREEN, 462 SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_ColorGREEN,
463 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode) }, 463 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode) },
464 { "diffuse lighting", SkLightingImageFilter::CreatePointLitDiffuse( 464 { "diffuse lighting", SkLightingImageFilter::CreatePointLitDiffuse(
465 location, SK_ColorGREEN, 0, 0) }, 465 location, SK_ColorGREEN, 0, 0) },
466 { "specular lighting", 466 { "specular lighting",
467 SkLightingImageFilter::CreatePointLitSpecular(location, SK_ColorGR EEN, 0, 0, 0) }, 467 SkLightingImageFilter::CreatePointLitSpecular(location, SK_ColorGR EEN, 0, 0, 0) },
468 { "matrix convolution", 468 { "matrix convolution",
469 SkMatrixConvolutionImageFilter::Create( 469 SkMatrixConvolutionImageFilter::Create(
470 kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1), 470 kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1),
471 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false) }, 471 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false) },
472 { "merge", SkMergeImageFilter::Create(NULL, NULL, SkXfermode::kSrcOver_M ode) }, 472 { "merge", SkMergeImageFilter::Create(nullptr, nullptr, SkXfermode::kSrc Over_Mode) },
473 { "merge with disjoint inputs", SkMergeImageFilter::Create( 473 { "merge with disjoint inputs", SkMergeImageFilter::Create(
474 rectShaderFilterLeft, rectShaderFilterRight, SkXfermode::kSrcOver_ Mode) }, 474 rectShaderFilterLeft, rectShaderFilterRight, SkXfermode::kSrcOver_ Mode) },
475 { "offset", SkOffsetImageFilter::Create(SK_Scalar1, SK_Scalar1) }, 475 { "offset", SkOffsetImageFilter::Create(SK_Scalar1, SK_Scalar1) },
476 { "dilate", SkDilateImageFilter::Create(3, 2) }, 476 { "dilate", SkDilateImageFilter::Create(3, 2) },
477 { "erode", SkErodeImageFilter::Create(2, 3) }, 477 { "erode", SkErodeImageFilter::Create(2, 3) },
478 { "tile", SkTileImageFilter::Create(SkRect::MakeXYWH(0, 0, 50, 50), 478 { "tile", SkTileImageFilter::Create(SkRect::MakeXYWH(0, 0, 50, 50),
479 SkRect::MakeXYWH(0, 0, 100, 100), NU LL) }, 479 SkRect::MakeXYWH(0, 0, 100, 100), nu llptr) },
480 { "matrix", SkImageFilter::CreateMatrixFilter(matrix, kLow_SkFilterQuali ty) }, 480 { "matrix", SkImageFilter::CreateMatrixFilter(matrix, kLow_SkFilterQuali ty) },
481 { "blur and offset", SkOffsetImageFilter::Create(five, five, blur.get()) }, 481 { "blur and offset", SkOffsetImageFilter::Create(five, five, blur.get()) },
482 { "picture and blur", SkBlurImageFilter::Create(five, five, pictureFilte r.get()) }, 482 { "picture and blur", SkBlurImageFilter::Create(five, five, pictureFilte r.get()) },
483 { "rect shader and blur", SkBlurImageFilter::Create(five, five, rectShad erFilter.get()) }, 483 { "rect shader and blur", SkBlurImageFilter::Create(five, five, rectShad erFilter.get()) },
484 }; 484 };
485 485
486 SkBitmap untiledResult, tiledResult; 486 SkBitmap untiledResult, tiledResult;
487 int width = 64, height = 64; 487 int width = 64, height = 64;
488 untiledResult.allocN32Pixels(width, height); 488 untiledResult.allocN32Pixels(width, height);
489 tiledResult.allocN32Pixels(width, height); 489 tiledResult.allocN32Pixels(width, height);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 // Check that matrix filter when drawn tiled with BBH exactly 565 // Check that matrix filter when drawn tiled with BBH exactly
566 // matches the same thing drawn without BBH. 566 // matches the same thing drawn without BBH.
567 // Tests pass by not asserting. 567 // Tests pass by not asserting.
568 568
569 const int width = 200, height = 200; 569 const int width = 200, height = 200;
570 const int tileSize = 100; 570 const int tileSize = 100;
571 SkBitmap result1, result2; 571 SkBitmap result1, result2;
572 SkRTreeFactory factory; 572 SkRTreeFactory factory;
573 573
574 draw_saveLayer_picture(width, height, tileSize, &factory, &result1); 574 draw_saveLayer_picture(width, height, tileSize, &factory, &result1);
575 draw_saveLayer_picture(width, height, tileSize, NULL, &result2); 575 draw_saveLayer_picture(width, height, tileSize, nullptr, &result2);
576 576
577 for (int y = 0; y < height; y++) { 577 for (int y = 0; y < height; y++) {
578 int diffs = memcmp(result1.getAddr32(0, y), result2.getAddr32(0, y), res ult1.rowBytes()); 578 int diffs = memcmp(result1.getAddr32(0, y), result2.getAddr32(0, y), res ult1.rowBytes());
579 REPORTER_ASSERT(reporter, !diffs); 579 REPORTER_ASSERT(reporter, !diffs);
580 if (diffs) { 580 if (diffs) {
581 break; 581 break;
582 } 582 }
583 } 583 }
584 } 584 }
585 585
586 static SkImageFilter* makeBlur(SkImageFilter* input = NULL) { 586 static SkImageFilter* makeBlur(SkImageFilter* input = nullptr) {
587 return SkBlurImageFilter::Create(SK_Scalar1, SK_Scalar1, input); 587 return SkBlurImageFilter::Create(SK_Scalar1, SK_Scalar1, input);
588 } 588 }
589 589
590 static SkImageFilter* makeDropShadow(SkImageFilter* input = NULL) { 590 static SkImageFilter* makeDropShadow(SkImageFilter* input = nullptr) {
591 return SkDropShadowImageFilter::Create( 591 return SkDropShadowImageFilter::Create(
592 SkIntToScalar(100), SkIntToScalar(100), 592 SkIntToScalar(100), SkIntToScalar(100),
593 SkIntToScalar(10), SkIntToScalar(10), 593 SkIntToScalar(10), SkIntToScalar(10),
594 SK_ColorBLUE, SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMo de, 594 SK_ColorBLUE, SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMo de,
595 input, NULL); 595 input, nullptr);
596 } 596 }
597 597
598 DEF_TEST(ImageFilterBlurThenShadowBounds, reporter) { 598 DEF_TEST(ImageFilterBlurThenShadowBounds, reporter) {
599 SkAutoTUnref<SkImageFilter> filter1(makeBlur()); 599 SkAutoTUnref<SkImageFilter> filter1(makeBlur());
600 SkAutoTUnref<SkImageFilter> filter2(makeDropShadow(filter1.get())); 600 SkAutoTUnref<SkImageFilter> filter2(makeDropShadow(filter1.get()));
601 601
602 SkIRect bounds = SkIRect::MakeXYWH(0, 0, 100, 100); 602 SkIRect bounds = SkIRect::MakeXYWH(0, 0, 100, 100);
603 SkIRect expectedBounds = SkIRect::MakeXYWH(-133, -133, 236, 236); 603 SkIRect expectedBounds = SkIRect::MakeXYWH(-133, -133, 236, 236);
604 filter2->filterBounds(bounds, SkMatrix::I(), &bounds); 604 filter2->filterBounds(bounds, SkMatrix::I(), &bounds);
605 605
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 composedFilter->computeFastBounds(boundsSrc, &boundsDst); 640 composedFilter->computeFastBounds(boundsSrc, &boundsDst);
641 641
642 REPORTER_ASSERT(reporter, boundsDst == expectedBounds); 642 REPORTER_ASSERT(reporter, boundsDst == expectedBounds);
643 } 643 }
644 644
645 static void draw_blurred_rect(SkCanvas* canvas) { 645 static void draw_blurred_rect(SkCanvas* canvas) {
646 SkAutoTUnref<SkImageFilter> filter(SkBlurImageFilter::Create(SkIntToScalar(8 ), 0)); 646 SkAutoTUnref<SkImageFilter> filter(SkBlurImageFilter::Create(SkIntToScalar(8 ), 0));
647 SkPaint filterPaint; 647 SkPaint filterPaint;
648 filterPaint.setColor(SK_ColorWHITE); 648 filterPaint.setColor(SK_ColorWHITE);
649 filterPaint.setImageFilter(filter); 649 filterPaint.setImageFilter(filter);
650 canvas->saveLayer(NULL, &filterPaint); 650 canvas->saveLayer(nullptr, &filterPaint);
651 SkPaint whitePaint; 651 SkPaint whitePaint;
652 whitePaint.setColor(SK_ColorWHITE); 652 whitePaint.setColor(SK_ColorWHITE);
653 canvas->drawRect(SkRect::Make(SkIRect::MakeWH(4, 4)), whitePaint); 653 canvas->drawRect(SkRect::Make(SkIRect::MakeWH(4, 4)), whitePaint);
654 canvas->restore(); 654 canvas->restore();
655 } 655 }
656 656
657 static void draw_picture_clipped(SkCanvas* canvas, const SkRect& clipRect, const SkPicture* picture) { 657 static void draw_picture_clipped(SkCanvas* canvas, const SkRect& clipRect, const SkPicture* picture) {
658 canvas->save(); 658 canvas->save();
659 canvas->clipRect(clipRect); 659 canvas->clipRect(clipRect);
660 canvas->drawPicture(picture); 660 canvas->drawPicture(picture);
(...skipping 18 matching lines...) Expand all
679 679
680 canvas1.clear(0); 680 canvas1.clear(0);
681 canvas2.clear(0); 681 canvas2.clear(0);
682 682
683 SkRTreeFactory factory; 683 SkRTreeFactory factory;
684 684
685 SkPictureRecorder recorder1, recorder2; 685 SkPictureRecorder recorder1, recorder2;
686 // The only difference between these two pictures is that one has RTree acel eration. 686 // The only difference between these two pictures is that one has RTree acel eration.
687 SkCanvas* recordingCanvas1 = recorder1.beginRecording(SkIntToScalar(width), 687 SkCanvas* recordingCanvas1 = recorder1.beginRecording(SkIntToScalar(width),
688 SkIntToScalar(height), 688 SkIntToScalar(height),
689 NULL, 0); 689 nullptr, 0);
690 SkCanvas* recordingCanvas2 = recorder2.beginRecording(SkIntToScalar(width), 690 SkCanvas* recordingCanvas2 = recorder2.beginRecording(SkIntToScalar(width),
691 SkIntToScalar(height), 691 SkIntToScalar(height),
692 &factory, 0); 692 &factory, 0);
693 draw_blurred_rect(recordingCanvas1); 693 draw_blurred_rect(recordingCanvas1);
694 draw_blurred_rect(recordingCanvas2); 694 draw_blurred_rect(recordingCanvas2);
695 SkAutoTUnref<SkPicture> picture1(recorder1.endRecording()); 695 SkAutoTUnref<SkPicture> picture1(recorder1.endRecording());
696 SkAutoTUnref<SkPicture> picture2(recorder2.endRecording()); 696 SkAutoTUnref<SkPicture> picture2(recorder2.endRecording());
697 for (int y = 0; y < height; y += tileSize) { 697 for (int y = 0; y < height; y += tileSize) {
698 for (int x = 0; x < width; x += tileSize) { 698 for (int x = 0; x < width; x += tileSize) {
699 SkRect tileRect = SkRect::Make(SkIRect::MakeXYWH(x, y, tileSize, til eSize)); 699 SkRect tileRect = SkRect::Make(SkIRect::MakeXYWH(x, y, tileSize, til eSize));
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 SkMatrix expectedMatrix = canvas.getTotalMatrix(); 787 SkMatrix expectedMatrix = canvas.getTotalMatrix();
788 788
789 SkRTreeFactory factory; 789 SkRTreeFactory factory;
790 SkPictureRecorder recorder; 790 SkPictureRecorder recorder;
791 SkCanvas* recordingCanvas = recorder.beginRecording(100, 100, &factory, 0); 791 SkCanvas* recordingCanvas = recorder.beginRecording(100, 100, &factory, 0);
792 792
793 SkPaint paint; 793 SkPaint paint;
794 SkAutoTUnref<MatrixTestImageFilter> imageFilter( 794 SkAutoTUnref<MatrixTestImageFilter> imageFilter(
795 new MatrixTestImageFilter(reporter, expectedMatrix)); 795 new MatrixTestImageFilter(reporter, expectedMatrix));
796 paint.setImageFilter(imageFilter.get()); 796 paint.setImageFilter(imageFilter.get());
797 recordingCanvas->saveLayer(NULL, &paint); 797 recordingCanvas->saveLayer(nullptr, &paint);
798 SkPaint solidPaint; 798 SkPaint solidPaint;
799 solidPaint.setColor(0xFFFFFFFF); 799 solidPaint.setColor(0xFFFFFFFF);
800 recordingCanvas->save(); 800 recordingCanvas->save();
801 recordingCanvas->scale(SkIntToScalar(10), SkIntToScalar(10)); 801 recordingCanvas->scale(SkIntToScalar(10), SkIntToScalar(10));
802 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(100, 100)), solidPain t); 802 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(100, 100)), solidPain t);
803 recordingCanvas->restore(); // scale 803 recordingCanvas->restore(); // scale
804 recordingCanvas->restore(); // saveLayer 804 recordingCanvas->restore(); // saveLayer
805 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); 805 SkAutoTUnref<SkPicture> picture(recorder.endRecording());
806 806
807 canvas.drawPicture(picture); 807 canvas.drawPicture(picture);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 // Create an SkPicture which simply draws a green 1x1 rectangle. 875 // Create an SkPicture which simply draws a green 1x1 rectangle.
876 SkPaint greenPaint; 876 SkPaint greenPaint;
877 greenPaint.setColor(SK_ColorGREEN); 877 greenPaint.setColor(SK_ColorGREEN);
878 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPaint); 878 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPaint);
879 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); 879 SkAutoTUnref<SkPicture> picture(recorder.endRecording());
880 880
881 SkAutoTUnref<SkImageFilter> imageFilter(SkPictureImageFilter::Create(picture .get())); 881 SkAutoTUnref<SkImageFilter> imageFilter(SkPictureImageFilter::Create(picture .get()));
882 882
883 SkBitmap result; 883 SkBitmap result;
884 SkIPoint offset; 884 SkIPoint offset;
885 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), NUL L); 885 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul lptr);
886 SkBitmap bitmap; 886 SkBitmap bitmap;
887 bitmap.allocN32Pixels(2, 2); 887 bitmap.allocN32Pixels(2, 2);
888 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); 888 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
889 SkBitmapDevice device(bitmap, props); 889 SkBitmapDevice device(bitmap, props);
890 SkImageFilter::Proxy proxy(&device); 890 SkImageFilter::Proxy proxy(&device);
891 REPORTER_ASSERT(reporter, !imageFilter->filterImage(&proxy, bitmap, ctx, &re sult, &offset)); 891 REPORTER_ASSERT(reporter, !imageFilter->filterImage(&proxy, bitmap, ctx, &re sult, &offset));
892 } 892 }
893 893
894 DEF_TEST(ImageFilterEmptySaveLayer, reporter) { 894 DEF_TEST(ImageFilterEmptySaveLayer, reporter) {
895 // Even when there's an empty saveLayer()/restore(), ensure that an image 895 // Even when there's an empty saveLayer()/restore(), ensure that an image
(...skipping 21 matching lines...) Expand all
917 recordingCanvas->saveLayer(&bounds, &imageFilterPaint); 917 recordingCanvas->saveLayer(&bounds, &imageFilterPaint);
918 recordingCanvas->restore(); 918 recordingCanvas->restore();
919 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); 919 SkAutoTUnref<SkPicture> picture(recorder.endRecording());
920 920
921 canvas.clear(0); 921 canvas.clear(0);
922 canvas.drawPicture(picture); 922 canvas.drawPicture(picture);
923 uint32_t pixel = *bitmap.getAddr32(0, 0); 923 uint32_t pixel = *bitmap.getAddr32(0, 0);
924 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); 924 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN);
925 925
926 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); 926 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0);
927 recordingCanvas->saveLayer(NULL, &imageFilterPaint); 927 recordingCanvas->saveLayer(nullptr, &imageFilterPaint);
928 recordingCanvas->restore(); 928 recordingCanvas->restore();
929 SkAutoTUnref<SkPicture> picture2(recorder.endRecording()); 929 SkAutoTUnref<SkPicture> picture2(recorder.endRecording());
930 930
931 canvas.clear(0); 931 canvas.clear(0);
932 canvas.drawPicture(picture2); 932 canvas.drawPicture(picture2);
933 pixel = *bitmap.getAddr32(0, 0); 933 pixel = *bitmap.getAddr32(0, 0);
934 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); 934 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN);
935 935
936 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); 936 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0);
937 recordingCanvas->saveLayer(&bounds, &colorFilterPaint); 937 recordingCanvas->saveLayer(&bounds, &colorFilterPaint);
(...skipping 24 matching lines...) Expand all
962 temp.allocN32Pixels(100, 100); 962 temp.allocN32Pixels(100, 100);
963 SkCanvas canvas(temp); 963 SkCanvas canvas(temp);
964 test_huge_blur(&canvas, reporter); 964 test_huge_blur(&canvas, reporter);
965 } 965 }
966 966
967 DEF_TEST(MatrixConvolutionSanityTest, reporter) { 967 DEF_TEST(MatrixConvolutionSanityTest, reporter) {
968 SkScalar kernel[1] = { 0 }; 968 SkScalar kernel[1] = { 0 };
969 SkScalar gain = SK_Scalar1, bias = 0; 969 SkScalar gain = SK_Scalar1, bias = 0;
970 SkIPoint kernelOffset = SkIPoint::Make(1, 1); 970 SkIPoint kernelOffset = SkIPoint::Make(1, 1);
971 971
972 // Check that an enormous (non-allocatable) kernel gives a NULL filter. 972 // Check that an enormous (non-allocatable) kernel gives a nullptr filter.
973 SkAutoTUnref<SkImageFilter> conv(SkMatrixConvolutionImageFilter::Create( 973 SkAutoTUnref<SkImageFilter> conv(SkMatrixConvolutionImageFilter::Create(
974 SkISize::Make(1<<30, 1<<30), 974 SkISize::Make(1<<30, 1<<30),
975 kernel, 975 kernel,
976 gain, 976 gain,
977 bias, 977 bias,
978 kernelOffset, 978 kernelOffset,
979 SkMatrixConvolutionImageFilter::kRepeat_TileMode, 979 SkMatrixConvolutionImageFilter::kRepeat_TileMode,
980 false)); 980 false));
981 981
982 REPORTER_ASSERT(reporter, NULL == conv.get()); 982 REPORTER_ASSERT(reporter, nullptr == conv.get());
983 983
984 // Check that a NULL kernel gives a NULL filter. 984 // Check that a nullptr kernel gives a nullptr filter.
985 conv.reset(SkMatrixConvolutionImageFilter::Create( 985 conv.reset(SkMatrixConvolutionImageFilter::Create(
986 SkISize::Make(1, 1), 986 SkISize::Make(1, 1),
987 NULL, 987 nullptr,
988 gain, 988 gain,
989 bias, 989 bias,
990 kernelOffset, 990 kernelOffset,
991 SkMatrixConvolutionImageFilter::kRepeat_TileMode, 991 SkMatrixConvolutionImageFilter::kRepeat_TileMode,
992 false)); 992 false));
993 993
994 REPORTER_ASSERT(reporter, NULL == conv.get()); 994 REPORTER_ASSERT(reporter, nullptr == conv.get());
995 995
996 // Check that a kernel width < 1 gives a NULL filter. 996 // Check that a kernel width < 1 gives a nullptr filter.
997 conv.reset(SkMatrixConvolutionImageFilter::Create( 997 conv.reset(SkMatrixConvolutionImageFilter::Create(
998 SkISize::Make(0, 1), 998 SkISize::Make(0, 1),
999 kernel, 999 kernel,
1000 gain, 1000 gain,
1001 bias, 1001 bias,
1002 kernelOffset, 1002 kernelOffset,
1003 SkMatrixConvolutionImageFilter::kRepeat_TileMode, 1003 SkMatrixConvolutionImageFilter::kRepeat_TileMode,
1004 false)); 1004 false));
1005 1005
1006 REPORTER_ASSERT(reporter, NULL == conv.get()); 1006 REPORTER_ASSERT(reporter, nullptr == conv.get());
1007 1007
1008 // Check that kernel height < 1 gives a NULL filter. 1008 // Check that kernel height < 1 gives a nullptr filter.
1009 conv.reset(SkMatrixConvolutionImageFilter::Create( 1009 conv.reset(SkMatrixConvolutionImageFilter::Create(
1010 SkISize::Make(1, -1), 1010 SkISize::Make(1, -1),
1011 kernel, 1011 kernel,
1012 gain, 1012 gain,
1013 bias, 1013 bias,
1014 kernelOffset, 1014 kernelOffset,
1015 SkMatrixConvolutionImageFilter::kRepeat_TileMode, 1015 SkMatrixConvolutionImageFilter::kRepeat_TileMode,
1016 false)); 1016 false));
1017 1017
1018 REPORTER_ASSERT(reporter, NULL == conv.get()); 1018 REPORTER_ASSERT(reporter, nullptr == conv.get());
1019 } 1019 }
1020 1020
1021 static void test_xfermode_cropped_input(SkCanvas* canvas, skiatest::Reporter* re porter) { 1021 static void test_xfermode_cropped_input(SkCanvas* canvas, skiatest::Reporter* re porter) {
1022 canvas->clear(0); 1022 canvas->clear(0);
1023 1023
1024 SkBitmap bitmap; 1024 SkBitmap bitmap;
1025 bitmap.allocN32Pixels(1, 1); 1025 bitmap.allocN32Pixels(1, 1);
1026 bitmap.eraseARGB(255, 255, 255, 255); 1026 bitmap.eraseARGB(255, 255, 255, 255);
1027 1027
1028 SkAutoTUnref<SkColorFilter> green( 1028 SkAutoTUnref<SkColorFilter> green(
1029 SkColorFilter::CreateModeFilter(SK_ColorGREEN, SkXfermode::kSrcIn_Mode)) ; 1029 SkColorFilter::CreateModeFilter(SK_ColorGREEN, SkXfermode::kSrcIn_Mode)) ;
1030 SkAutoTUnref<SkColorFilterImageFilter> greenFilter( 1030 SkAutoTUnref<SkColorFilterImageFilter> greenFilter(
1031 SkColorFilterImageFilter::Create(green.get())); 1031 SkColorFilterImageFilter::Create(green.get()));
1032 SkImageFilter::CropRect cropRect(SkRect::MakeEmpty()); 1032 SkImageFilter::CropRect cropRect(SkRect::MakeEmpty());
1033 SkAutoTUnref<SkColorFilterImageFilter> croppedOut( 1033 SkAutoTUnref<SkColorFilterImageFilter> croppedOut(
1034 SkColorFilterImageFilter::Create(green.get(), NULL, &cropRect)); 1034 SkColorFilterImageFilter::Create(green.get(), nullptr, &cropRect));
1035 1035
1036 // Check that an xfermode image filter whose input has been cropped out stil l draws the other 1036 // Check that an xfermode image filter whose input has been cropped out stil l draws the other
1037 // input. Also check that drawing with both inputs cropped out doesn't cause a GPU warning. 1037 // input. Also check that drawing with both inputs cropped out doesn't cause a GPU warning.
1038 SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrcOver_Mode); 1038 SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrcOver_Mode);
1039 SkAutoTUnref<SkImageFilter> xfermodeNoFg( 1039 SkAutoTUnref<SkImageFilter> xfermodeNoFg(
1040 SkXfermodeImageFilter::Create(mode, greenFilter, croppedOut)); 1040 SkXfermodeImageFilter::Create(mode, greenFilter, croppedOut));
1041 SkAutoTUnref<SkImageFilter> xfermodeNoBg( 1041 SkAutoTUnref<SkImageFilter> xfermodeNoBg(
1042 SkXfermodeImageFilter::Create(mode, croppedOut, greenFilter)); 1042 SkXfermodeImageFilter::Create(mode, croppedOut, greenFilter));
1043 SkAutoTUnref<SkImageFilter> xfermodeNoFgNoBg( 1043 SkAutoTUnref<SkImageFilter> xfermodeNoFgNoBg(
1044 SkXfermodeImageFilter::Create(mode, croppedOut, croppedOut)); 1044 SkXfermodeImageFilter::Create(mode, croppedOut, croppedOut));
(...skipping 30 matching lines...) Expand all
1075 1075
1076 SkMatrix matrix; 1076 SkMatrix matrix;
1077 matrix.setScale(SkIntToScalar(2), SkIntToScalar(2)); 1077 matrix.setScale(SkIntToScalar(2), SkIntToScalar(2));
1078 matrix.postTranslate(SkIntToScalar(-20), SkIntToScalar(-20)); 1078 matrix.postTranslate(SkIntToScalar(-20), SkIntToScalar(-20));
1079 SkAutoTUnref<SkImageFilter> matrixFilter( 1079 SkAutoTUnref<SkImageFilter> matrixFilter(
1080 SkImageFilter::CreateMatrixFilter(matrix, kLow_SkFilterQuality)); 1080 SkImageFilter::CreateMatrixFilter(matrix, kLow_SkFilterQuality));
1081 1081
1082 // Test that saveLayer() with a filter nested inside another saveLayer() app lies the 1082 // Test that saveLayer() with a filter nested inside another saveLayer() app lies the
1083 // correct offset to the filter matrix. 1083 // correct offset to the filter matrix.
1084 SkRect bounds1 = SkRect::MakeXYWH(10, 10, 30, 30); 1084 SkRect bounds1 = SkRect::MakeXYWH(10, 10, 30, 30);
1085 canvas.saveLayer(&bounds1, NULL); 1085 canvas.saveLayer(&bounds1, nullptr);
1086 SkPaint filterPaint; 1086 SkPaint filterPaint;
1087 filterPaint.setImageFilter(matrixFilter); 1087 filterPaint.setImageFilter(matrixFilter);
1088 SkRect bounds2 = SkRect::MakeXYWH(20, 20, 10, 10); 1088 SkRect bounds2 = SkRect::MakeXYWH(20, 20, 10, 10);
1089 canvas.saveLayer(&bounds2, &filterPaint); 1089 canvas.saveLayer(&bounds2, &filterPaint);
1090 SkPaint greenPaint; 1090 SkPaint greenPaint;
1091 greenPaint.setColor(SK_ColorGREEN); 1091 greenPaint.setColor(SK_ColorGREEN);
1092 canvas.drawRect(bounds2, greenPaint); 1092 canvas.drawRect(bounds2, greenPaint);
1093 canvas.restore(); 1093 canvas.restore();
1094 canvas.restore(); 1094 canvas.restore();
1095 SkPaint strokePaint; 1095 SkPaint strokePaint;
1096 strokePaint.setStyle(SkPaint::kStroke_Style); 1096 strokePaint.setStyle(SkPaint::kStroke_Style);
1097 strokePaint.setColor(SK_ColorRED); 1097 strokePaint.setColor(SK_ColorRED);
1098 1098
1099 SkImageInfo info = SkImageInfo::Make(1, 1, kBGRA_8888_SkColorType, kUnpremul _SkAlphaType); 1099 SkImageInfo info = SkImageInfo::Make(1, 1, kBGRA_8888_SkColorType, kUnpremul _SkAlphaType);
1100 uint32_t pixel; 1100 uint32_t pixel;
1101 canvas.readPixels(info, &pixel, 4, 25, 25); 1101 canvas.readPixels(info, &pixel, 4, 25, 25);
1102 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); 1102 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN);
1103 1103
1104 // Test that drawSprite() with a filter nested inside a saveLayer() applies the 1104 // Test that drawSprite() with a filter nested inside a saveLayer() applies the
1105 // correct offset to the filter matrix. 1105 // correct offset to the filter matrix.
1106 canvas.clear(0x0); 1106 canvas.clear(0x0);
1107 canvas.readPixels(info, &pixel, 4, 25, 25); 1107 canvas.readPixels(info, &pixel, 4, 25, 25);
1108 canvas.saveLayer(&bounds1, NULL); 1108 canvas.saveLayer(&bounds1, nullptr);
1109 canvas.drawSprite(bitmap, 20, 20, &filterPaint); 1109 canvas.drawSprite(bitmap, 20, 20, &filterPaint);
1110 canvas.restore(); 1110 canvas.restore();
1111 1111
1112 canvas.readPixels(info, &pixel, 4, 25, 25); 1112 canvas.readPixels(info, &pixel, 4, 25, 25);
1113 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); 1113 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN);
1114 } 1114 }
1115 1115
1116 DEF_TEST(XfermodeImageFilterCroppedInput, reporter) { 1116 DEF_TEST(XfermodeImageFilterCroppedInput, reporter) {
1117 SkBitmap temp; 1117 SkBitmap temp;
1118 temp.allocN32Pixels(100, 100); 1118 temp.allocN32Pixels(100, 100);
1119 SkCanvas canvas(temp); 1119 SkCanvas canvas(temp);
1120 test_xfermode_cropped_input(&canvas, reporter); 1120 test_xfermode_cropped_input(&canvas, reporter);
1121 } 1121 }
1122 1122
1123 DEF_TEST(ComposedImageFilterOffset, reporter) { 1123 DEF_TEST(ComposedImageFilterOffset, reporter) {
1124 SkBitmap bitmap; 1124 SkBitmap bitmap;
1125 bitmap.allocN32Pixels(100, 100); 1125 bitmap.allocN32Pixels(100, 100);
1126 bitmap.eraseARGB(0, 0, 0, 0); 1126 bitmap.eraseARGB(0, 0, 0, 0);
1127 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); 1127 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
1128 SkBitmapDevice device(bitmap, props); 1128 SkBitmapDevice device(bitmap, props);
1129 SkImageFilter::Proxy proxy(&device); 1129 SkImageFilter::Proxy proxy(&device);
1130 1130
1131 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20)); 1131 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20));
1132 SkAutoTUnref<SkImageFilter> offsetFilter(SkOffsetImageFilter::Create(0, 0, N ULL, &cropRect)); 1132 SkAutoTUnref<SkImageFilter> offsetFilter(SkOffsetImageFilter::Create(0, 0, n ullptr, &cropRect));
1133 SkAutoTUnref<SkImageFilter> blurFilter(makeBlur()); 1133 SkAutoTUnref<SkImageFilter> blurFilter(makeBlur());
1134 SkAutoTUnref<SkImageFilter> composedFilter(SkComposeImageFilter::Create(blur Filter, offsetFilter.get())); 1134 SkAutoTUnref<SkImageFilter> composedFilter(SkComposeImageFilter::Create(blur Filter, offsetFilter.get()));
1135 SkBitmap result; 1135 SkBitmap result;
1136 SkIPoint offset; 1136 SkIPoint offset;
1137 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), NULL); 1137 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), nullptr);
1138 REPORTER_ASSERT(reporter, composedFilter->filterImage(&proxy, bitmap, ctx, & result, &offset)); 1138 REPORTER_ASSERT(reporter, composedFilter->filterImage(&proxy, bitmap, ctx, & result, &offset));
1139 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0); 1139 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0);
1140 } 1140 }
1141 1141
1142 DEF_TEST(PartialCropRect, reporter) { 1142 DEF_TEST(PartialCropRect, reporter) {
1143 SkBitmap bitmap; 1143 SkBitmap bitmap;
1144 bitmap.allocN32Pixels(100, 100); 1144 bitmap.allocN32Pixels(100, 100);
1145 bitmap.eraseARGB(0, 0, 0, 0); 1145 bitmap.eraseARGB(0, 0, 0, 0);
1146 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); 1146 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
1147 SkBitmapDevice device(bitmap, props); 1147 SkBitmapDevice device(bitmap, props);
1148 SkImageFilter::Proxy proxy(&device); 1148 SkImageFilter::Proxy proxy(&device);
1149 1149
1150 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(100, 0, 20, 30), 1150 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(100, 0, 20, 30),
1151 SkImageFilter::CropRect::kHasWidth_CropEdge | SkImageFilter::CropRect::k HasHeight_CropEdge); 1151 SkImageFilter::CropRect::kHasWidth_CropEdge | SkImageFilter::CropRect::k HasHeight_CropEdge);
1152 SkAutoTUnref<SkImageFilter> filter(make_grayscale(NULL, &cropRect)); 1152 SkAutoTUnref<SkImageFilter> filter(make_grayscale(nullptr, &cropRect));
1153 SkBitmap result; 1153 SkBitmap result;
1154 SkIPoint offset; 1154 SkIPoint offset;
1155 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), NULL); 1155 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), nullptr);
1156 REPORTER_ASSERT(reporter, filter->filterImage(&proxy, bitmap, ctx, &result, &offset)); 1156 REPORTER_ASSERT(reporter, filter->filterImage(&proxy, bitmap, ctx, &result, &offset));
1157 REPORTER_ASSERT(reporter, offset.fX == 0); 1157 REPORTER_ASSERT(reporter, offset.fX == 0);
1158 REPORTER_ASSERT(reporter, offset.fY == 0); 1158 REPORTER_ASSERT(reporter, offset.fY == 0);
1159 REPORTER_ASSERT(reporter, result.width() == 20); 1159 REPORTER_ASSERT(reporter, result.width() == 20);
1160 REPORTER_ASSERT(reporter, result.height() == 30); 1160 REPORTER_ASSERT(reporter, result.height() == 30);
1161 } 1161 }
1162 1162
1163 DEF_TEST(ImageFilterCanComputeFastBounds, reporter) { 1163 DEF_TEST(ImageFilterCanComputeFastBounds, reporter) {
1164 1164
1165 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); 1165 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1209 SkTableColorFilter::CreateARGB(allOne, identity, identity, identity)); 1209 SkTableColorFilter::CreateARGB(allOne, identity, identity, identity));
1210 SkAutoTUnref<SkImageFilter> forceOpaque(SkColorFilterImageFilter::Create(for ceOpaqueCF.get())); 1210 SkAutoTUnref<SkImageFilter> forceOpaque(SkColorFilterImageFilter::Create(for ceOpaqueCF.get()));
1211 REPORTER_ASSERT(reporter, forceOpaqueCF->affectsTransparentBlack()); 1211 REPORTER_ASSERT(reporter, forceOpaqueCF->affectsTransparentBlack());
1212 REPORTER_ASSERT(reporter, !forceOpaque->canComputeFastBounds()); 1212 REPORTER_ASSERT(reporter, !forceOpaque->canComputeFastBounds());
1213 } 1213 }
1214 1214
1215 #if SK_SUPPORT_GPU 1215 #if SK_SUPPORT_GPU
1216 1216
1217 DEF_GPUTEST(ImageFilterCropRectGPU, reporter, factory) { 1217 DEF_GPUTEST(ImageFilterCropRectGPU, reporter, factory) {
1218 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0)); 1218 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0));
1219 if (NULL == context) { 1219 if (nullptr == context) {
1220 return; 1220 return;
1221 } 1221 }
1222 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); 1222 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
1223 1223
1224 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context, 1224 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context,
1225 SkSurface::kNo_Budgeted , 1225 SkSurface::kNo_Budgeted ,
1226 SkImageInfo::MakeN32Pre mul(100, 100), 1226 SkImageInfo::MakeN32Pre mul(100, 100),
1227 0, 1227 0,
1228 &props, 1228 &props,
1229 SkGpuDevice::kUninit_In itContents)); 1229 SkGpuDevice::kUninit_In itContents));
1230 SkImageFilter::Proxy proxy(device); 1230 SkImageFilter::Proxy proxy(device);
1231 1231
1232 test_crop_rects(&proxy, reporter); 1232 test_crop_rects(&proxy, reporter);
1233 } 1233 }
1234 1234
1235 DEF_GPUTEST(HugeBlurImageFilterGPU, reporter, factory) { 1235 DEF_GPUTEST(HugeBlurImageFilterGPU, reporter, factory) {
1236 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0)); 1236 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0));
1237 if (NULL == context) { 1237 if (nullptr == context) {
1238 return; 1238 return;
1239 } 1239 }
1240 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); 1240 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
1241 1241
1242 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context, 1242 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context,
1243 SkSurface::kNo_Budgeted , 1243 SkSurface::kNo_Budgeted ,
1244 SkImageInfo::MakeN32Pre mul(100, 100), 1244 SkImageInfo::MakeN32Pre mul(100, 100),
1245 0, 1245 0,
1246 &props, 1246 &props,
1247 SkGpuDevice::kUninit_In itContents)); 1247 SkGpuDevice::kUninit_In itContents));
1248 SkCanvas canvas(device); 1248 SkCanvas canvas(device);
1249 1249
1250 test_huge_blur(&canvas, reporter); 1250 test_huge_blur(&canvas, reporter);
1251 } 1251 }
1252 1252
1253 DEF_GPUTEST(XfermodeImageFilterCroppedInputGPU, reporter, factory) { 1253 DEF_GPUTEST(XfermodeImageFilterCroppedInputGPU, reporter, factory) {
1254 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0)); 1254 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0));
1255 if (NULL == context) { 1255 if (nullptr == context) {
1256 return; 1256 return;
1257 } 1257 }
1258 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); 1258 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
1259 1259
1260 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context, 1260 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context,
1261 SkSurface::kNo_Budgeted , 1261 SkSurface::kNo_Budgeted ,
1262 SkImageInfo::MakeN32Pre mul(1, 1), 1262 SkImageInfo::MakeN32Pre mul(1, 1),
1263 0, 1263 0,
1264 &props, 1264 &props,
1265 SkGpuDevice::kUninit_In itContents)); 1265 SkGpuDevice::kUninit_In itContents));
1266 SkCanvas canvas(device); 1266 SkCanvas canvas(device);
1267 1267
1268 test_xfermode_cropped_input(&canvas, reporter); 1268 test_xfermode_cropped_input(&canvas, reporter);
1269 } 1269 }
1270 1270
1271 DEF_GPUTEST(TestNegativeBlurSigmaGPU, reporter, factory) { 1271 DEF_GPUTEST(TestNegativeBlurSigmaGPU, reporter, factory) {
1272 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0)); 1272 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0));
1273 if (NULL == context) { 1273 if (nullptr == context) {
1274 return; 1274 return;
1275 } 1275 }
1276 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); 1276 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
1277 1277
1278 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context, 1278 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context,
1279 SkSurface::kNo_Budgeted , 1279 SkSurface::kNo_Budgeted ,
1280 SkImageInfo::MakeN32Pre mul(1, 1), 1280 SkImageInfo::MakeN32Pre mul(1, 1),
1281 0, 1281 0,
1282 &props, 1282 &props,
1283 SkGpuDevice::kUninit_In itContents)); 1283 SkGpuDevice::kUninit_In itContents));
1284 SkImageFilter::Proxy proxy(device); 1284 SkImageFilter::Proxy proxy(device);
1285 1285
1286 test_negative_blur_sigma(&proxy, reporter); 1286 test_negative_blur_sigma(&proxy, reporter);
1287 } 1287 }
1288 #endif 1288 #endif
OLDNEW
« no previous file with comments | « tests/ImageDecodingTest.cpp ('k') | tests/ImageGeneratorTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698