| Index: tests/ImageFilterTest.cpp
|
| diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
|
| index b37f9589f78223f591491c2a7c89da6e9b57fdda..81f8a9993820d0557f6dd163ffc7108ffd718e18 100644
|
| --- a/tests/ImageFilterTest.cpp
|
| +++ b/tests/ImageFilterTest.cpp
|
| @@ -145,59 +145,61 @@ class FilterList {
|
| public:
|
| FilterList(sk_sp<SkImageFilter> input, const SkImageFilter::CropRect* cropRect = nullptr) {
|
| SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1);
|
| - SkScalar kernel[9] = {
|
| - SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1),
|
| - SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1),
|
| - SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1),
|
| - };
|
| - const SkISize kernelSize = SkISize::Make(3, 3);
|
| - const SkScalar gain = SK_Scalar1, bias = 0;
|
| const SkScalar five = SkIntToScalar(5);
|
|
|
| - SkMatrix matrix;
|
| -
|
| - matrix.setTranslate(SK_Scalar1, SK_Scalar1);
|
| - matrix.postRotate(SkIntToScalar(45), SK_Scalar1, SK_Scalar1);
|
| -
|
| {
|
| sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorRED,
|
| SkXfermode::kSrcIn_Mode));
|
|
|
| this->addFilter("color filter",
|
| - SkColorFilterImageFilter::Make(cf, input, cropRect).release());
|
| + SkColorFilterImageFilter::Make(std::move(cf), input, cropRect));
|
| }
|
|
|
| {
|
| sk_sp<SkImage> gradientImage(SkImage::MakeFromBitmap(make_gradient_circle(64, 64)));
|
| sk_sp<SkImageFilter> gradientSource(SkImageSource::Make(std::move(gradientImage)));
|
|
|
| - this->addFilter("displacement map", SkDisplacementMapEffect::Create(
|
| - SkDisplacementMapEffect::kR_ChannelSelectorType,
|
| - SkDisplacementMapEffect::kB_ChannelSelectorType,
|
| - 20.0f, gradientSource.get(), input.get(), cropRect));
|
| + this->addFilter("displacement map",
|
| + sk_sp<SkImageFilter>(SkDisplacementMapEffect::Create(
|
| + SkDisplacementMapEffect::kR_ChannelSelectorType,
|
| + SkDisplacementMapEffect::kB_ChannelSelectorType,
|
| + 20.0f, gradientSource.get(), input.get(), cropRect)));
|
| }
|
|
|
| this->addFilter("blur", SkBlurImageFilter::Make(SK_Scalar1,
|
| SK_Scalar1,
|
| input,
|
| - cropRect).release());
|
| + cropRect));
|
| this->addFilter("drop shadow", SkDropShadowImageFilter::Make(
|
| SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_ColorGREEN,
|
| SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode,
|
| - input, cropRect).release());
|
| - this->addFilter("diffuse lighting", SkLightingImageFilter::CreatePointLitDiffuse(
|
| - location, SK_ColorGREEN, 0, 0, input.get(), cropRect));
|
| + input, cropRect));
|
| + this->addFilter("diffuse lighting",
|
| + SkLightingImageFilter::MakePointLitDiffuse(location, SK_ColorGREEN, 0, 0,
|
| + input, cropRect));
|
| this->addFilter("specular lighting",
|
| - SkLightingImageFilter::CreatePointLitSpecular(location, SK_ColorGREEN, 0, 0, 0,
|
| - input.get(), cropRect));
|
| - this->addFilter("matrix convolution",
|
| + SkLightingImageFilter::MakePointLitSpecular(location, SK_ColorGREEN, 0, 0, 0,
|
| + input, cropRect));
|
| + {
|
| + SkScalar kernel[9] = {
|
| + SkIntToScalar(1), SkIntToScalar(1), SkIntToScalar(1),
|
| + SkIntToScalar(1), SkIntToScalar(-7), SkIntToScalar(1),
|
| + SkIntToScalar(1), SkIntToScalar(1), SkIntToScalar(1),
|
| + };
|
| + const SkISize kernelSize = SkISize::Make(3, 3);
|
| + const SkScalar gain = SK_Scalar1, bias = 0;
|
| +
|
| + this->addFilter("matrix convolution",
|
| SkMatrixConvolutionImageFilter::Make(
|
| kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1),
|
| SkMatrixConvolutionImageFilter::kRepeat_TileMode, false,
|
| - input, cropRect).release());
|
| + input, cropRect));
|
| + }
|
| +
|
| this->addFilter("merge", SkMergeImageFilter::Make(input, input,
|
| SkXfermode::kSrcOver_Mode,
|
| - cropRect).release());
|
| + cropRect));
|
| +
|
| {
|
| SkPaint greenColorShaderPaint;
|
| greenColorShaderPaint.setShader(SkShader::MakeColorShader(SK_ColorGREEN));
|
| @@ -212,29 +214,34 @@ public:
|
|
|
| this->addFilter("merge with disjoint inputs", SkMergeImageFilter::Make(
|
| std::move(paintFilterLeft), std::move(paintFilterRight),
|
| - SkXfermode::kSrcOver_Mode, cropRect).release());
|
| + SkXfermode::kSrcOver_Mode, cropRect));
|
| }
|
|
|
| this->addFilter("offset",
|
| SkOffsetImageFilter::Make(SK_Scalar1, SK_Scalar1, input,
|
| - cropRect).release());
|
| - this->addFilter("dilate", SkDilateImageFilter::Make(3, 2, input, cropRect).release());
|
| - this->addFilter("erode", SkErodeImageFilter::Make(2, 3, input, cropRect).release());
|
| - this->addFilter("tile", SkTileImageFilter::Create(
|
| + cropRect));
|
| + this->addFilter("dilate", SkDilateImageFilter::Make(3, 2, input, cropRect));
|
| + this->addFilter("erode", SkErodeImageFilter::Make(2, 3, input, cropRect));
|
| + this->addFilter("tile", sk_sp<SkImageFilter>(SkTileImageFilter::Create(
|
| SkRect::MakeXYWH(0, 0, 50, 50),
|
| cropRect ? cropRect->rect() : SkRect::MakeXYWH(0, 0, 100, 100),
|
| - input.get()));
|
| + input.get())));
|
| +
|
| if (!cropRect) {
|
| + SkMatrix matrix;
|
| +
|
| + matrix.setTranslate(SK_Scalar1, SK_Scalar1);
|
| + matrix.postRotate(SkIntToScalar(45), SK_Scalar1, SK_Scalar1);
|
| +
|
| this->addFilter("matrix",
|
| - SkImageFilter::MakeMatrixFilter(matrix, kLow_SkFilterQuality, input).release());
|
| + SkImageFilter::MakeMatrixFilter(matrix, kLow_SkFilterQuality, input));
|
| }
|
| -
|
| {
|
| sk_sp<SkImageFilter> blur(SkBlurImageFilter::Make(five, five, input));
|
|
|
| this->addFilter("blur and offset", SkOffsetImageFilter::Make(five, five,
|
| std::move(blur),
|
| - cropRect).release());
|
| + cropRect));
|
| }
|
| {
|
| SkRTreeFactory factory;
|
| @@ -249,7 +256,7 @@ public:
|
|
|
| this->addFilter("picture and blur", SkBlurImageFilter::Make(five, five,
|
| std::move(pictureFilter),
|
| - cropRect).release());
|
| + cropRect));
|
| }
|
| {
|
| SkPaint paint;
|
| @@ -258,23 +265,26 @@ public:
|
|
|
| this->addFilter("paint and blur", SkBlurImageFilter::Make(five, five,
|
| std::move(paintFilter),
|
| - cropRect).release());
|
| + cropRect));
|
| }
|
| this->addFilter("xfermode", SkXfermodeImageFilter::Make(
|
| - SkXfermode::Make(SkXfermode::kSrc_Mode), input, input, cropRect).release());
|
| + SkXfermode::Make(SkXfermode::kSrc_Mode), input, input, cropRect));
|
| }
|
| int count() const { return fFilters.count(); }
|
| SkImageFilter* getFilter(int index) const { return fFilters[index].fFilter.get(); }
|
| const char* getName(int index) const { return fFilters[index].fName; }
|
| private:
|
| struct Filter {
|
| - Filter() : fName(nullptr), fFilter(nullptr) {}
|
| - Filter(const char* name, SkImageFilter* filter) : fName(name), fFilter(filter) {}
|
| + Filter() : fName(nullptr) {}
|
| + Filter(const char* name, sk_sp<SkImageFilter> filter)
|
| + : fName(name)
|
| + , fFilter(std::move(filter)) {
|
| + }
|
| const char* fName;
|
| sk_sp<SkImageFilter> fFilter;
|
| };
|
| - void addFilter(const char* name, SkImageFilter* filter) {
|
| - fFilters.push_back(Filter(name, filter));
|
| + void addFilter(const char* name, sk_sp<SkImageFilter> filter) {
|
| + fFilters.push_back(Filter(name, std::move(filter)));
|
| }
|
|
|
| SkTArray<Filter> fFilters;
|
| @@ -500,10 +510,10 @@ DEF_TEST(ImageFilter, reporter) {
|
|
|
| sk_sp<SkImageFilter> bmSrc(SkImageSource::Make(std::move(image)));
|
| SkPaint paint;
|
| - paint.setImageFilter(SkLightingImageFilter::CreateSpotLitSpecular(
|
| + paint.setImageFilter(SkLightingImageFilter::MakeSpotLitSpecular(
|
| location, target, specularExponent, 180,
|
| 0xFFFFFFFF, SK_Scalar1, SK_Scalar1, SK_Scalar1,
|
| - bmSrc.get()))->unref();
|
| + std::move(bmSrc)));
|
| SkCanvas canvas(result);
|
| SkRect r = SkRect::MakeWH(SkIntToScalar(kBitmapSize),
|
| SkIntToScalar(kBitmapSize));
|
| @@ -625,8 +635,8 @@ static void run_raster_test(skiatest::Reporter* reporter,
|
|
|
| const SkImageInfo info = SkImageInfo::MakeN32Premul(widthHeight, widthHeight);
|
|
|
| - SkAutoTUnref<SkBaseDevice> device(SkBitmapDevice::Create(info, props));
|
| - SkImageFilter::DeviceProxy proxy(device);
|
| + sk_sp<SkBaseDevice> device(SkBitmapDevice::Create(info, props));
|
| + SkImageFilter::DeviceProxy proxy(device.get());
|
|
|
| (*test)(&proxy, reporter, nullptr);
|
| }
|
| @@ -638,14 +648,14 @@ static void run_gpu_test(skiatest::Reporter* reporter,
|
| PFTest test) {
|
| const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
|
|
|
| - SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context,
|
| - SkBudgeted::kNo,
|
| - SkImageInfo::MakeN32Premul(widthHeight,
|
| - widthHeight),
|
| - 0,
|
| - &props,
|
| - SkGpuDevice::kUninit_InitContents));
|
| - SkImageFilter::DeviceProxy proxy(device);
|
| + sk_sp<SkGpuDevice> device(SkGpuDevice::Create(context,
|
| + SkBudgeted::kNo,
|
| + SkImageInfo::MakeN32Premul(widthHeight,
|
| + widthHeight),
|
| + 0,
|
| + &props,
|
| + SkGpuDevice::kUninit_InitContents));
|
| + SkImageFilter::DeviceProxy proxy(device.get());
|
|
|
| (*test)(&proxy, reporter, context);
|
| }
|
| @@ -1158,8 +1168,8 @@ DEF_TEST(ImageFilterCrossProcessPictureImageFilter, reporter) {
|
| // Check that, for now, SkPictureImageFilter does not serialize or
|
| // deserialize its contained picture when the filter is serialized
|
| // cross-process. Do this by "laundering" it through SkValidatingReadBuffer.
|
| - SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(imageFilter.get()));
|
| - SkAutoTUnref<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable(
|
| + sk_sp<SkData> data(SkValidatingSerializeFlattenable(imageFilter.get()));
|
| + sk_sp<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable(
|
| data->data(), data->size(), SkImageFilter::GetFlattenableType()));
|
| SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.get());
|
|
|
| @@ -1551,10 +1561,13 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(PartialCropRect_Gpu, reporter, ctxInfo) {
|
|
|
| DEF_TEST(ImageFilterCanComputeFastBounds, reporter) {
|
|
|
| - SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1);
|
| - SkAutoTUnref<SkImageFilter> lighting(SkLightingImageFilter::CreatePointLitDiffuse(
|
| - location, SK_ColorGREEN, 0, 0));
|
| - REPORTER_ASSERT(reporter, !lighting->canComputeFastBounds());
|
| + {
|
| + SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1);
|
| + sk_sp<SkImageFilter> lighting(SkLightingImageFilter::MakePointLitDiffuse(location,
|
| + SK_ColorGREEN,
|
| + 0, 0, nullptr));
|
| + REPORTER_ASSERT(reporter, !lighting->canComputeFastBounds());
|
| + }
|
|
|
| {
|
| sk_sp<SkImageFilter> gray(make_grayscale(nullptr, nullptr));
|
| @@ -1685,13 +1698,13 @@ DEF_TEST(BlurLargeImage, reporter) {
|
| DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(HugeBlurImageFilter_Gpu, reporter, ctxInfo) {
|
| const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
|
|
|
| - SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(ctxInfo.fGrContext,
|
| - SkBudgeted::kNo,
|
| - SkImageInfo::MakeN32Premul(100, 100),
|
| - 0,
|
| - &props,
|
| - SkGpuDevice::kUninit_InitContents));
|
| - SkCanvas canvas(device);
|
| + sk_sp<SkGpuDevice> device(SkGpuDevice::Create(ctxInfo.fGrContext,
|
| + SkBudgeted::kNo,
|
| + SkImageInfo::MakeN32Premul(100, 100),
|
| + 0,
|
| + &props,
|
| + SkGpuDevice::kUninit_InitContents));
|
| + SkCanvas canvas(device.get());
|
|
|
| test_huge_blur(&canvas, reporter);
|
| }
|
| @@ -1699,13 +1712,13 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(HugeBlurImageFilter_Gpu, reporter, ctxInfo
|
| DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(XfermodeImageFilterCroppedInput_Gpu, reporter, ctxInfo) {
|
| const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
|
|
|
| - SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(ctxInfo.fGrContext,
|
| - SkBudgeted::kNo,
|
| - SkImageInfo::MakeN32Premul(1, 1),
|
| - 0,
|
| - &props,
|
| - SkGpuDevice::kUninit_InitContents));
|
| - SkCanvas canvas(device);
|
| + sk_sp<SkGpuDevice> device(SkGpuDevice::Create(ctxInfo.fGrContext,
|
| + SkBudgeted::kNo,
|
| + SkImageInfo::MakeN32Premul(1, 1),
|
| + 0,
|
| + &props,
|
| + SkGpuDevice::kUninit_InitContents));
|
| + SkCanvas canvas(device.get());
|
|
|
| test_xfermode_cropped_input(&canvas, reporter);
|
| }
|
|
|