| 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 571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 matrix.setTranslate(SK_Scalar1, SK_Scalar1); | 582 matrix.setTranslate(SK_Scalar1, SK_Scalar1); |
| 583 matrix.postRotate(SkIntToScalar(45), SK_Scalar1, SK_Scalar1); | 583 matrix.postRotate(SkIntToScalar(45), SK_Scalar1, SK_Scalar1); |
| 584 | 584 |
| 585 SkRTreeFactory factory; | 585 SkRTreeFactory factory; |
| 586 SkPictureRecorder recorder; | 586 SkPictureRecorder recorder; |
| 587 SkCanvas* recordingCanvas = recorder.beginRecording(64, 64, &factory, 0); | 587 SkCanvas* recordingCanvas = recorder.beginRecording(64, 64, &factory, 0); |
| 588 | 588 |
| 589 SkPaint greenPaint; | 589 SkPaint greenPaint; |
| 590 greenPaint.setColor(SK_ColorGREEN); | 590 greenPaint.setColor(SK_ColorGREEN); |
| 591 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeXYWH(10, 10, 30, 20)), g
reenPaint); | 591 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeXYWH(10, 10, 30, 20)), g
reenPaint); |
| 592 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); | 592 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); |
| 593 SkAutoTUnref<SkImageFilter> pictureFilter(SkPictureImageFilter::Create(pictu
re.get())); | 593 SkAutoTUnref<SkImageFilter> pictureFilter(SkPictureImageFilter::Create(pictu
re.get())); |
| 594 SkAutoTUnref<SkShader> shader(SkPerlinNoiseShader::CreateTurbulence(SK_Scala
r1, SK_Scalar1, 1, 0)); | 594 SkAutoTUnref<SkShader> shader(SkPerlinNoiseShader::CreateTurbulence(SK_Scala
r1, SK_Scalar1, 1, 0)); |
| 595 SkPaint noisePaint; | 595 SkPaint noisePaint; |
| 596 noisePaint.setShader(shader); | 596 noisePaint.setShader(shader); |
| 597 | 597 |
| 598 SkAutoTUnref<SkImageFilter> paintFilter(SkPaintImageFilter::Create(noisePain
t)); | 598 SkAutoTUnref<SkImageFilter> paintFilter(SkPaintImageFilter::Create(noisePain
t)); |
| 599 | 599 |
| 600 SkImageFilter::CropRect leftSideCropRect(SkRect::MakeXYWH(0, 0, 32, 64)); | 600 SkImageFilter::CropRect leftSideCropRect(SkRect::MakeXYWH(0, 0, 32, 64)); |
| 601 SkAutoTUnref<SkImageFilter> paintFilterLeft(SkPaintImageFilter::Create(green
Paint, &leftSideCropRect)); | 601 SkAutoTUnref<SkImageFilter> paintFilterLeft(SkPaintImageFilter::Create(green
Paint, &leftSideCropRect)); |
| 602 SkImageFilter::CropRect rightSideCropRect(SkRect::MakeXYWH(32, 0, 32, 64)); | 602 SkImageFilter::CropRect rightSideCropRect(SkRect::MakeXYWH(32, 0, 32, 64)); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 699 SkPaint paint; | 699 SkPaint paint; |
| 700 paint.setImageFilter(imageFilter.get()); | 700 paint.setImageFilter(imageFilter.get()); |
| 701 SkPictureRecorder recorder; | 701 SkPictureRecorder recorder; |
| 702 SkRect bounds = SkRect::Make(SkIRect::MakeXYWH(0, 0, 50, 50)); | 702 SkRect bounds = SkRect::Make(SkIRect::MakeXYWH(0, 0, 50, 50)); |
| 703 SkCanvas* recordingCanvas = recorder.beginRecording(SkIntToScalar(width), | 703 SkCanvas* recordingCanvas = recorder.beginRecording(SkIntToScalar(width), |
| 704 SkIntToScalar(height), | 704 SkIntToScalar(height), |
| 705 factory, 0); | 705 factory, 0); |
| 706 recordingCanvas->translate(-55, 0); | 706 recordingCanvas->translate(-55, 0); |
| 707 recordingCanvas->saveLayer(&bounds, &paint); | 707 recordingCanvas->saveLayer(&bounds, &paint); |
| 708 recordingCanvas->restore(); | 708 recordingCanvas->restore(); |
| 709 SkAutoTUnref<SkPicture> picture1(recorder.endRecording()); | 709 sk_sp<SkPicture> picture1(recorder.finishRecordingAsPicture()); |
| 710 | 710 |
| 711 result->allocN32Pixels(width, height); | 711 result->allocN32Pixels(width, height); |
| 712 SkCanvas canvas(*result); | 712 SkCanvas canvas(*result); |
| 713 canvas.clear(0); | 713 canvas.clear(0); |
| 714 canvas.clipRect(SkRect::Make(SkIRect::MakeWH(tileSize, tileSize))); | 714 canvas.clipRect(SkRect::Make(SkIRect::MakeWH(tileSize, tileSize))); |
| 715 canvas.drawPicture(picture1.get()); | 715 canvas.drawPicture(picture1.get()); |
| 716 } | 716 } |
| 717 | 717 |
| 718 DEF_TEST(ImageFilterDrawMatrixBBH, reporter) { | 718 DEF_TEST(ImageFilterDrawMatrixBBH, reporter) { |
| 719 // Check that matrix filter when drawn tiled with BBH exactly | 719 // Check that matrix filter when drawn tiled with BBH exactly |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 870 SkPictureRecorder recorder1, recorder2; | 870 SkPictureRecorder recorder1, recorder2; |
| 871 // The only difference between these two pictures is that one has RTree acel
eration. | 871 // The only difference between these two pictures is that one has RTree acel
eration. |
| 872 SkCanvas* recordingCanvas1 = recorder1.beginRecording(SkIntToScalar(width), | 872 SkCanvas* recordingCanvas1 = recorder1.beginRecording(SkIntToScalar(width), |
| 873 SkIntToScalar(height), | 873 SkIntToScalar(height), |
| 874 nullptr, 0); | 874 nullptr, 0); |
| 875 SkCanvas* recordingCanvas2 = recorder2.beginRecording(SkIntToScalar(width), | 875 SkCanvas* recordingCanvas2 = recorder2.beginRecording(SkIntToScalar(width), |
| 876 SkIntToScalar(height), | 876 SkIntToScalar(height), |
| 877 &factory, 0); | 877 &factory, 0); |
| 878 draw_blurred_rect(recordingCanvas1); | 878 draw_blurred_rect(recordingCanvas1); |
| 879 draw_blurred_rect(recordingCanvas2); | 879 draw_blurred_rect(recordingCanvas2); |
| 880 SkAutoTUnref<SkPicture> picture1(recorder1.endRecording()); | 880 sk_sp<SkPicture> picture1(recorder1.finishRecordingAsPicture()); |
| 881 SkAutoTUnref<SkPicture> picture2(recorder2.endRecording()); | 881 sk_sp<SkPicture> picture2(recorder2.finishRecordingAsPicture()); |
| 882 for (int y = 0; y < height; y += tileSize) { | 882 for (int y = 0; y < height; y += tileSize) { |
| 883 for (int x = 0; x < width; x += tileSize) { | 883 for (int x = 0; x < width; x += tileSize) { |
| 884 SkRect tileRect = SkRect::Make(SkIRect::MakeXYWH(x, y, tileSize, til
eSize)); | 884 SkRect tileRect = SkRect::Make(SkIRect::MakeXYWH(x, y, tileSize, til
eSize)); |
| 885 draw_picture_clipped(&canvas1, tileRect, picture1); | 885 draw_picture_clipped(&canvas1, tileRect, picture1.get()); |
| 886 draw_picture_clipped(&canvas2, tileRect, picture2); | 886 draw_picture_clipped(&canvas2, tileRect, picture2.get()); |
| 887 } | 887 } |
| 888 } | 888 } |
| 889 for (int y = 0; y < height; y++) { | 889 for (int y = 0; y < height; y++) { |
| 890 int diffs = memcmp(result1.getAddr32(0, y), result2.getAddr32(0, y), res
ult1.rowBytes()); | 890 int diffs = memcmp(result1.getAddr32(0, y), result2.getAddr32(0, y), res
ult1.rowBytes()); |
| 891 REPORTER_ASSERT(reporter, !diffs); | 891 REPORTER_ASSERT(reporter, !diffs); |
| 892 if (diffs) { | 892 if (diffs) { |
| 893 break; | 893 break; |
| 894 } | 894 } |
| 895 } | 895 } |
| 896 } | 896 } |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 980 new MatrixTestImageFilter(reporter, expectedMatrix)); | 980 new MatrixTestImageFilter(reporter, expectedMatrix)); |
| 981 paint.setImageFilter(imageFilter.get()); | 981 paint.setImageFilter(imageFilter.get()); |
| 982 recordingCanvas->saveLayer(nullptr, &paint); | 982 recordingCanvas->saveLayer(nullptr, &paint); |
| 983 SkPaint solidPaint; | 983 SkPaint solidPaint; |
| 984 solidPaint.setColor(0xFFFFFFFF); | 984 solidPaint.setColor(0xFFFFFFFF); |
| 985 recordingCanvas->save(); | 985 recordingCanvas->save(); |
| 986 recordingCanvas->scale(SkIntToScalar(10), SkIntToScalar(10)); | 986 recordingCanvas->scale(SkIntToScalar(10), SkIntToScalar(10)); |
| 987 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(100, 100)), solidPain
t); | 987 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(100, 100)), solidPain
t); |
| 988 recordingCanvas->restore(); // scale | 988 recordingCanvas->restore(); // scale |
| 989 recordingCanvas->restore(); // saveLayer | 989 recordingCanvas->restore(); // saveLayer |
| 990 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); | |
| 991 | 990 |
| 992 canvas.drawPicture(picture); | 991 canvas.drawPicture(recorder.finishRecordingAsPicture()); |
| 993 } | 992 } |
| 994 | 993 |
| 995 DEF_TEST(ImageFilterCrossProcessPictureImageFilter, reporter) { | 994 DEF_TEST(ImageFilterCrossProcessPictureImageFilter, reporter) { |
| 996 SkRTreeFactory factory; | 995 SkRTreeFactory factory; |
| 997 SkPictureRecorder recorder; | 996 SkPictureRecorder recorder; |
| 998 SkCanvas* recordingCanvas = recorder.beginRecording(1, 1, &factory, 0); | 997 SkCanvas* recordingCanvas = recorder.beginRecording(1, 1, &factory, 0); |
| 999 | 998 |
| 1000 // Create an SkPicture which simply draws a green 1x1 rectangle. | 999 // Create an SkPicture which simply draws a green 1x1 rectangle. |
| 1001 SkPaint greenPaint; | 1000 SkPaint greenPaint; |
| 1002 greenPaint.setColor(SK_ColorGREEN); | 1001 greenPaint.setColor(SK_ColorGREEN); |
| 1003 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPaint); | 1002 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPaint); |
| 1004 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); | 1003 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); |
| 1005 | 1004 |
| 1006 // Wrap that SkPicture in an SkPictureImageFilter. | 1005 // Wrap that SkPicture in an SkPictureImageFilter. |
| 1007 SkAutoTUnref<SkImageFilter> imageFilter( | 1006 SkAutoTUnref<SkImageFilter> imageFilter( |
| 1008 SkPictureImageFilter::Create(picture.get())); | 1007 SkPictureImageFilter::Create(picture.get())); |
| 1009 | 1008 |
| 1010 // Check that SkPictureImageFilter successfully serializes its contained | 1009 // Check that SkPictureImageFilter successfully serializes its contained |
| 1011 // SkPicture when not in cross-process mode. | 1010 // SkPicture when not in cross-process mode. |
| 1012 SkPaint paint; | 1011 SkPaint paint; |
| 1013 paint.setImageFilter(imageFilter.get()); | 1012 paint.setImageFilter(imageFilter.get()); |
| 1014 SkPictureRecorder outerRecorder; | 1013 SkPictureRecorder outerRecorder; |
| 1015 SkCanvas* outerCanvas = outerRecorder.beginRecording(1, 1, &factory, 0); | 1014 SkCanvas* outerCanvas = outerRecorder.beginRecording(1, 1, &factory, 0); |
| 1016 SkPaint redPaintWithFilter; | 1015 SkPaint redPaintWithFilter; |
| 1017 redPaintWithFilter.setColor(SK_ColorRED); | 1016 redPaintWithFilter.setColor(SK_ColorRED); |
| 1018 redPaintWithFilter.setImageFilter(imageFilter.get()); | 1017 redPaintWithFilter.setImageFilter(imageFilter.get()); |
| 1019 outerCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), redPaintWithFilte
r); | 1018 outerCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), redPaintWithFilte
r); |
| 1020 SkAutoTUnref<SkPicture> outerPicture(outerRecorder.endRecording()); | 1019 sk_sp<SkPicture> outerPicture(outerRecorder.finishRecordingAsPicture()); |
| 1021 | 1020 |
| 1022 SkBitmap bitmap; | 1021 SkBitmap bitmap; |
| 1023 bitmap.allocN32Pixels(1, 1); | 1022 bitmap.allocN32Pixels(1, 1); |
| 1024 SkCanvas canvas(bitmap); | 1023 SkCanvas canvas(bitmap); |
| 1025 | 1024 |
| 1026 // The result here should be green, since the filter replaces the primitive'
s red interior. | 1025 // The result here should be green, since the filter replaces the primitive'
s red interior. |
| 1027 canvas.clear(0x0); | 1026 canvas.clear(0x0); |
| 1028 canvas.drawPicture(outerPicture); | 1027 canvas.drawPicture(outerPicture); |
| 1029 uint32_t pixel = *bitmap.getAddr32(0, 0); | 1028 uint32_t pixel = *bitmap.getAddr32(0, 0); |
| 1030 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); | 1029 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); |
| 1031 | 1030 |
| 1032 // Check that, for now, SkPictureImageFilter does not serialize or | 1031 // Check that, for now, SkPictureImageFilter does not serialize or |
| 1033 // deserialize its contained picture when the filter is serialized | 1032 // deserialize its contained picture when the filter is serialized |
| 1034 // cross-process. Do this by "laundering" it through SkValidatingReadBuffer. | 1033 // cross-process. Do this by "laundering" it through SkValidatingReadBuffer. |
| 1035 SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(imageFilter.get()
)); | 1034 SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(imageFilter.get()
)); |
| 1036 SkAutoTUnref<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable( | 1035 SkAutoTUnref<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable( |
| 1037 data->data(), data->size(), SkImageFilter::GetFlattenableType())); | 1036 data->data(), data->size(), SkImageFilter::GetFlattenableType())); |
| 1038 SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.g
et()); | 1037 SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.g
et()); |
| 1039 | 1038 |
| 1040 redPaintWithFilter.setImageFilter(unflattenedFilter); | 1039 redPaintWithFilter.setImageFilter(unflattenedFilter); |
| 1041 SkPictureRecorder crossProcessRecorder; | 1040 SkPictureRecorder crossProcessRecorder; |
| 1042 SkCanvas* crossProcessCanvas = crossProcessRecorder.beginRecording(1, 1, &fa
ctory, 0); | 1041 SkCanvas* crossProcessCanvas = crossProcessRecorder.beginRecording(1, 1, &fa
ctory, 0); |
| 1043 crossProcessCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), redPaintWi
thFilter); | 1042 crossProcessCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), redPaintWi
thFilter); |
| 1044 SkAutoTUnref<SkPicture> crossProcessPicture(crossProcessRecorder.endRecordin
g()); | 1043 sk_sp<SkPicture> crossProcessPicture(crossProcessRecorder.finishRecordingAsP
icture()); |
| 1045 | 1044 |
| 1046 canvas.clear(0x0); | 1045 canvas.clear(0x0); |
| 1047 canvas.drawPicture(crossProcessPicture); | 1046 canvas.drawPicture(crossProcessPicture); |
| 1048 pixel = *bitmap.getAddr32(0, 0); | 1047 pixel = *bitmap.getAddr32(0, 0); |
| 1049 // If the security precautions are enabled, the result here should not be gr
een, since the | 1048 // If the security precautions are enabled, the result here should not be gr
een, since the |
| 1050 // filter draws nothing. | 1049 // filter draws nothing. |
| 1051 REPORTER_ASSERT(reporter, SkPicture::PictureIOSecurityPrecautionsEnabled() | 1050 REPORTER_ASSERT(reporter, SkPicture::PictureIOSecurityPrecautionsEnabled() |
| 1052 ? pixel != SK_ColorGREEN : pixel == SK_ColorGREEN); | 1051 ? pixel != SK_ColorGREEN : pixel == SK_ColorGREEN); |
| 1053 } | 1052 } |
| 1054 | 1053 |
| 1055 static void test_clipped_picture_imagefilter(SkImageFilter::Proxy* proxy, | 1054 static void test_clipped_picture_imagefilter(SkImageFilter::Proxy* proxy, |
| 1056 skiatest::Reporter* reporter, | 1055 skiatest::Reporter* reporter, |
| 1057 GrContext* context) { | 1056 GrContext* context) { |
| 1058 SkAutoTUnref<SkPicture> picture; | 1057 sk_sp<SkPicture> picture; |
| 1059 | 1058 |
| 1060 { | 1059 { |
| 1061 SkRTreeFactory factory; | 1060 SkRTreeFactory factory; |
| 1062 SkPictureRecorder recorder; | 1061 SkPictureRecorder recorder; |
| 1063 SkCanvas* recordingCanvas = recorder.beginRecording(1, 1, &factory, 0); | 1062 SkCanvas* recordingCanvas = recorder.beginRecording(1, 1, &factory, 0); |
| 1064 | 1063 |
| 1065 // Create an SkPicture which simply draws a green 1x1 rectangle. | 1064 // Create an SkPicture which simply draws a green 1x1 rectangle. |
| 1066 SkPaint greenPaint; | 1065 SkPaint greenPaint; |
| 1067 greenPaint.setColor(SK_ColorGREEN); | 1066 greenPaint.setColor(SK_ColorGREEN); |
| 1068 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPain
t); | 1067 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), greenPain
t); |
| 1069 picture.reset(recorder.endRecording()); | 1068 picture = recorder.finishRecordingAsPicture(); |
| 1070 } | 1069 } |
| 1071 | 1070 |
| 1072 SkAutoTUnref<SkSpecialImage> srcImg(create_empty_special_image(context, prox
y, 2)); | 1071 SkAutoTUnref<SkSpecialImage> srcImg(create_empty_special_image(context, prox
y, 2)); |
| 1073 | 1072 |
| 1074 SkAutoTUnref<SkImageFilter> imageFilter(SkPictureImageFilter::Create(picture
.get())); | 1073 SkAutoTUnref<SkImageFilter> imageFilter(SkPictureImageFilter::Create(picture
.get())); |
| 1075 | 1074 |
| 1076 SkIPoint offset; | 1075 SkIPoint offset; |
| 1077 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul
lptr); | 1076 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(1, 1, 1, 1), nul
lptr); |
| 1078 | 1077 |
| 1079 SkAutoTUnref<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg, ct
x, &offset)); | 1078 SkAutoTUnref<SkSpecialImage> resultImage(imageFilter->filterImage(srcImg, ct
x, &offset)); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1108 SkPaint imageFilterPaint; | 1107 SkPaint imageFilterPaint; |
| 1109 imageFilterPaint.setImageFilter(imageFilter.get()); | 1108 imageFilterPaint.setImageFilter(imageFilter.get()); |
| 1110 SkPaint colorFilterPaint; | 1109 SkPaint colorFilterPaint; |
| 1111 colorFilterPaint.setColorFilter(green.get()); | 1110 colorFilterPaint.setColorFilter(green.get()); |
| 1112 | 1111 |
| 1113 SkRect bounds = SkRect::MakeWH(10, 10); | 1112 SkRect bounds = SkRect::MakeWH(10, 10); |
| 1114 | 1113 |
| 1115 SkCanvas* recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); | 1114 SkCanvas* recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); |
| 1116 recordingCanvas->saveLayer(&bounds, &imageFilterPaint); | 1115 recordingCanvas->saveLayer(&bounds, &imageFilterPaint); |
| 1117 recordingCanvas->restore(); | 1116 recordingCanvas->restore(); |
| 1118 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); | 1117 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); |
| 1119 | 1118 |
| 1120 canvas.clear(0); | 1119 canvas.clear(0); |
| 1121 canvas.drawPicture(picture); | 1120 canvas.drawPicture(picture); |
| 1122 uint32_t pixel = *bitmap.getAddr32(0, 0); | 1121 uint32_t pixel = *bitmap.getAddr32(0, 0); |
| 1123 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); | 1122 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); |
| 1124 | 1123 |
| 1125 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); | 1124 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); |
| 1126 recordingCanvas->saveLayer(nullptr, &imageFilterPaint); | 1125 recordingCanvas->saveLayer(nullptr, &imageFilterPaint); |
| 1127 recordingCanvas->restore(); | 1126 recordingCanvas->restore(); |
| 1128 SkAutoTUnref<SkPicture> picture2(recorder.endRecording()); | 1127 sk_sp<SkPicture> picture2(recorder.finishRecordingAsPicture()); |
| 1129 | 1128 |
| 1130 canvas.clear(0); | 1129 canvas.clear(0); |
| 1131 canvas.drawPicture(picture2); | 1130 canvas.drawPicture(picture2); |
| 1132 pixel = *bitmap.getAddr32(0, 0); | 1131 pixel = *bitmap.getAddr32(0, 0); |
| 1133 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); | 1132 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); |
| 1134 | 1133 |
| 1135 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); | 1134 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); |
| 1136 recordingCanvas->saveLayer(&bounds, &colorFilterPaint); | 1135 recordingCanvas->saveLayer(&bounds, &colorFilterPaint); |
| 1137 recordingCanvas->restore(); | 1136 recordingCanvas->restore(); |
| 1138 SkAutoTUnref<SkPicture> picture3(recorder.endRecording()); | 1137 sk_sp<SkPicture> picture3(recorder.finishRecordingAsPicture()); |
| 1139 | 1138 |
| 1140 canvas.clear(0); | 1139 canvas.clear(0); |
| 1141 canvas.drawPicture(picture3); | 1140 canvas.drawPicture(picture3); |
| 1142 pixel = *bitmap.getAddr32(0, 0); | 1141 pixel = *bitmap.getAddr32(0, 0); |
| 1143 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); | 1142 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); |
| 1144 } | 1143 } |
| 1145 | 1144 |
| 1146 static void test_huge_blur(SkCanvas* canvas, skiatest::Reporter* reporter) { | 1145 static void test_huge_blur(SkCanvas* canvas, skiatest::Reporter* reporter) { |
| 1147 SkBitmap bitmap; | 1146 SkBitmap bitmap; |
| 1148 bitmap.allocN32Pixels(100, 100); | 1147 bitmap.allocN32Pixels(100, 100); |
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1532 test_xfermode_cropped_input(&canvas, reporter); | 1531 test_xfermode_cropped_input(&canvas, reporter); |
| 1533 } | 1532 } |
| 1534 | 1533 |
| 1535 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { | 1534 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { |
| 1536 SkAutoTUnref<SkSurface> surface( | 1535 SkAutoTUnref<SkSurface> surface( |
| 1537 SkSurface::NewRenderTarget(context, SkBudgeted::kYes, | 1536 SkSurface::NewRenderTarget(context, SkBudgeted::kYes, |
| 1538 SkImageInfo::MakeN32Premul(100, 100))); | 1537 SkImageInfo::MakeN32Premul(100, 100))); |
| 1539 test_large_blur_input(reporter, surface->getCanvas()); | 1538 test_large_blur_input(reporter, surface->getCanvas()); |
| 1540 } | 1539 } |
| 1541 #endif | 1540 #endif |
| OLD | NEW |