| 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 |