OLD | NEW |
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 "SkBlurImageFilter.h" | 9 #include "SkBlurImageFilter.h" |
10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 | 531 |
532 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80)); | 532 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80)); |
533 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60)); | 533 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60)); |
534 sk_sp<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect)); | 534 sk_sp<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect)); |
535 | 535 |
536 FilterList filters(input, &cropRect); | 536 FilterList filters(input, &cropRect); |
537 | 537 |
538 for (int i = 0; i < filters.count(); ++i) { | 538 for (int i = 0; i < filters.count(); ++i) { |
539 SkImageFilter* filter = filters.getFilter(i); | 539 SkImageFilter* filter = filters.getFilter(i); |
540 SkIPoint offset; | 540 SkIPoint offset; |
541 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nul
lptr); | 541 SkImageFilter::OutputProperties noColorSpace(nullptr); |
| 542 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nul
lptr, noColorSpace); |
542 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &
offset)); | 543 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &
offset)); |
543 REPORTER_ASSERT_MESSAGE(reporter, resultImg, filters.getName(i)); | 544 REPORTER_ASSERT_MESSAGE(reporter, resultImg, filters.getName(i)); |
544 REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, fi
lters.getName(i)); | 545 REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, fi
lters.getName(i)); |
545 } | 546 } |
546 } | 547 } |
547 | 548 |
548 static void test_negative_blur_sigma(skiatest::Reporter* reporter, | 549 static void test_negative_blur_sigma(skiatest::Reporter* reporter, |
549 GrContext* context) { | 550 GrContext* context) { |
550 // Check that SkBlurImageFilter will accept a negative sigma, either in | 551 // Check that SkBlurImageFilter will accept a negative sigma, either in |
551 // the given arguments or after CTM application. | 552 // the given arguments or after CTM application. |
552 const int width = 32, height = 32; | 553 const int width = 32, height = 32; |
553 const SkScalar five = SkIntToScalar(5); | 554 const SkScalar five = SkIntToScalar(5); |
554 | 555 |
555 sk_sp<SkImageFilter> positiveFilter(SkBlurImageFilter::Make(five, five, null
ptr)); | 556 sk_sp<SkImageFilter> positiveFilter(SkBlurImageFilter::Make(five, five, null
ptr)); |
556 sk_sp<SkImageFilter> negativeFilter(SkBlurImageFilter::Make(-five, five, nul
lptr)); | 557 sk_sp<SkImageFilter> negativeFilter(SkBlurImageFilter::Make(-five, five, nul
lptr)); |
557 | 558 |
558 SkBitmap gradient = make_gradient_circle(width, height); | 559 SkBitmap gradient = make_gradient_circle(width, height); |
559 sk_sp<SkSpecialImage> imgSrc(SkSpecialImage::MakeFromRaster(SkIRect::MakeWH(
width, height), | 560 sk_sp<SkSpecialImage> imgSrc(SkSpecialImage::MakeFromRaster(SkIRect::MakeWH(
width, height), |
560 gradient)); | 561 gradient)); |
561 | 562 |
562 SkIPoint offset; | 563 SkIPoint offset; |
563 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr); | 564 SkImageFilter::OutputProperties noColorSpace(nullptr); |
| 565 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr,
noColorSpace); |
564 | 566 |
565 sk_sp<SkSpecialImage> positiveResult1(positiveFilter->filterImage(imgSrc.get
(), ctx, &offset)); | 567 sk_sp<SkSpecialImage> positiveResult1(positiveFilter->filterImage(imgSrc.get
(), ctx, &offset)); |
566 REPORTER_ASSERT(reporter, positiveResult1); | 568 REPORTER_ASSERT(reporter, positiveResult1); |
567 | 569 |
568 sk_sp<SkSpecialImage> negativeResult1(negativeFilter->filterImage(imgSrc.get
(), ctx, &offset)); | 570 sk_sp<SkSpecialImage> negativeResult1(negativeFilter->filterImage(imgSrc.get
(), ctx, &offset)); |
569 REPORTER_ASSERT(reporter, negativeResult1); | 571 REPORTER_ASSERT(reporter, negativeResult1); |
570 | 572 |
571 SkMatrix negativeScale; | 573 SkMatrix negativeScale; |
572 negativeScale.setScale(-SK_Scalar1, SK_Scalar1); | 574 negativeScale.setScale(-SK_Scalar1, SK_Scalar1); |
573 SkImageFilter::Context negativeCTX(negativeScale, SkIRect::MakeWH(32, 32), n
ullptr); | 575 SkImageFilter::Context negativeCTX(negativeScale, SkIRect::MakeWH(32, 32), n
ullptr, |
| 576 noColorSpace); |
574 | 577 |
575 sk_sp<SkSpecialImage> negativeResult2(positiveFilter->filterImage(imgSrc.get
(), | 578 sk_sp<SkSpecialImage> negativeResult2(positiveFilter->filterImage(imgSrc.get
(), |
576 negativeCT
X, | 579 negativeCT
X, |
577 &offset)); | 580 &offset)); |
578 REPORTER_ASSERT(reporter, negativeResult2); | 581 REPORTER_ASSERT(reporter, negativeResult2); |
579 | 582 |
580 sk_sp<SkSpecialImage> positiveResult2(negativeFilter->filterImage(imgSrc.get
(), | 583 sk_sp<SkSpecialImage> positiveResult2(negativeFilter->filterImage(imgSrc.get
(), |
581 negativeCT
X, | 584 negativeCT
X, |
582 &offset)); | 585 &offset)); |
583 REPORTER_ASSERT(reporter, positiveResult2); | 586 REPORTER_ASSERT(reporter, positiveResult2); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
634 // Check that SkBlurImageFilter with a zero sigma and a non-zero srcOffset w
orks correctly. | 637 // Check that SkBlurImageFilter with a zero sigma and a non-zero srcOffset w
orks correctly. |
635 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(5, 0, 5, 10)
)); | 638 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(5, 0, 5, 10)
)); |
636 sk_sp<SkImageFilter> input(SkOffsetImageFilter::Make(0, 0, nullptr, &cropRec
t)); | 639 sk_sp<SkImageFilter> input(SkOffsetImageFilter::Make(0, 0, nullptr, &cropRec
t)); |
637 sk_sp<SkImageFilter> filter(SkBlurImageFilter::Make(0, 0, std::move(input),
&cropRect)); | 640 sk_sp<SkImageFilter> filter(SkBlurImageFilter::Make(0, 0, std::move(input),
&cropRect)); |
638 | 641 |
639 sk_sp<SkSpecialSurface> surf(create_empty_special_surface(context, 10)); | 642 sk_sp<SkSpecialSurface> surf(create_empty_special_surface(context, 10)); |
640 surf->getCanvas()->clear(SK_ColorGREEN); | 643 surf->getCanvas()->clear(SK_ColorGREEN); |
641 sk_sp<SkSpecialImage> image(surf->makeImageSnapshot()); | 644 sk_sp<SkSpecialImage> image(surf->makeImageSnapshot()); |
642 | 645 |
643 SkIPoint offset; | 646 SkIPoint offset; |
644 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr); | 647 SkImageFilter::OutputProperties noColorSpace(nullptr); |
| 648 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr,
noColorSpace); |
645 | 649 |
646 sk_sp<SkSpecialImage> result(filter->filterImage(image.get(), ctx, &offset))
; | 650 sk_sp<SkSpecialImage> result(filter->filterImage(image.get(), ctx, &offset))
; |
647 REPORTER_ASSERT(reporter, offset.fX == 5 && offset.fY == 0); | 651 REPORTER_ASSERT(reporter, offset.fX == 5 && offset.fY == 0); |
648 REPORTER_ASSERT(reporter, result); | 652 REPORTER_ASSERT(reporter, result); |
649 REPORTER_ASSERT(reporter, result->width() == 5 && result->height() == 10); | 653 REPORTER_ASSERT(reporter, result->width() == 5 && result->height() == 10); |
650 | 654 |
651 SkBitmap resultBM; | 655 SkBitmap resultBM; |
652 | 656 |
653 REPORTER_ASSERT(reporter, result->getROPixels(&resultBM)); | 657 REPORTER_ASSERT(reporter, result->getROPixels(&resultBM)); |
654 | 658 |
(...skipping 18 matching lines...) Expand all Loading... |
673 test_zero_blur_sigma(reporter, ctxInfo.grContext()); | 677 test_zero_blur_sigma(reporter, ctxInfo.grContext()); |
674 } | 678 } |
675 #endif | 679 #endif |
676 | 680 |
677 | 681 |
678 // Tests that, even when an upstream filter has returned null (due to failure or
clipping), a | 682 // Tests that, even when an upstream filter has returned null (due to failure or
clipping), a |
679 // downstream filter that affects transparent black still does so even with a nu
llptr input. | 683 // downstream filter that affects transparent black still does so even with a nu
llptr input. |
680 static void test_fail_affects_transparent_black(skiatest::Reporter* reporter, Gr
Context* context) { | 684 static void test_fail_affects_transparent_black(skiatest::Reporter* reporter, Gr
Context* context) { |
681 sk_sp<FailImageFilter> failFilter(new FailImageFilter()); | 685 sk_sp<FailImageFilter> failFilter(new FailImageFilter()); |
682 sk_sp<SkSpecialImage> source(create_empty_special_image(context, 5)); | 686 sk_sp<SkSpecialImage> source(create_empty_special_image(context, 5)); |
683 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 1, 1), nul
lptr); | 687 SkImageFilter::OutputProperties noColorSpace(nullptr); |
| 688 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 1, 1), nul
lptr, noColorSpace); |
684 sk_sp<SkColorFilter> green(SkColorFilter::MakeModeFilter(SK_ColorGREEN, SkXf
ermode::kSrc_Mode)); | 689 sk_sp<SkColorFilter> green(SkColorFilter::MakeModeFilter(SK_ColorGREEN, SkXf
ermode::kSrc_Mode)); |
685 SkASSERT(green->affectsTransparentBlack()); | 690 SkASSERT(green->affectsTransparentBlack()); |
686 sk_sp<SkImageFilter> greenFilter(SkColorFilterImageFilter::Make(std::move(gr
een), | 691 sk_sp<SkImageFilter> greenFilter(SkColorFilterImageFilter::Make(std::move(gr
een), |
687 std::move(fa
ilFilter))); | 692 std::move(fa
ilFilter))); |
688 SkIPoint offset; | 693 SkIPoint offset; |
689 sk_sp<SkSpecialImage> result(greenFilter->filterImage(source.get(), ctx, &of
fset)); | 694 sk_sp<SkSpecialImage> result(greenFilter->filterImage(source.get(), ctx, &of
fset)); |
690 REPORTER_ASSERT(reporter, nullptr != result.get()); | 695 REPORTER_ASSERT(reporter, nullptr != result.get()); |
691 if (result.get()) { | 696 if (result.get()) { |
692 SkBitmap resultBM; | 697 SkBitmap resultBM; |
693 REPORTER_ASSERT(reporter, result->getROPixels(&resultBM)); | 698 REPORTER_ASSERT(reporter, result->getROPixels(&resultBM)); |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
952 static void test_imagefilter_merge_result_size(skiatest::Reporter* reporter, GrC
ontext* context) { | 957 static void test_imagefilter_merge_result_size(skiatest::Reporter* reporter, GrC
ontext* context) { |
953 SkBitmap greenBM; | 958 SkBitmap greenBM; |
954 greenBM.allocN32Pixels(20, 20); | 959 greenBM.allocN32Pixels(20, 20); |
955 greenBM.eraseColor(SK_ColorGREEN); | 960 greenBM.eraseColor(SK_ColorGREEN); |
956 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM)); | 961 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM)); |
957 sk_sp<SkImageFilter> source(SkImageSource::Make(std::move(greenImage))); | 962 sk_sp<SkImageFilter> source(SkImageSource::Make(std::move(greenImage))); |
958 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(source, source)); | 963 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(source, source)); |
959 | 964 |
960 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 1)); | 965 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 1)); |
961 | 966 |
962 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100),
nullptr); | 967 SkImageFilter::OutputProperties noColorSpace(nullptr); |
| 968 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100),
nullptr, |
| 969 noColorSpace); |
963 SkIPoint offset; | 970 SkIPoint offset; |
964 | 971 |
965 sk_sp<SkSpecialImage> resultImg(merge->filterImage(srcImg.get(), ctx, &offse
t)); | 972 sk_sp<SkSpecialImage> resultImg(merge->filterImage(srcImg.get(), ctx, &offse
t)); |
966 REPORTER_ASSERT(reporter, resultImg); | 973 REPORTER_ASSERT(reporter, resultImg); |
967 | 974 |
968 REPORTER_ASSERT(reporter, resultImg->width() == 20 && resultImg->height() ==
20); | 975 REPORTER_ASSERT(reporter, resultImg->width() == 20 && resultImg->height() ==
20); |
969 } | 976 } |
970 | 977 |
971 DEF_TEST(ImageFilterMergeResultSize, reporter) { | 978 DEF_TEST(ImageFilterMergeResultSize, reporter) { |
972 test_imagefilter_merge_result_size(reporter, nullptr); | 979 test_imagefilter_merge_result_size(reporter, nullptr); |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1121 | 1128 |
1122 sk_sp<SkImageFilter> filter(SkMatrixConvolutionImageFilter::Make( | 1129 sk_sp<SkImageFilter> filter(SkMatrixConvolutionImageFilter::Make( |
1123 kernelSize, identityKernel, gain, bias,
kernelOffset, | 1130 kernelSize, identityKernel, gain, bias,
kernelOffset, |
1124 SkMatrixConvolutionImageFilter::kClamp_T
ileMode, | 1131 SkMatrixConvolutionImageFilter::kClamp_T
ileMode, |
1125 true, nullptr)); | 1132 true, nullptr)); |
1126 | 1133 |
1127 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 100)); | 1134 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 100)); |
1128 SkASSERT(srcImg); | 1135 SkASSERT(srcImg); |
1129 | 1136 |
1130 SkIPoint offset; | 1137 SkIPoint offset; |
1131 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr
); | 1138 SkImageFilter::OutputProperties noColorSpace(nullptr); |
| 1139 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr
, noColorSpace); |
1132 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offs
et)); | 1140 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offs
et)); |
1133 REPORTER_ASSERT(reporter, resultImg); | 1141 REPORTER_ASSERT(reporter, resultImg); |
1134 REPORTER_ASSERT(reporter, SkToBool(context) == resultImg->isTextureBacked())
; | 1142 REPORTER_ASSERT(reporter, SkToBool(context) == resultImg->isTextureBacked())
; |
1135 REPORTER_ASSERT(reporter, resultImg->width() == 100 && resultImg->height() =
= 100); | 1143 REPORTER_ASSERT(reporter, resultImg->width() == 100 && resultImg->height() =
= 100); |
1136 REPORTER_ASSERT(reporter, offset.fX == 0 && offset.fY == 0); | 1144 REPORTER_ASSERT(reporter, offset.fX == 0 && offset.fY == 0); |
1137 } | 1145 } |
1138 | 1146 |
1139 DEF_TEST(ImageFilterMatrixConvolutionBigKernel, reporter) { | 1147 DEF_TEST(ImageFilterMatrixConvolutionBigKernel, reporter) { |
1140 test_big_kernel(reporter, nullptr); | 1148 test_big_kernel(reporter, nullptr); |
1141 } | 1149 } |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1255 greenPaint.setColor(SK_ColorGREEN); | 1263 greenPaint.setColor(SK_ColorGREEN); |
1256 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPain
t); | 1264 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPain
t); |
1257 picture = recorder.finishRecordingAsPicture(); | 1265 picture = recorder.finishRecordingAsPicture(); |
1258 } | 1266 } |
1259 | 1267 |
1260 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 2)); | 1268 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 2)); |
1261 | 1269 |
1262 sk_sp<SkImageFilter> imageFilter(SkPictureImageFilter::Make(picture)); | 1270 sk_sp<SkImageFilter> imageFilter(SkPictureImageFilter::Make(picture)); |
1263 | 1271 |
1264 SkIPoint offset; | 1272 SkIPoint offset; |
1265 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul
lptr); | 1273 SkImageFilter::OutputProperties noColorSpace(nullptr); |
| 1274 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul
lptr, noColorSpace); |
1266 | 1275 |
1267 sk_sp<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg.get(), ctx
, &offset)); | 1276 sk_sp<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg.get(), ctx
, &offset)); |
1268 REPORTER_ASSERT(reporter, !resultImage); | 1277 REPORTER_ASSERT(reporter, !resultImage); |
1269 } | 1278 } |
1270 | 1279 |
1271 DEF_TEST(ImageFilterClippedPictureImageFilter, reporter) { | 1280 DEF_TEST(ImageFilterClippedPictureImageFilter, reporter) { |
1272 test_clipped_picture_imagefilter(reporter, nullptr); | 1281 test_clipped_picture_imagefilter(reporter, nullptr); |
1273 } | 1282 } |
1274 | 1283 |
1275 #if SK_SUPPORT_GPU | 1284 #if SK_SUPPORT_GPU |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1511 static void test_composed_imagefilter_offset(skiatest::Reporter* reporter, GrCon
text* context) { | 1520 static void test_composed_imagefilter_offset(skiatest::Reporter* reporter, GrCon
text* context) { |
1512 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 100)); | 1521 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 100)); |
1513 | 1522 |
1514 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20)); | 1523 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20)); |
1515 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Make(0, 0, nullptr, &
cropRect)); | 1524 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Make(0, 0, nullptr, &
cropRect)); |
1516 sk_sp<SkImageFilter> blurFilter(SkBlurImageFilter::Make(SK_Scalar1, SK_Scala
r1, | 1525 sk_sp<SkImageFilter> blurFilter(SkBlurImageFilter::Make(SK_Scalar1, SK_Scala
r1, |
1517 nullptr, &cropRect))
; | 1526 nullptr, &cropRect))
; |
1518 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(blu
rFilter), | 1527 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(blu
rFilter), |
1519 std::move(off
setFilter))); | 1528 std::move(off
setFilter))); |
1520 SkIPoint offset; | 1529 SkIPoint offset; |
1521 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr
); | 1530 SkImageFilter::OutputProperties noColorSpace(nullptr); |
| 1531 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr
, noColorSpace); |
1522 | 1532 |
1523 sk_sp<SkSpecialImage> resultImg(composedFilter->filterImage(srcImg.get(), ct
x, &offset)); | 1533 sk_sp<SkSpecialImage> resultImg(composedFilter->filterImage(srcImg.get(), ct
x, &offset)); |
1524 REPORTER_ASSERT(reporter, resultImg); | 1534 REPORTER_ASSERT(reporter, resultImg); |
1525 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0); | 1535 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0); |
1526 } | 1536 } |
1527 | 1537 |
1528 DEF_TEST(ComposedImageFilterOffset, reporter) { | 1538 DEF_TEST(ComposedImageFilterOffset, reporter) { |
1529 test_composed_imagefilter_offset(reporter, nullptr); | 1539 test_composed_imagefilter_offset(reporter, nullptr); |
1530 } | 1540 } |
1531 | 1541 |
(...skipping 15 matching lines...) Expand all Loading... |
1547 recordingCanvas->clipRect(SkRect::MakeXYWH(100, 0, 100, 100)); | 1557 recordingCanvas->clipRect(SkRect::MakeXYWH(100, 0, 100, 100)); |
1548 recordingCanvas->clear(SK_ColorGREEN); | 1558 recordingCanvas->clear(SK_ColorGREEN); |
1549 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); | 1559 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); |
1550 sk_sp<SkImageFilter> pictureFilter(SkPictureImageFilter::Make(picture)); | 1560 sk_sp<SkImageFilter> pictureFilter(SkPictureImageFilter::Make(picture)); |
1551 SkImageFilter::CropRect cropRect(SkRect::MakeWH(100, 100)); | 1561 SkImageFilter::CropRect cropRect(SkRect::MakeWH(100, 100)); |
1552 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Make(-100, 0, nullptr
, &cropRect)); | 1562 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Make(-100, 0, nullptr
, &cropRect)); |
1553 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(off
setFilter), | 1563 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(off
setFilter), |
1554 std::move(pic
tureFilter))); | 1564 std::move(pic
tureFilter))); |
1555 | 1565 |
1556 sk_sp<SkSpecialImage> sourceImage(create_empty_special_image(context, 100)); | 1566 sk_sp<SkSpecialImage> sourceImage(create_empty_special_image(context, 100)); |
1557 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr
); | 1567 SkImageFilter::OutputProperties noColorSpace(nullptr); |
| 1568 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr
, noColorSpace); |
1558 SkIPoint offset; | 1569 SkIPoint offset; |
1559 sk_sp<SkSpecialImage> result(composedFilter->filterImage(sourceImage.get(),
ctx, &offset)); | 1570 sk_sp<SkSpecialImage> result(composedFilter->filterImage(sourceImage.get(),
ctx, &offset)); |
1560 REPORTER_ASSERT(reporter, offset.isZero()); | 1571 REPORTER_ASSERT(reporter, offset.isZero()); |
1561 REPORTER_ASSERT(reporter, result); | 1572 REPORTER_ASSERT(reporter, result); |
1562 REPORTER_ASSERT(reporter, result->subset().size() == SkISize::Make(100, 100)
); | 1573 REPORTER_ASSERT(reporter, result->subset().size() == SkISize::Make(100, 100)
); |
1563 | 1574 |
1564 SkBitmap resultBM; | 1575 SkBitmap resultBM; |
1565 REPORTER_ASSERT(reporter, result->getROPixels(&resultBM)); | 1576 REPORTER_ASSERT(reporter, result->getROPixels(&resultBM)); |
1566 SkAutoLockPixels lock(resultBM); | 1577 SkAutoLockPixels lock(resultBM); |
1567 REPORTER_ASSERT(reporter, resultBM.getColor(50, 50) == SK_ColorGREEN); | 1578 REPORTER_ASSERT(reporter, resultBM.getColor(50, 50) == SK_ColorGREEN); |
1568 } | 1579 } |
1569 | 1580 |
1570 DEF_TEST(ComposedImageFilterBounds, reporter) { | 1581 DEF_TEST(ComposedImageFilterBounds, reporter) { |
1571 test_composed_imagefilter_bounds(reporter, nullptr); | 1582 test_composed_imagefilter_bounds(reporter, nullptr); |
1572 } | 1583 } |
1573 | 1584 |
1574 #if SK_SUPPORT_GPU | 1585 #if SK_SUPPORT_GPU |
1575 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ComposedImageFilterBounds_Gpu, reporter, ctxI
nfo) { | 1586 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ComposedImageFilterBounds_Gpu, reporter, ctxI
nfo) { |
1576 test_composed_imagefilter_bounds(reporter, ctxInfo.grContext()); | 1587 test_composed_imagefilter_bounds(reporter, ctxInfo.grContext()); |
1577 } | 1588 } |
1578 #endif | 1589 #endif |
1579 | 1590 |
1580 static void test_partial_crop_rect(skiatest::Reporter* reporter, GrContext* cont
ext) { | 1591 static void test_partial_crop_rect(skiatest::Reporter* reporter, GrContext* cont
ext) { |
1581 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 100)); | 1592 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 100)); |
1582 | 1593 |
1583 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(100, 0, 20, 30), | 1594 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(100, 0, 20, 30), |
1584 SkImageFilter::CropRect::kHasWidth_CropEdge | SkImageFilter::CropRect::k
HasHeight_CropEdge); | 1595 SkImageFilter::CropRect::kHasWidth_CropEdge | SkImageFilter::CropRect::k
HasHeight_CropEdge); |
1585 sk_sp<SkImageFilter> filter(make_grayscale(nullptr, &cropRect)); | 1596 sk_sp<SkImageFilter> filter(make_grayscale(nullptr, &cropRect)); |
1586 SkIPoint offset; | 1597 SkIPoint offset; |
1587 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr
); | 1598 SkImageFilter::OutputProperties noColorSpace(nullptr); |
| 1599 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr
, noColorSpace); |
1588 | 1600 |
1589 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offs
et)); | 1601 sk_sp<SkSpecialImage> resultImg(filter->filterImage(srcImg.get(), ctx, &offs
et)); |
1590 REPORTER_ASSERT(reporter, resultImg); | 1602 REPORTER_ASSERT(reporter, resultImg); |
1591 | 1603 |
1592 REPORTER_ASSERT(reporter, offset.fX == 0); | 1604 REPORTER_ASSERT(reporter, offset.fX == 0); |
1593 REPORTER_ASSERT(reporter, offset.fY == 0); | 1605 REPORTER_ASSERT(reporter, offset.fY == 0); |
1594 REPORTER_ASSERT(reporter, resultImg->width() == 20); | 1606 REPORTER_ASSERT(reporter, resultImg->width() == 20); |
1595 REPORTER_ASSERT(reporter, resultImg->height() == 30); | 1607 REPORTER_ASSERT(reporter, resultImg->height() == 30); |
1596 } | 1608 } |
1597 | 1609 |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1854 { SkColorFilterImageFilter::Make(cf, blif), false }, | 1866 { SkColorFilterImageFilter::Make(cf, blif), false }, |
1855 { SkMergeImageFilter::Make(cfif, blif), false }, | 1867 { SkMergeImageFilter::Make(cfif, blif), false }, |
1856 { SkComposeImageFilter::Make(blif, cfif), false }, | 1868 { SkComposeImageFilter::Make(blif, cfif), false }, |
1857 }; | 1869 }; |
1858 | 1870 |
1859 for (const auto& rec : recs) { | 1871 for (const auto& rec : recs) { |
1860 const bool canHandle = rec.fFilter->canHandleComplexCTM(); | 1872 const bool canHandle = rec.fFilter->canHandleComplexCTM(); |
1861 REPORTER_ASSERT(reporter, canHandle == rec.fExpectCanHandle); | 1873 REPORTER_ASSERT(reporter, canHandle == rec.fExpectCanHandle); |
1862 } | 1874 } |
1863 } | 1875 } |
OLD | NEW |