| Index: tests/ImageFilterTest.cpp
|
| diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
|
| index 87aabd1c8df000abfe41848a066e746755e49a74..6e34a7581341e1dad5a636b5461dbf2adcad19fa 100644
|
| --- a/tests/ImageFilterTest.cpp
|
| +++ b/tests/ImageFilterTest.cpp
|
| @@ -18,6 +18,8 @@
|
| #include "SkDropShadowImageFilter.h"
|
| #include "SkFlattenableSerialization.h"
|
| #include "SkGradientShader.h"
|
| +#include "SkImagePriv.h"
|
| +#include "SkImage_Base.h"
|
| #include "SkLightingImageFilter.h"
|
| #include "SkMatrixConvolutionImageFilter.h"
|
| #include "SkMergeImageFilter.h"
|
| @@ -49,9 +51,10 @@ public:
|
| : SkImageFilter(0, NULL), fReporter(reporter), fExpectedMatrix(expectedMatrix) {
|
| }
|
|
|
| - virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context& ctx,
|
| - SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE {
|
| + virtual bool onFilterImage(Proxy*, const SkImage* src, const Context& ctx,
|
| + SkAutoTUnref<const SkImage>& result, SkIPoint* offset) const SK_OVERRIDE {
|
| REPORTER_ASSERT(fReporter, ctx.ctm() == fExpectedMatrix);
|
| + result.reset(SkRef(src));
|
| return true;
|
| }
|
|
|
| @@ -269,9 +272,14 @@ static void test_crop_rects(SkBaseDevice* device, skiatest::Reporter* reporter)
|
| // Check that all filters offset to their absolute crop rect,
|
| // unaffected by the input crop rect.
|
| // Tests pass by not asserting.
|
| - SkBitmap bitmap;
|
| - bitmap.allocN32Pixels(100, 100);
|
| - bitmap.eraseARGB(0, 0, 0, 0);
|
| + SkAutoTUnref<SkImage> image;
|
| + {
|
| + SkBitmap bitmap;
|
| + bitmap.allocN32Pixels(100, 100);
|
| + bitmap.eraseARGB(0, 0, 0, 0);
|
| + image.reset(SkNewImageFromBitmap(bitmap, NULL));
|
| + REPORTER_ASSERT(reporter, image != NULL);
|
| + }
|
| SkDeviceImageFilterProxy proxy(device, SkSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType));
|
|
|
| SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80));
|
| @@ -312,13 +320,13 @@ static void test_crop_rects(SkBaseDevice* device, skiatest::Reporter* reporter)
|
|
|
| for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
|
| SkImageFilter* filter = filters[i];
|
| - SkBitmap result;
|
| + SkAutoTUnref<const SkImage> result;
|
| SkIPoint offset;
|
| SkString str;
|
| str.printf("filter %d", static_cast<int>(i));
|
| SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), NULL);
|
| - REPORTER_ASSERT_MESSAGE(reporter, filter->filterImage(&proxy, bitmap, ctx,
|
| - &result, &offset), str.c_str());
|
| + REPORTER_ASSERT_MESSAGE(reporter, filter->filterImage(&proxy, image, ctx,
|
| + result, &offset), str.c_str());
|
| REPORTER_ASSERT_MESSAGE(reporter, offset.fX == 20 && offset.fY == 30, str.c_str());
|
| }
|
|
|
| @@ -348,6 +356,7 @@ static SkBitmap make_gradient_circle(int width, int height) {
|
| return bitmap;
|
| }
|
|
|
| +
|
| static void test_negative_blur_sigma(SkBaseDevice* device, skiatest::Reporter* reporter) {
|
| // Check that SkBlurImageFilter will accept a negative sigma, either in
|
| // the given arguments or after CTM application.
|
| @@ -363,18 +372,28 @@ static void test_negative_blur_sigma(SkBaseDevice* device, skiatest::Reporter* r
|
| SkBlurImageFilter::Create(-five, five)
|
| );
|
|
|
| - SkBitmap gradient = make_gradient_circle(width, height);
|
| SkBitmap positiveResult1, negativeResult1;
|
| SkBitmap positiveResult2, negativeResult2;
|
| - SkIPoint offset;
|
| - SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), NULL);
|
| - positiveFilter->filterImage(&proxy, gradient, ctx, &positiveResult1, &offset);
|
| - negativeFilter->filterImage(&proxy, gradient, ctx, &negativeResult1, &offset);
|
| - SkMatrix negativeScale;
|
| - negativeScale.setScale(-SK_Scalar1, SK_Scalar1);
|
| - SkImageFilter::Context negativeCTX(negativeScale, SkIRect::MakeLargest(), NULL);
|
| - positiveFilter->filterImage(&proxy, gradient, negativeCTX, &negativeResult2, &offset);
|
| - negativeFilter->filterImage(&proxy, gradient, negativeCTX, &positiveResult2, &offset);
|
| + {
|
| + SkAutoTUnref<SkImage> gradient(
|
| + SkNewImageFromBitmap(make_gradient_circle(width, height), NULL));
|
| + SkAutoTUnref<const SkImage> positiveResult1i, negativeResult1i;
|
| + SkAutoTUnref<const SkImage> positiveResult2i, negativeResult2i;
|
| + SkIPoint offset;
|
| + SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), NULL);
|
| + positiveFilter->filterImage(&proxy, gradient, ctx, positiveResult1i, &offset);
|
| + negativeFilter->filterImage(&proxy, gradient, ctx, negativeResult1i, &offset);
|
| + SkMatrix negativeScale;
|
| + negativeScale.setScale(-SK_Scalar1, SK_Scalar1);
|
| + SkImageFilter::Context negativeCTX(negativeScale, SkIRect::MakeLargest(), NULL);
|
| + positiveFilter->filterImage(&proxy, gradient, negativeCTX, negativeResult2i, &offset);
|
| + negativeFilter->filterImage(&proxy, gradient, negativeCTX, positiveResult2i, &offset);
|
| + REPORTER_ASSERT(reporter, as_IB(positiveResult1i)->getROPixels(&positiveResult1));
|
| + REPORTER_ASSERT(reporter, as_IB(positiveResult2i)->getROPixels(&positiveResult2));
|
| + REPORTER_ASSERT(reporter, as_IB(negativeResult1i)->getROPixels(&negativeResult1));
|
| + REPORTER_ASSERT(reporter, as_IB(negativeResult2i)->getROPixels(&negativeResult2));
|
| + }
|
| +
|
| SkAutoLockPixels lockP1(positiveResult1);
|
| SkAutoLockPixels lockP2(positiveResult2);
|
| SkAutoLockPixels lockN1(negativeResult1);
|
| @@ -874,14 +893,16 @@ DEF_TEST(ImageFilterClippedPictureImageFilter, reporter) {
|
| SkAutoTUnref<SkImageFilter> imageFilter(
|
| SkPictureImageFilter::Create(picture.get()));
|
|
|
| - SkBitmap result;
|
| + SkAutoTUnref<const SkImage> result;
|
| SkIPoint offset;
|
| SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), NULL);
|
| + SkAutoTUnref<const SkImage> image;
|
| SkBitmap bitmap;
|
| bitmap.allocN32Pixels(2, 2);
|
| + image.reset(SkNewImageFromBitmap(bitmap, NULL));
|
| SkBitmapDevice device(bitmap);
|
| SkDeviceImageFilterProxy proxy(&device, SkSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType));
|
| - REPORTER_ASSERT(reporter, !imageFilter->filterImage(&proxy, bitmap, ctx, &result, &offset));
|
| + REPORTER_ASSERT(reporter, !imageFilter->filterImage(&proxy, image, ctx, result, &offset));
|
| }
|
|
|
| DEF_TEST(ImageFilterEmptySaveLayer, reporter) {
|
| @@ -1124,15 +1145,15 @@ DEF_TEST(ComposedImageFilterOffset, reporter) {
|
| bitmap.eraseARGB(0, 0, 0, 0);
|
| SkBitmapDevice device(bitmap);
|
| SkDeviceImageFilterProxy proxy(&device, SkSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType));
|
| -
|
| + SkAutoTUnref<const SkImage> image(SkNewImageFromBitmap(bitmap, NULL));
|
| SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20));
|
| SkAutoTUnref<SkImageFilter> offsetFilter(SkOffsetImageFilter::Create(0, 0, NULL, &cropRect));
|
| SkAutoTUnref<SkImageFilter> blurFilter(makeBlur());
|
| SkAutoTUnref<SkImageFilter> composedFilter(SkComposeImageFilter::Create(blurFilter, offsetFilter.get()));
|
| - SkBitmap result;
|
| + SkAutoTUnref<const SkImage> result;
|
| SkIPoint offset;
|
| SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeLargest(), NULL);
|
| - REPORTER_ASSERT(reporter, composedFilter->filterImage(&proxy, bitmap, ctx, &result, &offset));
|
| + REPORTER_ASSERT(reporter, composedFilter->filterImage(&proxy, image, ctx, result, &offset));
|
| REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0);
|
| }
|
|
|
|
|