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

Side by Side Diff: tests/ImageFilterTest.cpp

Issue 1826893002: Switch new SkImageFilter internal methods over to sk_sp (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Change method name to drawSpriteWithFilter Created 4 years, 9 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 | « src/gpu/SkGpuDevice.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 /* 2 /*
3 * Copyright 2013 Google Inc. 3 * Copyright 2013 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkBitmapDevice.h" 10 #include "SkBitmapDevice.h"
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80)); 452 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80));
453 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60)); 453 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60));
454 SkAutoTUnref<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect)); 454 SkAutoTUnref<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect));
455 455
456 FilterList filters(input.get(), &cropRect); 456 FilterList filters(input.get(), &cropRect);
457 457
458 for (int i = 0; i < filters.count(); ++i) { 458 for (int i = 0; i < filters.count(); ++i) {
459 SkImageFilter* filter = filters.getFilter(i); 459 SkImageFilter* filter = filters.getFilter(i);
460 SkIPoint offset; 460 SkIPoint offset;
461 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nul lptr); 461 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nul lptr);
462 SkAutoTUnref<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offset)); 462 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, & offset));
463 REPORTER_ASSERT_MESSAGE(reporter, resultImg, filters.getName(i)); 463 REPORTER_ASSERT_MESSAGE(reporter, resultImg, filters.getName(i));
464 REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, fi lters.getName(i)); 464 REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, fi lters.getName(i));
465 } 465 }
466 } 466 }
467 467
468 static void test_negative_blur_sigma(SkImageFilter::Proxy* proxy, 468 static void test_negative_blur_sigma(SkImageFilter::Proxy* proxy,
469 skiatest::Reporter* reporter, 469 skiatest::Reporter* reporter,
470 GrContext* context) { 470 GrContext* context) {
471 // Check that SkBlurImageFilter will accept a negative sigma, either in 471 // Check that SkBlurImageFilter will accept a negative sigma, either in
472 // the given arguments or after CTM application. 472 // the given arguments or after CTM application.
473 const int width = 32, height = 32; 473 const int width = 32, height = 32;
474 const SkScalar five = SkIntToScalar(5); 474 const SkScalar five = SkIntToScalar(5);
475 475
476 SkAutoTUnref<SkImageFilter> positiveFilter(SkBlurImageFilter::Create(five, f ive)); 476 SkAutoTUnref<SkImageFilter> positiveFilter(SkBlurImageFilter::Create(five, f ive));
477 SkAutoTUnref<SkImageFilter> negativeFilter(SkBlurImageFilter::Create(-five, five)); 477 SkAutoTUnref<SkImageFilter> negativeFilter(SkBlurImageFilter::Create(-five, five));
478 478
479 SkBitmap gradient = make_gradient_circle(width, height); 479 SkBitmap gradient = make_gradient_circle(width, height);
480 sk_sp<SkSpecialImage> imgSrc(SkSpecialImage::MakeFromRaster(proxy, 480 sk_sp<SkSpecialImage> imgSrc(SkSpecialImage::MakeFromRaster(proxy,
481 SkIRect::MakeWH( width, height), 481 SkIRect::MakeWH( width, height),
482 gradient)); 482 gradient));
483 483
484 SkIPoint offset; 484 SkIPoint offset;
485 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr); 485 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr);
486 486
487 SkAutoTUnref<SkSpecialImage> positiveResult1(positiveFilter->filterImage(img Src.get(), 487 sk_sp<SkSpecialImage> positiveResult1(positiveFilter->filterImage(imgSrc.get (), ctx, &offset));
488 ctx , &offset));
489 REPORTER_ASSERT(reporter, positiveResult1); 488 REPORTER_ASSERT(reporter, positiveResult1);
490 489
491 SkAutoTUnref<SkSpecialImage> negativeResult1(negativeFilter->filterImage(img Src.get(), 490 sk_sp<SkSpecialImage> negativeResult1(negativeFilter->filterImage(imgSrc.get (), ctx, &offset));
492 ctx , &offset));
493 REPORTER_ASSERT(reporter, negativeResult1); 491 REPORTER_ASSERT(reporter, negativeResult1);
494 492
495 SkMatrix negativeScale; 493 SkMatrix negativeScale;
496 negativeScale.setScale(-SK_Scalar1, SK_Scalar1); 494 negativeScale.setScale(-SK_Scalar1, SK_Scalar1);
497 SkImageFilter::Context negativeCTX(negativeScale, SkIRect::MakeWH(32, 32), n ullptr); 495 SkImageFilter::Context negativeCTX(negativeScale, SkIRect::MakeWH(32, 32), n ullptr);
498 496
499 SkAutoTUnref<SkSpecialImage> negativeResult2(positiveFilter->filterImage(img Src.get(), 497 sk_sp<SkSpecialImage> negativeResult2(positiveFilter->filterImage(imgSrc.get (),
500 neg ativeCTX, 498 negativeCT X,
501 &of fset)); 499 &offset));
502 REPORTER_ASSERT(reporter, negativeResult2); 500 REPORTER_ASSERT(reporter, negativeResult2);
503 501
504 SkAutoTUnref<SkSpecialImage> positiveResult2(negativeFilter->filterImage(img Src.get(), 502 sk_sp<SkSpecialImage> positiveResult2(negativeFilter->filterImage(imgSrc.get (),
505 neg ativeCTX, 503 negativeCT X,
506 &of fset)); 504 &offset));
507 REPORTER_ASSERT(reporter, positiveResult2); 505 REPORTER_ASSERT(reporter, positiveResult2);
508 506
509 507
510 SkBitmap positiveResultBM1, positiveResultBM2; 508 SkBitmap positiveResultBM1, positiveResultBM2;
511 SkBitmap negativeResultBM1, negativeResultBM2; 509 SkBitmap negativeResultBM1, negativeResultBM2;
512 510
513 TestingSpecialImageAccess::GetROPixels(positiveResult1, &positiveResultBM1); 511 TestingSpecialImageAccess::GetROPixels(positiveResult1.get(), &positiveResul tBM1);
514 TestingSpecialImageAccess::GetROPixels(positiveResult2, &positiveResultBM2); 512 TestingSpecialImageAccess::GetROPixels(positiveResult2.get(), &positiveResul tBM2);
515 TestingSpecialImageAccess::GetROPixels(negativeResult1, &negativeResultBM1); 513 TestingSpecialImageAccess::GetROPixels(negativeResult1.get(), &negativeResul tBM1);
516 TestingSpecialImageAccess::GetROPixels(negativeResult2, &negativeResultBM2); 514 TestingSpecialImageAccess::GetROPixels(negativeResult2.get(), &negativeResul tBM2);
517 515
518 SkAutoLockPixels lockP1(positiveResultBM1); 516 SkAutoLockPixels lockP1(positiveResultBM1);
519 SkAutoLockPixels lockP2(positiveResultBM2); 517 SkAutoLockPixels lockP2(positiveResultBM2);
520 SkAutoLockPixels lockN1(negativeResultBM1); 518 SkAutoLockPixels lockN1(negativeResultBM1);
521 SkAutoLockPixels lockN2(negativeResultBM2); 519 SkAutoLockPixels lockN2(negativeResultBM2);
522 for (int y = 0; y < height; y++) { 520 for (int y = 0; y < height; y++) {
523 int diffs = memcmp(positiveResultBM1.getAddr32(0, y), 521 int diffs = memcmp(positiveResultBM1.getAddr32(0, y),
524 negativeResultBM1.getAddr32(0, y), 522 negativeResultBM1.getAddr32(0, y),
525 positiveResultBM1.rowBytes()); 523 positiveResultBM1.rowBytes());
526 REPORTER_ASSERT(reporter, !diffs); 524 REPORTER_ASSERT(reporter, !diffs);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 SkAutoTUnref<SkImageFilter> input(SkOffsetImageFilter::Create(0, 0, nullptr, &cropRect)); 597 SkAutoTUnref<SkImageFilter> input(SkOffsetImageFilter::Create(0, 0, nullptr, &cropRect));
600 SkAutoTUnref<SkImageFilter> filter(SkBlurImageFilter::Create(0, 0, input, &c ropRect)); 598 SkAutoTUnref<SkImageFilter> filter(SkBlurImageFilter::Create(0, 0, input, &c ropRect));
601 599
602 sk_sp<SkSpecialSurface> surf(create_empty_special_surface(context, proxy, 10 )); 600 sk_sp<SkSpecialSurface> surf(create_empty_special_surface(context, proxy, 10 ));
603 surf->getCanvas()->clear(SK_ColorGREEN); 601 surf->getCanvas()->clear(SK_ColorGREEN);
604 sk_sp<SkSpecialImage> image(surf->makeImageSnapshot()); 602 sk_sp<SkSpecialImage> image(surf->makeImageSnapshot());
605 603
606 SkIPoint offset; 604 SkIPoint offset;
607 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr); 605 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr);
608 606
609 SkAutoTUnref<SkSpecialImage> result(filter->filterImage(image.get(), ctx, &o ffset)); 607 sk_sp<SkSpecialImage> result(filter->filterImage(image.get(), ctx, &offset)) ;
610 REPORTER_ASSERT(reporter, offset.fX == 5 && offset.fY == 0); 608 REPORTER_ASSERT(reporter, offset.fX == 5 && offset.fY == 0);
611 REPORTER_ASSERT(reporter, result); 609 REPORTER_ASSERT(reporter, result);
612 REPORTER_ASSERT(reporter, result->width() == 5 && result->height() == 10); 610 REPORTER_ASSERT(reporter, result->width() == 5 && result->height() == 10);
613 611
614 SkBitmap resultBM; 612 SkBitmap resultBM;
615 613
616 TestingSpecialImageAccess::GetROPixels(result, &resultBM); 614 TestingSpecialImageAccess::GetROPixels(result.get(), &resultBM);
617 615
618 SkAutoLockPixels lock(resultBM); 616 SkAutoLockPixels lock(resultBM);
619 for (int y = 0; y < resultBM.height(); y++) { 617 for (int y = 0; y < resultBM.height(); y++) {
620 for (int x = 0; x < resultBM.width(); x++) { 618 for (int x = 0; x < resultBM.width(); x++) {
621 bool diff = *resultBM.getAddr32(x, y) != SK_ColorGREEN; 619 bool diff = *resultBM.getAddr32(x, y) != SK_ColorGREEN;
622 REPORTER_ASSERT(reporter, !diff); 620 REPORTER_ASSERT(reporter, !diff);
623 if (diff) { 621 if (diff) {
624 break; 622 break;
625 } 623 }
626 } 624 }
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 greenBM.eraseColor(SK_ColorGREEN); 826 greenBM.eraseColor(SK_ColorGREEN);
829 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM)); 827 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM));
830 SkAutoTUnref<SkImageFilter> source(SkImageSource::Create(greenImage.get())); 828 SkAutoTUnref<SkImageFilter> source(SkImageSource::Create(greenImage.get()));
831 SkAutoTUnref<SkImageFilter> merge(SkMergeImageFilter::Create(source.get(), s ource.get())); 829 SkAutoTUnref<SkImageFilter> merge(SkMergeImageFilter::Create(source.get(), s ource.get()));
832 830
833 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 1)); 831 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 1));
834 832
835 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100), nullptr); 833 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100), nullptr);
836 SkIPoint offset; 834 SkIPoint offset;
837 835
838 SkAutoTUnref<SkSpecialImage> resultImg(merge->filterImage(srcImg.get(), ctx, &offset)); 836 sk_sp<SkSpecialImage> resultImg(merge->filterImage(srcImg.get(), ctx, &offse t));
839 REPORTER_ASSERT(reporter, resultImg); 837 REPORTER_ASSERT(reporter, resultImg);
840 838
841 REPORTER_ASSERT(reporter, resultImg->width() == 20 && resultImg->height() == 20); 839 REPORTER_ASSERT(reporter, resultImg->width() == 20 && resultImg->height() == 20);
842 } 840 }
843 841
844 DEF_TEST(ImageFilterMergeResultSize, reporter) { 842 DEF_TEST(ImageFilterMergeResultSize, reporter) {
845 run_raster_test(reporter, 100, test_imagefilter_merge_result_size); 843 run_raster_test(reporter, 100, test_imagefilter_merge_result_size);
846 } 844 }
847 845
848 #if SK_SUPPORT_GPU 846 #if SK_SUPPORT_GPU
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 picture = recorder.finishRecordingAsPicture(); 1090 picture = recorder.finishRecordingAsPicture();
1093 } 1091 }
1094 1092
1095 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 2)); 1093 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 2));
1096 1094
1097 SkAutoTUnref<SkImageFilter> imageFilter(SkPictureImageFilter::Create(picture .get())); 1095 SkAutoTUnref<SkImageFilter> imageFilter(SkPictureImageFilter::Create(picture .get()));
1098 1096
1099 SkIPoint offset; 1097 SkIPoint offset;
1100 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul lptr); 1098 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul lptr);
1101 1099
1102 SkAutoTUnref<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg.get (), ctx, &offset)); 1100 sk_sp<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg.get(), ctx , &offset));
1103 REPORTER_ASSERT(reporter, !resultImage); 1101 REPORTER_ASSERT(reporter, !resultImage);
1104 } 1102 }
1105 1103
1106 DEF_TEST(ImageFilterClippedPictureImageFilter, reporter) { 1104 DEF_TEST(ImageFilterClippedPictureImageFilter, reporter) {
1107 run_raster_test(reporter, 2, test_clipped_picture_imagefilter); 1105 run_raster_test(reporter, 2, test_clipped_picture_imagefilter);
1108 } 1106 }
1109 1107
1110 #if SK_SUPPORT_GPU 1108 #if SK_SUPPORT_GPU
1111 DEF_GPUTEST_FOR_NATIVE_CONTEXT(ImageFilterClippedPictureImageFilter_Gpu, reporte r, context) { 1109 DEF_GPUTEST_FOR_NATIVE_CONTEXT(ImageFilterClippedPictureImageFilter_Gpu, reporte r, context) {
1112 run_gpu_test(reporter, context, 2, test_clipped_picture_imagefilter); 1110 run_gpu_test(reporter, context, 2, test_clipped_picture_imagefilter);
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 1344
1347 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20)); 1345 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20));
1348 SkAutoTUnref<SkImageFilter> offsetFilter(SkOffsetImageFilter::Create(0, 0, n ullptr, &cropRect)); 1346 SkAutoTUnref<SkImageFilter> offsetFilter(SkOffsetImageFilter::Create(0, 0, n ullptr, &cropRect));
1349 SkAutoTUnref<SkImageFilter> blurFilter(SkBlurImageFilter::Create(SK_Scalar1, SK_Scalar1, 1347 SkAutoTUnref<SkImageFilter> blurFilter(SkBlurImageFilter::Create(SK_Scalar1, SK_Scalar1,
1350 nullptr, &c ropRect)); 1348 nullptr, &c ropRect));
1351 SkAutoTUnref<SkImageFilter> composedFilter(SkComposeImageFilter::Create(blur Filter, 1349 SkAutoTUnref<SkImageFilter> composedFilter(SkComposeImageFilter::Create(blur Filter,
1352 offs etFilter.get())); 1350 offs etFilter.get()));
1353 SkIPoint offset; 1351 SkIPoint offset;
1354 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); 1352 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr );
1355 1353
1356 SkAutoTUnref<SkSpecialImage> resultImg(composedFilter->filterImage(srcImg.ge t(), ctx, &offset)); 1354 sk_sp<SkSpecialImage> resultImg(composedFilter->filterImage(srcImg.get(), ct x, &offset));
1357 REPORTER_ASSERT(reporter, resultImg); 1355 REPORTER_ASSERT(reporter, resultImg);
1358 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0); 1356 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0);
1359 } 1357 }
1360 1358
1361 DEF_TEST(ComposedImageFilterOffset, reporter) { 1359 DEF_TEST(ComposedImageFilterOffset, reporter) {
1362 run_raster_test(reporter, 100, test_composed_imagefilter_offset); 1360 run_raster_test(reporter, 100, test_composed_imagefilter_offset);
1363 } 1361 }
1364 1362
1365 #if SK_SUPPORT_GPU 1363 #if SK_SUPPORT_GPU
1366 DEF_GPUTEST_FOR_NATIVE_CONTEXT(ComposedImageFilterOffset_Gpu, reporter, context) { 1364 DEF_GPUTEST_FOR_NATIVE_CONTEXT(ComposedImageFilterOffset_Gpu, reporter, context) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1417 skiatest::Reporter* reporter, 1415 skiatest::Reporter* reporter,
1418 GrContext* context) { 1416 GrContext* context) {
1419 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100) ); 1417 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100) );
1420 1418
1421 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(100, 0, 20, 30), 1419 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(100, 0, 20, 30),
1422 SkImageFilter::CropRect::kHasWidth_CropEdge | SkImageFilter::CropRect::k HasHeight_CropEdge); 1420 SkImageFilter::CropRect::kHasWidth_CropEdge | SkImageFilter::CropRect::k HasHeight_CropEdge);
1423 SkAutoTUnref<SkImageFilter> filter(make_grayscale(nullptr, &cropRect)); 1421 SkAutoTUnref<SkImageFilter> filter(make_grayscale(nullptr, &cropRect));
1424 SkIPoint offset; 1422 SkIPoint offset;
1425 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); 1423 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr );
1426 1424
1427 SkAutoTUnref<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx , &offset)); 1425 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offs et));
1428 REPORTER_ASSERT(reporter, resultImg); 1426 REPORTER_ASSERT(reporter, resultImg);
1429 1427
1430 REPORTER_ASSERT(reporter, offset.fX == 0); 1428 REPORTER_ASSERT(reporter, offset.fX == 0);
1431 REPORTER_ASSERT(reporter, offset.fY == 0); 1429 REPORTER_ASSERT(reporter, offset.fY == 0);
1432 REPORTER_ASSERT(reporter, resultImg->width() == 20); 1430 REPORTER_ASSERT(reporter, resultImg->width() == 20);
1433 REPORTER_ASSERT(reporter, resultImg->height() == 30); 1431 REPORTER_ASSERT(reporter, resultImg->height() == 30);
1434 } 1432 }
1435 1433
1436 DEF_TEST(PartialCropRect, reporter) { 1434 DEF_TEST(PartialCropRect, reporter) {
1437 run_raster_test(reporter, 100, test_partial_crop_rect); 1435 run_raster_test(reporter, 100, test_partial_crop_rect);
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
1595 1593
1596 test_xfermode_cropped_input(&canvas, reporter); 1594 test_xfermode_cropped_input(&canvas, reporter);
1597 } 1595 }
1598 1596
1599 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { 1597 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) {
1600 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, 1598 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes,
1601 SkImageInfo::MakeN32Premul(100, 100 ))); 1599 SkImageInfo::MakeN32Premul(100, 100 )));
1602 test_large_blur_input(reporter, surface->getCanvas()); 1600 test_large_blur_input(reporter, surface->getCanvas());
1603 } 1601 }
1604 #endif 1602 #endif
OLDNEW
« no previous file with comments | « src/gpu/SkGpuDevice.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698