| Index: tests/ImageFilterTest.cpp
|
| diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
|
| index 214aed950cd388df429931da5eb4ac9f2e9d88de..f87f99ce98cc4e6dbe9d69daa8b6df1cd3f5c57f 100644
|
| --- a/tests/ImageFilterTest.cpp
|
| +++ b/tests/ImageFilterTest.cpp
|
| @@ -421,6 +421,54 @@ DEF_TEST(ImageFilterDrawTiled, reporter) {
|
| }
|
| }
|
|
|
| +static void drawSaveLayerPicture(int width, int height, int tileSize, SkBBHFactory* factory, SkBitmap* result) {
|
| +
|
| + SkMatrix matrix;
|
| + matrix.setTranslate(SkIntToScalar(50), 0);
|
| +
|
| + SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(SK_ColorWHITE, SkXfermode::kSrc_Mode));
|
| + SkAutoTUnref<SkImageFilter> cfif(SkColorFilterImageFilter::Create(cf.get()));
|
| + SkAutoTUnref<SkImageFilter> imageFilter(SkMatrixImageFilter::Create(matrix, SkPaint::kNone_FilterLevel, cfif.get()));
|
| +
|
| + SkPaint paint;
|
| + paint.setImageFilter(imageFilter.get());
|
| + SkPictureRecorder recorder;
|
| + SkRect bounds = SkRect::Make(SkIRect::MakeXYWH(0, 0, 50, 50));
|
| + SkCanvas* recordingCanvas = recorder.beginRecording(width, height, factory, 0);
|
| + recordingCanvas->translate(-55, 0);
|
| + recordingCanvas->saveLayer(&bounds, &paint);
|
| + recordingCanvas->restore();
|
| + SkAutoTUnref<SkPicture> picture1(recorder.endRecording());
|
| +
|
| + result->allocN32Pixels(width, height);
|
| + SkCanvas canvas(*result);
|
| + canvas.clear(0);
|
| + canvas.clipRect(SkRect::Make(SkIRect::MakeWH(tileSize, tileSize)));
|
| + canvas.drawPicture(picture1.get());
|
| +}
|
| +
|
| +DEF_TEST(ImageFilterDrawMatrixBBH, reporter) {
|
| + // Check that matrix filter when drawn tiled with BBH exactly
|
| + // matches the same thing drawn without BBH.
|
| + // Tests pass by not asserting.
|
| +
|
| + const int width = 200, height = 200;
|
| + const int tileSize = 100;
|
| + SkBitmap result1, result2;
|
| + SkRTreeFactory factory;
|
| +
|
| + drawSaveLayerPicture(width, height, tileSize, &factory, &result1);
|
| + drawSaveLayerPicture(width, height, tileSize, NULL, &result2);
|
| +
|
| + for (int y = 0; y < height; y++) {
|
| + int diffs = memcmp(result1.getAddr32(0, y), result2.getAddr32(0, y), result1.rowBytes());
|
| + REPORTER_ASSERT(reporter, !diffs);
|
| + if (diffs) {
|
| + break;
|
| + }
|
| + }
|
| +}
|
| +
|
| static void drawBlurredRect(SkCanvas* canvas) {
|
| SkAutoTUnref<SkImageFilter> filter(SkBlurImageFilter::Create(SkIntToScalar(8), 0));
|
| SkPaint filterPaint;
|
|
|