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 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 | 130 |
131 return surface->makeImageSnapshot(); | 131 return surface->makeImageSnapshot(); |
132 } | 132 } |
133 | 133 |
134 static SkImageFilter* make_scale(float amount, SkImageFilter* input = nullptr) { | 134 static SkImageFilter* make_scale(float amount, SkImageFilter* input = nullptr) { |
135 SkScalar s = amount; | 135 SkScalar s = amount; |
136 SkScalar matrix[20] = { s, 0, 0, 0, 0, | 136 SkScalar matrix[20] = { s, 0, 0, 0, 0, |
137 0, s, 0, 0, 0, | 137 0, s, 0, 0, 0, |
138 0, 0, s, 0, 0, | 138 0, 0, s, 0, 0, |
139 0, 0, 0, s, 0 }; | 139 0, 0, 0, s, 0 }; |
140 SkAutoTUnref<SkColorFilter> filter(SkColorMatrixFilter::Create(matrix)); | 140 auto filter(SkColorFilter::MakeMatrixFilterRowMajor255(matrix)); |
141 return SkColorFilterImageFilter::Create(filter, input); | 141 return SkColorFilterImageFilter::Create(filter.get(), input); |
142 } | 142 } |
143 | 143 |
144 static SkImageFilter* make_grayscale(SkImageFilter* input, const SkImageFilter::
CropRect* cropRect) { | 144 static SkImageFilter* make_grayscale(SkImageFilter* input, const SkImageFilter::
CropRect* cropRect) { |
145 SkScalar matrix[20]; | 145 SkScalar matrix[20]; |
146 memset(matrix, 0, 20 * sizeof(SkScalar)); | 146 memset(matrix, 0, 20 * sizeof(SkScalar)); |
147 matrix[0] = matrix[5] = matrix[10] = 0.2126f; | 147 matrix[0] = matrix[5] = matrix[10] = 0.2126f; |
148 matrix[1] = matrix[6] = matrix[11] = 0.7152f; | 148 matrix[1] = matrix[6] = matrix[11] = 0.7152f; |
149 matrix[2] = matrix[7] = matrix[12] = 0.0722f; | 149 matrix[2] = matrix[7] = matrix[12] = 0.0722f; |
150 matrix[18] = 1.0f; | 150 matrix[18] = 1.0f; |
151 SkAutoTUnref<SkColorFilter> filter(SkColorMatrixFilter::Create(matrix)); | 151 auto filter(SkColorFilter::MakeMatrixFilterRowMajor255(matrix)); |
152 return SkColorFilterImageFilter::Create(filter, input, cropRect); | 152 return SkColorFilterImageFilter::Create(filter.get(), input, cropRect); |
153 } | 153 } |
154 | 154 |
155 static SkImageFilter* make_blue(SkImageFilter* input, const SkImageFilter::CropR
ect* cropRect) { | 155 static SkImageFilter* make_blue(SkImageFilter* input, const SkImageFilter::CropR
ect* cropRect) { |
156 SkAutoTUnref<SkColorFilter> filter(SkColorFilter::CreateModeFilter(SK_ColorB
LUE, | 156 auto filter(SkColorFilter::MakeModeFilter(SK_ColorBLUE, SkXfermode::kSrcIn_M
ode)); |
157 SkXfermod
e::kSrcIn_Mode)); | 157 return SkColorFilterImageFilter::Create(filter.get(), input, cropRect); |
158 return SkColorFilterImageFilter::Create(filter, input, cropRect); | |
159 } | 158 } |
160 | 159 |
161 static sk_sp<SkSpecialSurface> create_empty_special_surface(GrContext* context, | 160 static sk_sp<SkSpecialSurface> create_empty_special_surface(GrContext* context, |
162 SkImageFilter::Proxy
* proxy, | 161 SkImageFilter::Proxy
* proxy, |
163 int widthHeight) { | 162 int widthHeight) { |
164 if (context) { | 163 if (context) { |
165 GrSurfaceDesc desc; | 164 GrSurfaceDesc desc; |
166 desc.fConfig = kSkia8888_GrPixelConfig; | 165 desc.fConfig = kSkia8888_GrPixelConfig; |
167 desc.fFlags = kRenderTarget_GrSurfaceFlag; | 166 desc.fFlags = kRenderTarget_GrSurfaceFlag; |
168 desc.fWidth = widthHeight; | 167 desc.fWidth = widthHeight; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 REPORTER_ASSERT(reporter, false == grayWithCrop->asColorFilter(nullptr))
; | 250 REPORTER_ASSERT(reporter, false == grayWithCrop->asColorFilter(nullptr))
; |
252 } | 251 } |
253 | 252 |
254 { | 253 { |
255 // Check that two non-commutative matrices are concatenated in | 254 // Check that two non-commutative matrices are concatenated in |
256 // the correct order. | 255 // the correct order. |
257 SkScalar blueToRedMatrix[20] = { 0 }; | 256 SkScalar blueToRedMatrix[20] = { 0 }; |
258 blueToRedMatrix[2] = blueToRedMatrix[18] = SK_Scalar1; | 257 blueToRedMatrix[2] = blueToRedMatrix[18] = SK_Scalar1; |
259 SkScalar redToGreenMatrix[20] = { 0 }; | 258 SkScalar redToGreenMatrix[20] = { 0 }; |
260 redToGreenMatrix[5] = redToGreenMatrix[18] = SK_Scalar1; | 259 redToGreenMatrix[5] = redToGreenMatrix[18] = SK_Scalar1; |
261 SkAutoTUnref<SkColorFilter> blueToRed(SkColorMatrixFilter::Create(blueTo
RedMatrix)); | 260 auto blueToRed(SkColorFilter::MakeMatrixFilterRowMajor255(blueToRedMatri
x)); |
262 SkAutoTUnref<SkImageFilter> filter1(SkColorFilterImageFilter::Create(blu
eToRed.get())); | 261 SkAutoTUnref<SkImageFilter> filter1(SkColorFilterImageFilter::Create(blu
eToRed.get())); |
263 SkAutoTUnref<SkColorFilter> redToGreen(SkColorMatrixFilter::Create(redTo
GreenMatrix)); | 262 auto redToGreen(SkColorFilter::MakeMatrixFilterRowMajor255(redToGreenMat
rix)); |
264 SkAutoTUnref<SkImageFilter> filter2(SkColorFilterImageFilter::Create(red
ToGreen.get(), filter1.get())); | 263 SkAutoTUnref<SkImageFilter> filter2(SkColorFilterImageFilter::Create(red
ToGreen.get(), filter1.get())); |
265 | 264 |
266 SkBitmap result; | 265 SkBitmap result; |
267 result.allocN32Pixels(kBitmapSize, kBitmapSize); | 266 result.allocN32Pixels(kBitmapSize, kBitmapSize); |
268 | 267 |
269 SkPaint paint; | 268 SkPaint paint; |
270 paint.setColor(SK_ColorBLUE); | 269 paint.setColor(SK_ColorBLUE); |
271 paint.setImageFilter(filter2.get()); | 270 paint.setImageFilter(filter2.get()); |
272 SkCanvas canvas(result); | 271 SkCanvas canvas(result); |
273 canvas.clear(0x0); | 272 canvas.clear(0x0); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 // Check that all filters offset to their absolute crop rect, | 312 // Check that all filters offset to their absolute crop rect, |
314 // unaffected by the input crop rect. | 313 // unaffected by the input crop rect. |
315 // Tests pass by not asserting. | 314 // Tests pass by not asserting. |
316 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100)
); | 315 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100)
); |
317 SkASSERT(srcImg); | 316 SkASSERT(srcImg); |
318 | 317 |
319 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80)); | 318 SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80)); |
320 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60)); | 319 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60)); |
321 SkAutoTUnref<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect)); | 320 SkAutoTUnref<SkImageFilter> input(make_grayscale(nullptr, &inputCropRect)); |
322 | 321 |
323 SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(SK_ColorRED,
SkXfermode::kSrcIn_Mode)); | 322 auto cf(SkColorFilter::MakeModeFilter(SK_ColorRED, SkXfermode::kSrcIn_Mode))
; |
324 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); | 323 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); |
325 SkScalar kernel[9] = { | 324 SkScalar kernel[9] = { |
326 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), | 325 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
327 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), | 326 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), |
328 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), | 327 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
329 }; | 328 }; |
330 SkISize kernelSize = SkISize::Make(3, 3); | 329 SkISize kernelSize = SkISize::Make(3, 3); |
331 SkScalar gain = SK_Scalar1, bias = 0; | 330 SkScalar gain = SK_Scalar1, bias = 0; |
332 | 331 |
333 SkImageFilter* filters[] = { | 332 SkImageFilter* filters[] = { |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 DEF_GPUTEST_FOR_NATIVE_CONTEXT(TestZeroBlurSigma_Gpu, reporter, context) { | 556 DEF_GPUTEST_FOR_NATIVE_CONTEXT(TestZeroBlurSigma_Gpu, reporter, context) { |
558 run_gpu_test(reporter, context, 100, test_zero_blur_sigma); | 557 run_gpu_test(reporter, context, 100, test_zero_blur_sigma); |
559 } | 558 } |
560 #endif | 559 #endif |
561 | 560 |
562 DEF_TEST(ImageFilterDrawTiled, reporter) { | 561 DEF_TEST(ImageFilterDrawTiled, reporter) { |
563 // Check that all filters when drawn tiled (with subsequent clip rects) exac
tly | 562 // Check that all filters when drawn tiled (with subsequent clip rects) exac
tly |
564 // match the same filters drawn with a single full-canvas bitmap draw. | 563 // match the same filters drawn with a single full-canvas bitmap draw. |
565 // Tests pass by not asserting. | 564 // Tests pass by not asserting. |
566 | 565 |
567 SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(SK_ColorRED,
SkXfermode::kSrcIn_Mode)); | 566 auto cf(SkColorFilter::MakeModeFilter(SK_ColorRED, SkXfermode::kSrcIn_Mode))
; |
568 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); | 567 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); |
569 SkScalar kernel[9] = { | 568 SkScalar kernel[9] = { |
570 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), | 569 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
571 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), | 570 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), |
572 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), | 571 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
573 }; | 572 }; |
574 const SkISize kernelSize = SkISize::Make(3, 3); | 573 const SkISize kernelSize = SkISize::Make(3, 3); |
575 const SkScalar gain = SK_Scalar1, bias = 0; | 574 const SkScalar gain = SK_Scalar1, bias = 0; |
576 const SkScalar five = SkIntToScalar(5); | 575 const SkScalar five = SkIntToScalar(5); |
577 | 576 |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
686 SkSafeUnref(filters[i].fFilter); | 685 SkSafeUnref(filters[i].fFilter); |
687 } | 686 } |
688 } | 687 } |
689 | 688 |
690 static void draw_saveLayer_picture(int width, int height, int tileSize, | 689 static void draw_saveLayer_picture(int width, int height, int tileSize, |
691 SkBBHFactory* factory, SkBitmap* result) { | 690 SkBBHFactory* factory, SkBitmap* result) { |
692 | 691 |
693 SkMatrix matrix; | 692 SkMatrix matrix; |
694 matrix.setTranslate(SkIntToScalar(50), 0); | 693 matrix.setTranslate(SkIntToScalar(50), 0); |
695 | 694 |
696 SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(SK_ColorWHITE
, SkXfermode::kSrc_Mode)); | 695 auto cf(SkColorFilter::MakeModeFilter(SK_ColorWHITE, SkXfermode::kSrc_Mode))
; |
697 SkAutoTUnref<SkImageFilter> cfif(SkColorFilterImageFilter::Create(cf.get()))
; | 696 SkAutoTUnref<SkImageFilter> cfif(SkColorFilterImageFilter::Create(cf.get()))
; |
698 SkAutoTUnref<SkImageFilter> imageFilter(SkImageFilter::CreateMatrixFilter(ma
trix, kNone_SkFilterQuality, cfif.get())); | 697 SkAutoTUnref<SkImageFilter> imageFilter(SkImageFilter::CreateMatrixFilter(ma
trix, kNone_SkFilterQuality, cfif.get())); |
699 | 698 |
700 SkPaint paint; | 699 SkPaint paint; |
701 paint.setImageFilter(imageFilter.get()); | 700 paint.setImageFilter(imageFilter.get()); |
702 SkPictureRecorder recorder; | 701 SkPictureRecorder recorder; |
703 SkRect bounds = SkRect::Make(SkIRect::MakeXYWH(0, 0, 50, 50)); | 702 SkRect bounds = SkRect::Make(SkIRect::MakeXYWH(0, 0, 50, 50)); |
704 SkCanvas* recordingCanvas = recorder.beginRecording(SkIntToScalar(width), | 703 SkCanvas* recordingCanvas = recorder.beginRecording(SkIntToScalar(width), |
705 SkIntToScalar(height), | 704 SkIntToScalar(height), |
706 factory, 0); | 705 factory, 0); |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1115 // Even when there's an empty saveLayer()/restore(), ensure that an image | 1114 // Even when there's an empty saveLayer()/restore(), ensure that an image |
1116 // filter or color filter which affects transparent black still draws. | 1115 // filter or color filter which affects transparent black still draws. |
1117 | 1116 |
1118 SkBitmap bitmap; | 1117 SkBitmap bitmap; |
1119 bitmap.allocN32Pixels(10, 10); | 1118 bitmap.allocN32Pixels(10, 10); |
1120 SkCanvas canvas(bitmap); | 1119 SkCanvas canvas(bitmap); |
1121 | 1120 |
1122 SkRTreeFactory factory; | 1121 SkRTreeFactory factory; |
1123 SkPictureRecorder recorder; | 1122 SkPictureRecorder recorder; |
1124 | 1123 |
1125 SkAutoTUnref<SkColorFilter> green( | 1124 auto green(SkColorFilter::MakeModeFilter(SK_ColorGREEN, SkXfermode::kSrc_Mod
e)); |
1126 SkColorFilter::CreateModeFilter(SK_ColorGREEN, SkXfermode::kSrc_Mode)); | |
1127 SkAutoTUnref<SkImageFilter> imageFilter( | 1125 SkAutoTUnref<SkImageFilter> imageFilter( |
1128 SkColorFilterImageFilter::Create(green.get())); | 1126 SkColorFilterImageFilter::Create(green.get())); |
1129 SkPaint imageFilterPaint; | 1127 SkPaint imageFilterPaint; |
1130 imageFilterPaint.setImageFilter(imageFilter.get()); | 1128 imageFilterPaint.setImageFilter(imageFilter.get()); |
1131 SkPaint colorFilterPaint; | 1129 SkPaint colorFilterPaint; |
1132 colorFilterPaint.setColorFilter(green.get()); | 1130 colorFilterPaint.setColorFilter(green); |
1133 | 1131 |
1134 SkRect bounds = SkRect::MakeWH(10, 10); | 1132 SkRect bounds = SkRect::MakeWH(10, 10); |
1135 | 1133 |
1136 SkCanvas* recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); | 1134 SkCanvas* recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); |
1137 recordingCanvas->saveLayer(&bounds, &imageFilterPaint); | 1135 recordingCanvas->saveLayer(&bounds, &imageFilterPaint); |
1138 recordingCanvas->restore(); | 1136 recordingCanvas->restore(); |
1139 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); | 1137 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); |
1140 | 1138 |
1141 canvas.clear(0); | 1139 canvas.clear(0); |
1142 canvas.drawPicture(picture); | 1140 canvas.drawPicture(picture); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1238 REPORTER_ASSERT(reporter, nullptr == conv.get()); | 1236 REPORTER_ASSERT(reporter, nullptr == conv.get()); |
1239 } | 1237 } |
1240 | 1238 |
1241 static void test_xfermode_cropped_input(SkCanvas* canvas, skiatest::Reporter* re
porter) { | 1239 static void test_xfermode_cropped_input(SkCanvas* canvas, skiatest::Reporter* re
porter) { |
1242 canvas->clear(0); | 1240 canvas->clear(0); |
1243 | 1241 |
1244 SkBitmap bitmap; | 1242 SkBitmap bitmap; |
1245 bitmap.allocN32Pixels(1, 1); | 1243 bitmap.allocN32Pixels(1, 1); |
1246 bitmap.eraseARGB(255, 255, 255, 255); | 1244 bitmap.eraseARGB(255, 255, 255, 255); |
1247 | 1245 |
1248 SkAutoTUnref<SkColorFilter> green( | 1246 auto green(SkColorFilter::MakeModeFilter(SK_ColorGREEN, SkXfermode::kSrcIn_M
ode)); |
1249 SkColorFilter::CreateModeFilter(SK_ColorGREEN, SkXfermode::kSrcIn_Mode))
; | |
1250 SkAutoTUnref<SkImageFilter> greenFilter(SkColorFilterImageFilter::Create(gre
en.get())); | 1247 SkAutoTUnref<SkImageFilter> greenFilter(SkColorFilterImageFilter::Create(gre
en.get())); |
1251 SkImageFilter::CropRect cropRect(SkRect::MakeEmpty()); | 1248 SkImageFilter::CropRect cropRect(SkRect::MakeEmpty()); |
1252 SkAutoTUnref<SkImageFilter> croppedOut( | 1249 SkAutoTUnref<SkImageFilter> croppedOut( |
1253 SkColorFilterImageFilter::Create(green.get(), nullptr, &cropRect)); | 1250 SkColorFilterImageFilter::Create(green.get(), nullptr, &cropRect)); |
1254 | 1251 |
1255 // Check that an xfermode image filter whose input has been cropped out stil
l draws the other | 1252 // Check that an xfermode image filter whose input has been cropped out stil
l draws the other |
1256 // input. Also check that drawing with both inputs cropped out doesn't cause
a GPU warning. | 1253 // input. Also check that drawing with both inputs cropped out doesn't cause
a GPU warning. |
1257 SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrcOver_Mode); | 1254 SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrcOver_Mode); |
1258 SkAutoTUnref<SkImageFilter> xfermodeNoFg( | 1255 SkAutoTUnref<SkImageFilter> xfermodeNoFg( |
1259 SkXfermodeImageFilter::Create(mode, greenFilter, croppedOut)); | 1256 SkXfermodeImageFilter::Create(mode, greenFilter, croppedOut)); |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1460 } | 1457 } |
1461 REPORTER_ASSERT(reporter, gray->canComputeFastBounds()); | 1458 REPORTER_ASSERT(reporter, gray->canComputeFastBounds()); |
1462 | 1459 |
1463 SkAutoTUnref<SkImageFilter> grayBlur(SkBlurImageFilter::Create(SK_Scalar1, S
K_Scalar1, gray.get())); | 1460 SkAutoTUnref<SkImageFilter> grayBlur(SkBlurImageFilter::Create(SK_Scalar1, S
K_Scalar1, gray.get())); |
1464 REPORTER_ASSERT(reporter, grayBlur->canComputeFastBounds()); | 1461 REPORTER_ASSERT(reporter, grayBlur->canComputeFastBounds()); |
1465 | 1462 |
1466 SkScalar greenMatrix[20] = { 0, 0, 0, 0, 0, | 1463 SkScalar greenMatrix[20] = { 0, 0, 0, 0, 0, |
1467 0, 0, 0, 0, 1, | 1464 0, 0, 0, 0, 1, |
1468 0, 0, 0, 0, 0, | 1465 0, 0, 0, 0, 0, |
1469 0, 0, 0, 0, 1 }; | 1466 0, 0, 0, 0, 1 }; |
1470 SkAutoTUnref<SkColorFilter> greenCF(SkColorMatrixFilter::Create(greenMatrix)
); | 1467 auto greenCF(SkColorFilter::MakeMatrixFilterRowMajor255(greenMatrix)); |
1471 SkAutoTUnref<SkImageFilter> green(SkColorFilterImageFilter::Create(greenCF))
; | 1468 SkAutoTUnref<SkImageFilter> green(SkColorFilterImageFilter::Create(greenCF.g
et())); |
1472 | 1469 |
1473 REPORTER_ASSERT(reporter, greenCF->affectsTransparentBlack()); | 1470 REPORTER_ASSERT(reporter, greenCF->affectsTransparentBlack()); |
1474 REPORTER_ASSERT(reporter, !green->canComputeFastBounds()); | 1471 REPORTER_ASSERT(reporter, !green->canComputeFastBounds()); |
1475 | 1472 |
1476 SkAutoTUnref<SkImageFilter> greenBlur(SkBlurImageFilter::Create(SK_Scalar1,
SK_Scalar1, green.get())); | 1473 SkAutoTUnref<SkImageFilter> greenBlur(SkBlurImageFilter::Create(SK_Scalar1,
SK_Scalar1, green.get())); |
1477 REPORTER_ASSERT(reporter, !greenBlur->canComputeFastBounds()); | 1474 REPORTER_ASSERT(reporter, !greenBlur->canComputeFastBounds()); |
1478 | 1475 |
1479 uint8_t allOne[256], identity[256]; | 1476 uint8_t allOne[256], identity[256]; |
1480 for (int i = 0; i < 256; ++i) { | 1477 for (int i = 0; i < 256; ++i) { |
1481 identity[i] = i; | 1478 identity[i] = i; |
1482 allOne[i] = 255; | 1479 allOne[i] = 255; |
1483 } | 1480 } |
1484 | 1481 |
1485 SkAutoTUnref<SkColorFilter> identityCF( | 1482 auto identityCF(SkTableColorFilter::MakeARGB(identity, identity, identity, a
llOne)); |
1486 SkTableColorFilter::CreateARGB(identity, identity, identity, allOne)); | |
1487 SkAutoTUnref<SkImageFilter> identityFilter(SkColorFilterImageFilter::Create(
identityCF.get())); | 1483 SkAutoTUnref<SkImageFilter> identityFilter(SkColorFilterImageFilter::Create(
identityCF.get())); |
1488 REPORTER_ASSERT(reporter, !identityCF->affectsTransparentBlack()); | 1484 REPORTER_ASSERT(reporter, !identityCF->affectsTransparentBlack()); |
1489 REPORTER_ASSERT(reporter, identityFilter->canComputeFastBounds()); | 1485 REPORTER_ASSERT(reporter, identityFilter->canComputeFastBounds()); |
1490 | 1486 |
1491 SkAutoTUnref<SkColorFilter> forceOpaqueCF( | 1487 auto forceOpaqueCF(SkTableColorFilter::MakeARGB(allOne, identity, identity,
identity)); |
1492 SkTableColorFilter::CreateARGB(allOne, identity, identity, identity)); | |
1493 SkAutoTUnref<SkImageFilter> forceOpaque(SkColorFilterImageFilter::Create(for
ceOpaqueCF.get())); | 1488 SkAutoTUnref<SkImageFilter> forceOpaque(SkColorFilterImageFilter::Create(for
ceOpaqueCF.get())); |
1494 REPORTER_ASSERT(reporter, forceOpaqueCF->affectsTransparentBlack()); | 1489 REPORTER_ASSERT(reporter, forceOpaqueCF->affectsTransparentBlack()); |
1495 REPORTER_ASSERT(reporter, !forceOpaque->canComputeFastBounds()); | 1490 REPORTER_ASSERT(reporter, !forceOpaque->canComputeFastBounds()); |
1496 } | 1491 } |
1497 | 1492 |
1498 // Verify that SkImageSource survives serialization | 1493 // Verify that SkImageSource survives serialization |
1499 DEF_TEST(ImageFilterImageSourceSerialization, reporter) { | 1494 DEF_TEST(ImageFilterImageSourceSerialization, reporter) { |
1500 SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(10, 10)); | 1495 SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(10, 10)); |
1501 surface->getCanvas()->clear(SK_ColorGREEN); | 1496 surface->getCanvas()->clear(SK_ColorGREEN); |
1502 sk_sp<SkImage> image(surface->makeImageSnapshot()); | 1497 sk_sp<SkImage> image(surface->makeImageSnapshot()); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1598 test_xfermode_cropped_input(&canvas, reporter); | 1593 test_xfermode_cropped_input(&canvas, reporter); |
1599 } | 1594 } |
1600 | 1595 |
1601 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { | 1596 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { |
1602 SkAutoTUnref<SkSurface> surface( | 1597 SkAutoTUnref<SkSurface> surface( |
1603 SkSurface::NewRenderTarget(context, SkBudgeted::kYes, | 1598 SkSurface::NewRenderTarget(context, SkBudgeted::kYes, |
1604 SkImageInfo::MakeN32Premul(100, 100))); | 1599 SkImageInfo::MakeN32Premul(100, 100))); |
1605 test_large_blur_input(reporter, surface->getCanvas()); | 1600 test_large_blur_input(reporter, surface->getCanvas()); |
1606 } | 1601 } |
1607 #endif | 1602 #endif |
OLD | NEW |