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

Side by Side Diff: tests/ImageFilterTest.cpp

Issue 272643003: Fix for SkDisplacementMap::onFilterBounds(). (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « src/effects/SkDisplacementMapEffect.cpp ('k') | no next file » | 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 "SkBicubicImageFilter.h" 8 #include "SkBicubicImageFilter.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkBitmapDevice.h" 10 #include "SkBitmapDevice.h"
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 SkAutoTUnref<SkImageFilter> gradient_source(SkBitmapSource::Create(make_grad ient_circle(64, 64))); 302 SkAutoTUnref<SkImageFilter> gradient_source(SkBitmapSource::Create(make_grad ient_circle(64, 64)));
303 303
304 struct { 304 struct {
305 const char* fName; 305 const char* fName;
306 SkImageFilter* fFilter; 306 SkImageFilter* fFilter;
307 } filters[] = { 307 } filters[] = {
308 { "color filter", SkColorFilterImageFilter::Create(cf.get()) }, 308 { "color filter", SkColorFilterImageFilter::Create(cf.get()) },
309 { "displacement map", SkDisplacementMapEffect::Create( 309 { "displacement map", SkDisplacementMapEffect::Create(
310 SkDisplacementMapEffect::kR_ChannelSelectorType, 310 SkDisplacementMapEffect::kR_ChannelSelectorType,
311 SkDisplacementMapEffect::kB_ChannelSelectorType, 311 SkDisplacementMapEffect::kB_ChannelSelectorType,
312 40.0f, gradient_source.get()) }, 312 20.0f, gradient_source.get()) },
313 { "blur", SkBlurImageFilter::Create(SK_Scalar1, SK_Scalar1) }, 313 { "blur", SkBlurImageFilter::Create(SK_Scalar1, SK_Scalar1) },
314 { "drop shadow", SkDropShadowImageFilter::Create( 314 { "drop shadow", SkDropShadowImageFilter::Create(
315 SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_ColorGREEN) }, 315 SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_ColorGREEN) },
316 { "diffuse lighting", SkLightingImageFilter::CreatePointLitDiffuse( 316 { "diffuse lighting", SkLightingImageFilter::CreatePointLitDiffuse(
317 location, SK_ColorGREEN, 0, 0) }, 317 location, SK_ColorGREEN, 0, 0) },
318 { "specular lighting", 318 { "specular lighting",
319 SkLightingImageFilter::CreatePointLitSpecular(location, SK_ColorGR EEN, 0, 0, 0) }, 319 SkLightingImageFilter::CreatePointLitSpecular(location, SK_ColorGR EEN, 0, 0, 0) },
320 { "matrix convolution", 320 { "matrix convolution",
321 SkMatrixConvolutionImageFilter::Create( 321 SkMatrixConvolutionImageFilter::Create(
322 kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1), 322 kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1),
323 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false) }, 323 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false) },
324 { "merge", SkMergeImageFilter::Create(NULL, NULL, SkXfermode::kSrcOver_M ode) }, 324 { "merge", SkMergeImageFilter::Create(NULL, NULL, SkXfermode::kSrcOver_M ode) },
325 { "offset", SkOffsetImageFilter::Create(SK_Scalar1, SK_Scalar1) }, 325 { "offset", SkOffsetImageFilter::Create(SK_Scalar1, SK_Scalar1) },
326 { "dilate", SkDilateImageFilter::Create(3, 2) }, 326 { "dilate", SkDilateImageFilter::Create(3, 2) },
327 { "erode", SkErodeImageFilter::Create(2, 3) }, 327 { "erode", SkErodeImageFilter::Create(2, 3) },
328 { "tile", SkTileImageFilter::Create(SkRect::MakeXYWH(0, 0, 50, 50), 328 { "tile", SkTileImageFilter::Create(SkRect::MakeXYWH(0, 0, 50, 50),
329 SkRect::MakeXYWH(0, 0, 100, 100), NU LL) }, 329 SkRect::MakeXYWH(0, 0, 100, 100), NU LL) },
330 }; 330 };
331 331
332 SkBitmap untiledResult, tiledResult; 332 SkBitmap untiledResult, tiledResult;
333 int width = 64, height = 64; 333 int width = 64, height = 64;
334 untiledResult.allocN32Pixels(width, height); 334 untiledResult.allocN32Pixels(width, height);
335 tiledResult.allocN32Pixels(width, height); 335 tiledResult.allocN32Pixels(width, height);
336 SkCanvas tiledCanvas(tiledResult); 336 SkCanvas tiledCanvas(tiledResult);
337 SkCanvas untiledCanvas(untiledResult); 337 SkCanvas untiledCanvas(untiledResult);
338 tiledCanvas.clear(0); 338 int tileSize = 8;
339 untiledCanvas.clear(0);
340 int tileSize = 16;
341 339
342 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { 340 for (int scale = 1; scale <= 2; ++scale) {
343 SkPaint paint; 341 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
344 paint.setImageFilter(filters[i].fFilter); 342 tiledCanvas.clear(0);
345 paint.setTextSize(SkIntToScalar(height)); 343 untiledCanvas.clear(0);
346 paint.setColor(SK_ColorWHITE); 344 SkPaint paint;
347 SkString str; 345 paint.setImageFilter(filters[i].fFilter);
348 const char* text = "ABC"; 346 paint.setTextSize(SkIntToScalar(height));
349 SkScalar ypos = SkIntToScalar(height); 347 paint.setColor(SK_ColorWHITE);
350 untiledCanvas.drawText(text, strlen(text), 0, ypos, paint); 348 SkString str;
351 for (int y = 0; y < height; y += tileSize) { 349 const char* text = "ABC";
352 for (int x = 0; x < width; x += tileSize) { 350 SkScalar ypos = SkIntToScalar(height);
353 tiledCanvas.save(); 351 untiledCanvas.save();
354 tiledCanvas.clipRect(SkRect::Make(SkIRect::MakeXYWH(x, y, tileSi ze, tileSize))); 352 untiledCanvas.scale(SkIntToScalar(scale), SkIntToScalar(scale));
355 tiledCanvas.drawText(text, strlen(text), 0, ypos, paint); 353 untiledCanvas.drawText(text, strlen(text), 0, ypos, paint);
356 tiledCanvas.restore(); 354 untiledCanvas.restore();
355 for (int y = 0; y < height; y += tileSize) {
356 for (int x = 0; x < width; x += tileSize) {
357 tiledCanvas.save();
358 tiledCanvas.clipRect(SkRect::Make(SkIRect::MakeXYWH(x, y, ti leSize, tileSize)));
359 tiledCanvas.scale(SkIntToScalar(scale), SkIntToScalar(scale) );
360 tiledCanvas.drawText(text, strlen(text), 0, ypos, paint);
361 tiledCanvas.restore();
362 }
357 } 363 }
358 } 364 untiledCanvas.flush();
359 untiledCanvas.flush(); 365 tiledCanvas.flush();
360 tiledCanvas.flush(); 366 for (int y = 0; y < height; y++) {
361 for (int y = 0; y < height; y++) { 367 int diffs = memcmp(untiledResult.getAddr32(0, y), tiledResult.ge tAddr32(0, y), untiledResult.rowBytes());
362 int diffs = memcmp(untiledResult.getAddr32(0, y), tiledResult.getAdd r32(0, y), untiledResult.rowBytes()); 368 REPORTER_ASSERT_MESSAGE(reporter, !diffs, filters[i].fName);
363 REPORTER_ASSERT_MESSAGE(reporter, !diffs, filters[i].fName); 369 if (diffs) {
364 if (diffs) { 370 break;
365 break; 371 }
366 } 372 }
367 } 373 }
368 } 374 }
369 375
370 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { 376 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
371 SkSafeUnref(filters[i].fFilter); 377 SkSafeUnref(filters[i].fFilter);
372 } 378 }
373 } 379 }
374 380
375 DEF_TEST(ImageFilterMatrixConvolution, reporter) { 381 DEF_TEST(ImageFilterMatrixConvolution, reporter) {
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 } 672 }
667 673
668 DEF_GPUTEST(XfermodeImageFilterCroppedInputGPU, reporter, factory) { 674 DEF_GPUTEST(XfermodeImageFilterCroppedInputGPU, reporter, factory) {
669 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0)); 675 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0));
670 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context, 676 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context,
671 SkImageInfo::MakeN32Pre mul(1, 1), 677 SkImageInfo::MakeN32Pre mul(1, 1),
672 0)); 678 0));
673 test_xfermode_cropped_input(device, reporter); 679 test_xfermode_cropped_input(device, reporter);
674 } 680 }
675 #endif 681 #endif
OLDNEW
« no previous file with comments | « src/effects/SkDisplacementMapEffect.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698