Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(175)

Side by Side Diff: tests/ImageFilterTest.cpp

Issue 1831323003: Swap SkPictureImageFilter's factories over to smart pointers (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2013 Google Inc. 3 * Copyright 2013 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkBitmapDevice.h" 10 #include "SkBitmapDevice.h"
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 matrix.postRotate(SkIntToScalar(45), SK_Scalar1, SK_Scalar1); 127 matrix.postRotate(SkIntToScalar(45), SK_Scalar1, SK_Scalar1);
128 128
129 SkRTreeFactory factory; 129 SkRTreeFactory factory;
130 SkPictureRecorder recorder; 130 SkPictureRecorder recorder;
131 SkCanvas* recordingCanvas = recorder.beginRecording(64, 64, &factory, 0) ; 131 SkCanvas* recordingCanvas = recorder.beginRecording(64, 64, &factory, 0) ;
132 132
133 SkPaint greenPaint; 133 SkPaint greenPaint;
134 greenPaint.setColor(SK_ColorGREEN); 134 greenPaint.setColor(SK_ColorGREEN);
135 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeXYWH(10, 10, 30, 20) ), greenPaint); 135 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeXYWH(10, 10, 30, 20) ), greenPaint);
136 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); 136 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture());
137 SkAutoTUnref<SkImageFilter> pictureFilter(SkPictureImageFilter::Create(p icture.get())); 137 sk_sp<SkImageFilter> pictureFilter(SkPictureImageFilter::Make(picture));
138 sk_sp<SkShader> shader(SkPerlinNoiseShader::MakeTurbulence(SK_Scalar1, S K_Scalar1, 1, 0)); 138 sk_sp<SkShader> shader(SkPerlinNoiseShader::MakeTurbulence(SK_Scalar1, S K_Scalar1, 1, 0));
139 139
140 SkPaint paint; 140 SkPaint paint;
141 paint.setShader(shader); 141 paint.setShader(shader);
142 SkAutoTUnref<SkImageFilter> paintFilter(SkPaintImageFilter::Create(paint )); 142 SkAutoTUnref<SkImageFilter> paintFilter(SkPaintImageFilter::Create(paint ));
143 143
144 sk_sp<SkShader> greenColorShader(SkShader::MakeColorShader(SK_ColorGREEN )); 144 sk_sp<SkShader> greenColorShader(SkShader::MakeColorShader(SK_ColorGREEN ));
145 SkPaint greenColorShaderPaint; 145 SkPaint greenColorShaderPaint;
146 greenColorShaderPaint.setShader(greenColorShader); 146 greenColorShaderPaint.setShader(greenColorShader);
147 SkImageFilter::CropRect leftSideCropRect(SkRect::MakeXYWH(0, 0, 32, 64)) ; 147 SkImageFilter::CropRect leftSideCropRect(SkRect::MakeXYWH(0, 0, 32, 64)) ;
(...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after
1017 SkPictureRecorder recorder; 1017 SkPictureRecorder recorder;
1018 SkCanvas* recordingCanvas = recorder.beginRecording(1, 1, &factory, 0); 1018 SkCanvas* recordingCanvas = recorder.beginRecording(1, 1, &factory, 0);
1019 1019
1020 // Create an SkPicture which simply draws a green 1x1 rectangle. 1020 // Create an SkPicture which simply draws a green 1x1 rectangle.
1021 SkPaint greenPaint; 1021 SkPaint greenPaint;
1022 greenPaint.setColor(SK_ColorGREEN); 1022 greenPaint.setColor(SK_ColorGREEN);
1023 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPaint); 1023 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPaint);
1024 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); 1024 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture());
1025 1025
1026 // Wrap that SkPicture in an SkPictureImageFilter. 1026 // Wrap that SkPicture in an SkPictureImageFilter.
1027 SkAutoTUnref<SkImageFilter> imageFilter( 1027 sk_sp<SkImageFilter> imageFilter(SkPictureImageFilter::Make(picture));
1028 SkPictureImageFilter::Create(picture.get()));
1029 1028
1030 // Check that SkPictureImageFilter successfully serializes its contained 1029 // Check that SkPictureImageFilter successfully serializes its contained
1031 // SkPicture when not in cross-process mode. 1030 // SkPicture when not in cross-process mode.
1032 SkPaint paint; 1031 SkPaint paint;
1033 paint.setImageFilter(imageFilter.get()); 1032 paint.setImageFilter(imageFilter);
1034 SkPictureRecorder outerRecorder; 1033 SkPictureRecorder outerRecorder;
1035 SkCanvas* outerCanvas = outerRecorder.beginRecording(1, 1, &factory, 0); 1034 SkCanvas* outerCanvas = outerRecorder.beginRecording(1, 1, &factory, 0);
1036 SkPaint redPaintWithFilter; 1035 SkPaint redPaintWithFilter;
1037 redPaintWithFilter.setColor(SK_ColorRED); 1036 redPaintWithFilter.setColor(SK_ColorRED);
1038 redPaintWithFilter.setImageFilter(imageFilter.get()); 1037 redPaintWithFilter.setImageFilter(imageFilter);
1039 outerCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), redPaintWithFilte r); 1038 outerCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), redPaintWithFilte r);
1040 sk_sp<SkPicture> outerPicture(outerRecorder.finishRecordingAsPicture()); 1039 sk_sp<SkPicture> outerPicture(outerRecorder.finishRecordingAsPicture());
1041 1040
1042 SkBitmap bitmap; 1041 SkBitmap bitmap;
1043 bitmap.allocN32Pixels(1, 1); 1042 bitmap.allocN32Pixels(1, 1);
1044 SkCanvas canvas(bitmap); 1043 SkCanvas canvas(bitmap);
1045 1044
1046 // The result here should be green, since the filter replaces the primitive' s red interior. 1045 // The result here should be green, since the filter replaces the primitive' s red interior.
1047 canvas.clear(0x0); 1046 canvas.clear(0x0);
1048 canvas.drawPicture(outerPicture); 1047 canvas.drawPicture(outerPicture);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1084 1083
1085 // Create an SkPicture which simply draws a green 1x1 rectangle. 1084 // Create an SkPicture which simply draws a green 1x1 rectangle.
1086 SkPaint greenPaint; 1085 SkPaint greenPaint;
1087 greenPaint.setColor(SK_ColorGREEN); 1086 greenPaint.setColor(SK_ColorGREEN);
1088 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPain t); 1087 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPain t);
1089 picture = recorder.finishRecordingAsPicture(); 1088 picture = recorder.finishRecordingAsPicture();
1090 } 1089 }
1091 1090
1092 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 2)); 1091 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 2));
1093 1092
1094 SkAutoTUnref<SkImageFilter> imageFilter(SkPictureImageFilter::Create(picture .get())); 1093 sk_sp<SkImageFilter> imageFilter(SkPictureImageFilter::Make(picture));
1095 1094
1096 SkIPoint offset; 1095 SkIPoint offset;
1097 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul lptr); 1096 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul lptr);
1098 1097
1099 sk_sp<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg.get(), ctx , &offset)); 1098 sk_sp<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg.get(), ctx , &offset));
1100 REPORTER_ASSERT(reporter, !resultImage); 1099 REPORTER_ASSERT(reporter, !resultImage);
1101 } 1100 }
1102 1101
1103 DEF_TEST(ImageFilterClippedPictureImageFilter, reporter) { 1102 DEF_TEST(ImageFilterClippedPictureImageFilter, reporter) {
1104 run_raster_test(reporter, 2, test_clipped_picture_imagefilter); 1103 run_raster_test(reporter, 2, test_clipped_picture_imagefilter);
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 // filter, so that the inner filter produces the pixels that the outer 1371 // filter, so that the inner filter produces the pixels that the outer
1373 // filter requires as input. This matters if the outer filter moves pixels. 1372 // filter requires as input. This matters if the outer filter moves pixels.
1374 // Here, accounting for the outer offset is necessary so that the green 1373 // Here, accounting for the outer offset is necessary so that the green
1375 // pixels of the picture are not clipped. 1374 // pixels of the picture are not clipped.
1376 1375
1377 SkPictureRecorder recorder; 1376 SkPictureRecorder recorder;
1378 SkCanvas* recordingCanvas = recorder.beginRecording(SkRect::MakeWH(200, 100) ); 1377 SkCanvas* recordingCanvas = recorder.beginRecording(SkRect::MakeWH(200, 100) );
1379 recordingCanvas->clipRect(SkRect::MakeXYWH(100, 0, 100, 100)); 1378 recordingCanvas->clipRect(SkRect::MakeXYWH(100, 0, 100, 100));
1380 recordingCanvas->clear(SK_ColorGREEN); 1379 recordingCanvas->clear(SK_ColorGREEN);
1381 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture(); 1380 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
1382 sk_sp<SkImageFilter> pictureFilter( 1381 sk_sp<SkImageFilter> pictureFilter(SkPictureImageFilter::Make(picture));
1383 SkPictureImageFilter::Create(picture.get()));
1384 SkImageFilter::CropRect cropRect(SkRect::MakeWH(100, 100)); 1382 SkImageFilter::CropRect cropRect(SkRect::MakeWH(100, 100));
1385 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Create(-100, 0, nullp tr, &cropRect)); 1383 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Create(-100, 0, nullp tr, &cropRect));
1386 sk_sp<SkImageFilter> composedFilter( 1384 sk_sp<SkImageFilter> composedFilter(
1387 SkComposeImageFilter::Create(offsetFilter.get(), pictureFilter.get())); 1385 SkComposeImageFilter::Create(offsetFilter.get(), pictureFilter.get()));
1388 1386
1389 sk_sp<SkSpecialImage> sourceImage(create_empty_special_image(context, proxy, 100)); 1387 sk_sp<SkSpecialImage> sourceImage(create_empty_special_image(context, proxy, 100));
1390 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); 1388 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr );
1391 SkIPoint offset; 1389 SkIPoint offset;
1392 sk_sp<SkSpecialImage> result(composedFilter->filterImage(sourceImage.get(), ctx, &offset)); 1390 sk_sp<SkSpecialImage> result(composedFilter->filterImage(sourceImage.get(), ctx, &offset));
1393 REPORTER_ASSERT(reporter, offset.isZero()); 1391 REPORTER_ASSERT(reporter, offset.isZero());
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
1592 1590
1593 test_xfermode_cropped_input(&canvas, reporter); 1591 test_xfermode_cropped_input(&canvas, reporter);
1594 } 1592 }
1595 1593
1596 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { 1594 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) {
1597 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, 1595 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes,
1598 SkImageInfo::MakeN32Premul(100, 100 ))); 1596 SkImageInfo::MakeN32Premul(100, 100 )));
1599 test_large_blur_input(reporter, surface->getCanvas()); 1597 test_large_blur_input(reporter, surface->getCanvas());
1600 } 1598 }
1601 #endif 1599 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698