| 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 "SkBitmapDevice.h" | 9 #include "SkBitmapDevice.h" |
| 10 #include "SkBlurImageFilter.h" | 10 #include "SkBlurImageFilter.h" |
| (...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 | 659 |
| 660 (*test)(&proxy, reporter, context); | 660 (*test)(&proxy, reporter, context); |
| 661 } | 661 } |
| 662 #endif | 662 #endif |
| 663 | 663 |
| 664 DEF_TEST(ImageFilterNegativeBlurSigma, reporter) { | 664 DEF_TEST(ImageFilterNegativeBlurSigma, reporter) { |
| 665 run_raster_test(reporter, 100, test_negative_blur_sigma); | 665 run_raster_test(reporter, 100, test_negative_blur_sigma); |
| 666 } | 666 } |
| 667 | 667 |
| 668 #if SK_SUPPORT_GPU | 668 #if SK_SUPPORT_GPU |
| 669 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ImageFilterNegativeBlurSigma_Gpu, reporter
, ctxInfo) { | 669 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterNegativeBlurSigma_Gpu, reporter, c
txInfo) { |
| 670 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_negative_blur_sigma); | 670 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_negative_blur_sigma); |
| 671 } | 671 } |
| 672 #endif | 672 #endif |
| 673 | 673 |
| 674 static void test_zero_blur_sigma(SkImageFilter::Proxy* proxy, | 674 static void test_zero_blur_sigma(SkImageFilter::Proxy* proxy, |
| 675 skiatest::Reporter* reporter, | 675 skiatest::Reporter* reporter, |
| 676 GrContext* context) { | 676 GrContext* context) { |
| 677 // Check that SkBlurImageFilter with a zero sigma and a non-zero srcOffset w
orks correctly. | 677 // Check that SkBlurImageFilter with a zero sigma and a non-zero srcOffset w
orks correctly. |
| 678 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(5, 0, 5, 10)
)); | 678 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(5, 0, 5, 10)
)); |
| 679 sk_sp<SkImageFilter> input(SkOffsetImageFilter::Make(0, 0, nullptr, &cropRec
t)); | 679 sk_sp<SkImageFilter> input(SkOffsetImageFilter::Make(0, 0, nullptr, &cropRec
t)); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 705 } | 705 } |
| 706 } | 706 } |
| 707 } | 707 } |
| 708 } | 708 } |
| 709 | 709 |
| 710 DEF_TEST(ImageFilterZeroBlurSigma, reporter) { | 710 DEF_TEST(ImageFilterZeroBlurSigma, reporter) { |
| 711 run_raster_test(reporter, 100, test_zero_blur_sigma); | 711 run_raster_test(reporter, 100, test_zero_blur_sigma); |
| 712 } | 712 } |
| 713 | 713 |
| 714 #if SK_SUPPORT_GPU | 714 #if SK_SUPPORT_GPU |
| 715 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ImageFilterZeroBlurSigma_Gpu, reporter, ct
xInfo) { | 715 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterZeroBlurSigma_Gpu, reporter, ctxIn
fo) { |
| 716 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_zero_blur_sigma); | 716 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_zero_blur_sigma); |
| 717 } | 717 } |
| 718 #endif | 718 #endif |
| 719 | 719 |
| 720 | 720 |
| 721 // Tests that, even when an upstream filter has returned null (due to failure or
clipping), a | 721 // Tests that, even when an upstream filter has returned null (due to failure or
clipping), a |
| 722 // downstream filter that affects transparent black still does so even with a nu
llptr input. | 722 // downstream filter that affects transparent black still does so even with a nu
llptr input. |
| 723 static void test_fail_affects_transparent_black(SkImageFilter::Proxy* proxy, | 723 static void test_fail_affects_transparent_black(SkImageFilter::Proxy* proxy, |
| 724 skiatest::Reporter* reporter, | 724 skiatest::Reporter* reporter, |
| 725 GrContext* context) { | 725 GrContext* context) { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 739 SkAutoLockPixels lock(resultBM); | 739 SkAutoLockPixels lock(resultBM); |
| 740 REPORTER_ASSERT(reporter, *resultBM.getAddr32(0, 0) == SK_ColorGREEN); | 740 REPORTER_ASSERT(reporter, *resultBM.getAddr32(0, 0) == SK_ColorGREEN); |
| 741 } | 741 } |
| 742 } | 742 } |
| 743 | 743 |
| 744 DEF_TEST(ImageFilterFailAffectsTransparentBlack, reporter) { | 744 DEF_TEST(ImageFilterFailAffectsTransparentBlack, reporter) { |
| 745 run_raster_test(reporter, 100, test_fail_affects_transparent_black); | 745 run_raster_test(reporter, 100, test_fail_affects_transparent_black); |
| 746 } | 746 } |
| 747 | 747 |
| 748 #if SK_SUPPORT_GPU | 748 #if SK_SUPPORT_GPU |
| 749 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ImageFilterFailAffectsTransparentBlack_Gpu
, reporter, ctxInfo) { | 749 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterFailAffectsTransparentBlack_Gpu, r
eporter, ctxInfo) { |
| 750 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_fail_affects_transparen
t_black); | 750 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_fail_affects_transparen
t_black); |
| 751 } | 751 } |
| 752 #endif | 752 #endif |
| 753 | 753 |
| 754 DEF_TEST(ImageFilterDrawTiled, reporter) { | 754 DEF_TEST(ImageFilterDrawTiled, reporter) { |
| 755 // Check that all filters when drawn tiled (with subsequent clip rects) exac
tly | 755 // Check that all filters when drawn tiled (with subsequent clip rects) exac
tly |
| 756 // match the same filters drawn with a single full-canvas bitmap draw. | 756 // match the same filters drawn with a single full-canvas bitmap draw. |
| 757 // Tests pass by not asserting. | 757 // Tests pass by not asserting. |
| 758 | 758 |
| 759 FilterList filters(nullptr); | 759 FilterList filters(nullptr); |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1091 canvas.saveLayer(&bounds, &filterPaint); | 1091 canvas.saveLayer(&bounds, &filterPaint); |
| 1092 canvas.drawRect(rect, rectPaint); | 1092 canvas.drawRect(rect, rectPaint); |
| 1093 canvas.restore(); | 1093 canvas.restore(); |
| 1094 } | 1094 } |
| 1095 | 1095 |
| 1096 DEF_TEST(ImageFilterCropRect, reporter) { | 1096 DEF_TEST(ImageFilterCropRect, reporter) { |
| 1097 run_raster_test(reporter, 100, test_crop_rects); | 1097 run_raster_test(reporter, 100, test_crop_rects); |
| 1098 } | 1098 } |
| 1099 | 1099 |
| 1100 #if SK_SUPPORT_GPU | 1100 #if SK_SUPPORT_GPU |
| 1101 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ImageFilterCropRect_Gpu, reporter, ctxInfo
) { | 1101 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterCropRect_Gpu, reporter, ctxInfo) { |
| 1102 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_crop_rects); | 1102 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_crop_rects); |
| 1103 } | 1103 } |
| 1104 #endif | 1104 #endif |
| 1105 | 1105 |
| 1106 DEF_TEST(ImageFilterMatrix, reporter) { | 1106 DEF_TEST(ImageFilterMatrix, reporter) { |
| 1107 SkBitmap temp; | 1107 SkBitmap temp; |
| 1108 temp.allocN32Pixels(100, 100); | 1108 temp.allocN32Pixels(100, 100); |
| 1109 SkCanvas canvas(temp); | 1109 SkCanvas canvas(temp); |
| 1110 canvas.scale(SkIntToScalar(2), SkIntToScalar(2)); | 1110 canvas.scale(SkIntToScalar(2), SkIntToScalar(2)); |
| 1111 | 1111 |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1214 | 1214 |
| 1215 sk_sp<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg.get(), ctx
, &offset)); | 1215 sk_sp<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg.get(), ctx
, &offset)); |
| 1216 REPORTER_ASSERT(reporter, !resultImage); | 1216 REPORTER_ASSERT(reporter, !resultImage); |
| 1217 } | 1217 } |
| 1218 | 1218 |
| 1219 DEF_TEST(ImageFilterClippedPictureImageFilter, reporter) { | 1219 DEF_TEST(ImageFilterClippedPictureImageFilter, reporter) { |
| 1220 run_raster_test(reporter, 2, test_clipped_picture_imagefilter); | 1220 run_raster_test(reporter, 2, test_clipped_picture_imagefilter); |
| 1221 } | 1221 } |
| 1222 | 1222 |
| 1223 #if SK_SUPPORT_GPU | 1223 #if SK_SUPPORT_GPU |
| 1224 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ImageFilterClippedPictureImageFilter_Gpu,
reporter, ctxInfo) { | 1224 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterClippedPictureImageFilter_Gpu, rep
orter, ctxInfo) { |
| 1225 run_gpu_test(reporter, ctxInfo.fGrContext, 2, test_clipped_picture_imagefilt
er); | 1225 run_gpu_test(reporter, ctxInfo.fGrContext, 2, test_clipped_picture_imagefilt
er); |
| 1226 } | 1226 } |
| 1227 #endif | 1227 #endif |
| 1228 | 1228 |
| 1229 DEF_TEST(ImageFilterEmptySaveLayer, reporter) { | 1229 DEF_TEST(ImageFilterEmptySaveLayer, reporter) { |
| 1230 // Even when there's an empty saveLayer()/restore(), ensure that an image | 1230 // Even when there's an empty saveLayer()/restore(), ensure that an image |
| 1231 // filter or color filter which affects transparent black still draws. | 1231 // filter or color filter which affects transparent black still draws. |
| 1232 | 1232 |
| 1233 SkBitmap bitmap; | 1233 SkBitmap bitmap; |
| 1234 bitmap.allocN32Pixels(10, 10); | 1234 bitmap.allocN32Pixels(10, 10); |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1473 sk_sp<SkSpecialImage> resultImg(composedFilter->filterImage(srcImg.get(), ct
x, &offset)); | 1473 sk_sp<SkSpecialImage> resultImg(composedFilter->filterImage(srcImg.get(), ct
x, &offset)); |
| 1474 REPORTER_ASSERT(reporter, resultImg); | 1474 REPORTER_ASSERT(reporter, resultImg); |
| 1475 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0); | 1475 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0); |
| 1476 } | 1476 } |
| 1477 | 1477 |
| 1478 DEF_TEST(ComposedImageFilterOffset, reporter) { | 1478 DEF_TEST(ComposedImageFilterOffset, reporter) { |
| 1479 run_raster_test(reporter, 100, test_composed_imagefilter_offset); | 1479 run_raster_test(reporter, 100, test_composed_imagefilter_offset); |
| 1480 } | 1480 } |
| 1481 | 1481 |
| 1482 #if SK_SUPPORT_GPU | 1482 #if SK_SUPPORT_GPU |
| 1483 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ComposedImageFilterOffset_Gpu, reporter, c
txInfo) { | 1483 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ComposedImageFilterOffset_Gpu, reporter, ctxI
nfo) { |
| 1484 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_composed_imagefilter_of
fset); | 1484 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_composed_imagefilter_of
fset); |
| 1485 } | 1485 } |
| 1486 #endif | 1486 #endif |
| 1487 | 1487 |
| 1488 static void test_composed_imagefilter_bounds(SkImageFilter::Proxy* proxy, | 1488 static void test_composed_imagefilter_bounds(SkImageFilter::Proxy* proxy, |
| 1489 skiatest::Reporter* reporter, | 1489 skiatest::Reporter* reporter, |
| 1490 GrContext* context) { | 1490 GrContext* context) { |
| 1491 // The bounds passed to the inner filter must be filtered by the outer | 1491 // The bounds passed to the inner filter must be filtered by the outer |
| 1492 // filter, so that the inner filter produces the pixels that the outer | 1492 // filter, so that the inner filter produces the pixels that the outer |
| 1493 // filter requires as input. This matters if the outer filter moves pixels. | 1493 // filter requires as input. This matters if the outer filter moves pixels. |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1547 REPORTER_ASSERT(reporter, offset.fY == 0); | 1547 REPORTER_ASSERT(reporter, offset.fY == 0); |
| 1548 REPORTER_ASSERT(reporter, resultImg->width() == 20); | 1548 REPORTER_ASSERT(reporter, resultImg->width() == 20); |
| 1549 REPORTER_ASSERT(reporter, resultImg->height() == 30); | 1549 REPORTER_ASSERT(reporter, resultImg->height() == 30); |
| 1550 } | 1550 } |
| 1551 | 1551 |
| 1552 DEF_TEST(ImageFilterPartialCropRect, reporter) { | 1552 DEF_TEST(ImageFilterPartialCropRect, reporter) { |
| 1553 run_raster_test(reporter, 100, test_partial_crop_rect); | 1553 run_raster_test(reporter, 100, test_partial_crop_rect); |
| 1554 } | 1554 } |
| 1555 | 1555 |
| 1556 #if SK_SUPPORT_GPU | 1556 #if SK_SUPPORT_GPU |
| 1557 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ImageFilterPartialCropRect_Gpu, reporter,
ctxInfo) { | 1557 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterPartialCropRect_Gpu, reporter, ctx
Info) { |
| 1558 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_partial_crop_rect); | 1558 run_gpu_test(reporter, ctxInfo.fGrContext, 100, test_partial_crop_rect); |
| 1559 } | 1559 } |
| 1560 #endif | 1560 #endif |
| 1561 | 1561 |
| 1562 DEF_TEST(ImageFilterCanComputeFastBounds, reporter) { | 1562 DEF_TEST(ImageFilterCanComputeFastBounds, reporter) { |
| 1563 | 1563 |
| 1564 { | 1564 { |
| 1565 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); | 1565 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); |
| 1566 sk_sp<SkImageFilter> lighting(SkLightingImageFilter::MakePointLitDiffuse
(location, | 1566 sk_sp<SkImageFilter> lighting(SkLightingImageFilter::MakePointLitDiffuse
(location, |
| 1567
SK_ColorGREEN, | 1567
SK_ColorGREEN, |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1688 canvas->drawRect(SkRect::MakeIWH(largeW, largeH), paint); | 1688 canvas->drawRect(SkRect::MakeIWH(largeW, largeH), paint); |
| 1689 } | 1689 } |
| 1690 | 1690 |
| 1691 DEF_TEST(ImageFilterBlurLargeImage, reporter) { | 1691 DEF_TEST(ImageFilterBlurLargeImage, reporter) { |
| 1692 auto surface(SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(100, 100))); | 1692 auto surface(SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(100, 100))); |
| 1693 test_large_blur_input(reporter, surface->getCanvas()); | 1693 test_large_blur_input(reporter, surface->getCanvas()); |
| 1694 } | 1694 } |
| 1695 | 1695 |
| 1696 #if SK_SUPPORT_GPU | 1696 #if SK_SUPPORT_GPU |
| 1697 | 1697 |
| 1698 DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(ImageFilterHugeBlur_Gpu, reporter, ctxInfo
) { | 1698 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterHugeBlur_Gpu, reporter, ctxInfo) { |
| 1699 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); | 1699 const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); |
| 1700 | 1700 |
| 1701 sk_sp<SkGpuDevice> device(SkGpuDevice::Create(ctxInfo.fGrContext, | 1701 sk_sp<SkGpuDevice> device(SkGpuDevice::Create(ctxInfo.fGrContext, |
| 1702 SkBudgeted::kNo, | 1702 SkBudgeted::kNo, |
| 1703 SkImageInfo::MakeN32Premul(100
, 100), | 1703 SkImageInfo::MakeN32Premul(100
, 100), |
| 1704 0, | 1704 0, |
| 1705 &props, | 1705 &props, |
| 1706 SkGpuDevice::kUninit_InitConte
nts)); | 1706 SkGpuDevice::kUninit_InitConte
nts)); |
| 1707 SkCanvas canvas(device.get()); | 1707 SkCanvas canvas(device.get()); |
| 1708 | 1708 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1722 | 1722 |
| 1723 test_xfermode_cropped_input(&canvas, reporter); | 1723 test_xfermode_cropped_input(&canvas, reporter); |
| 1724 } | 1724 } |
| 1725 | 1725 |
| 1726 DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(ImageFilterBlurLargeImage_Gpu, reporter, ctxInfo
) { | 1726 DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(ImageFilterBlurLargeImage_Gpu, reporter, ctxInfo
) { |
| 1727 auto surface(SkSurface::MakeRenderTarget(ctxInfo.fGrContext, SkBudgeted::kYe
s, | 1727 auto surface(SkSurface::MakeRenderTarget(ctxInfo.fGrContext, SkBudgeted::kYe
s, |
| 1728 SkImageInfo::MakeN32Premul(100, 100
))); | 1728 SkImageInfo::MakeN32Premul(100, 100
))); |
| 1729 test_large_blur_input(reporter, surface->getCanvas()); | 1729 test_large_blur_input(reporter, surface->getCanvas()); |
| 1730 } | 1730 } |
| 1731 #endif | 1731 #endif |
| OLD | NEW |