OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |