OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkAnnotationKeys.h" | 8 #include "SkAnnotationKeys.h" |
9 #include "Resources.h" | 9 #include "Resources.h" |
10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 } | 239 } |
240 | 240 |
241 static void TestBitmapSerialization(const SkBitmap& validBitmap, | 241 static void TestBitmapSerialization(const SkBitmap& validBitmap, |
242 const SkBitmap& invalidBitmap, | 242 const SkBitmap& invalidBitmap, |
243 bool shouldSucceed, | 243 bool shouldSucceed, |
244 skiatest::Reporter* reporter) { | 244 skiatest::Reporter* reporter) { |
245 sk_sp<SkImage> validImage(SkImage::MakeFromBitmap(validBitmap)); | 245 sk_sp<SkImage> validImage(SkImage::MakeFromBitmap(validBitmap)); |
246 SkAutoTUnref<SkImageFilter> validBitmapSource(SkImageSource::Create(validIma
ge.get())); | 246 SkAutoTUnref<SkImageFilter> validBitmapSource(SkImageSource::Create(validIma
ge.get())); |
247 sk_sp<SkImage> invalidImage(SkImage::MakeFromBitmap(invalidBitmap)); | 247 sk_sp<SkImage> invalidImage(SkImage::MakeFromBitmap(invalidBitmap)); |
248 SkAutoTUnref<SkImageFilter> invalidBitmapSource(SkImageSource::Create(invali
dImage.get())); | 248 SkAutoTUnref<SkImageFilter> invalidBitmapSource(SkImageSource::Create(invali
dImage.get())); |
249 SkAutoTUnref<SkXfermode> mode(SkXfermode::Create(SkXfermode::kSrcOver_Mode))
; | 249 sk_sp<SkImageFilter> xfermodeImageFilter( |
250 SkAutoTUnref<SkImageFilter> xfermodeImageFilter( | 250 SkXfermodeImageFilter::Make(SkXfermode::Make(SkXfermode::kSrcOver_Mode), |
251 SkXfermodeImageFilter::Create(mode, invalidBitmapSource, validBitmapSour
ce)); | 251 invalidBitmapSource, validBitmapSource, null
ptr)); |
252 | 252 |
253 SkAutoTUnref<SkImageFilter> deserializedFilter( | 253 SkAutoTUnref<SkImageFilter> deserializedFilter( |
254 TestFlattenableSerialization<SkImageFilter>( | 254 TestFlattenableSerialization<SkImageFilter>( |
255 xfermodeImageFilter, shouldSucceed, reporter)); | 255 xfermodeImageFilter.get(), shouldSucceed, reporter)); |
256 | 256 |
257 // Try to render a small bitmap using the invalid deserialized filter | 257 // Try to render a small bitmap using the invalid deserialized filter |
258 // to make sure we don't crash while trying to render it | 258 // to make sure we don't crash while trying to render it |
259 if (shouldSucceed) { | 259 if (shouldSucceed) { |
260 SkBitmap bitmap; | 260 SkBitmap bitmap; |
261 bitmap.allocN32Pixels(24, 24); | 261 bitmap.allocN32Pixels(24, 24); |
262 SkCanvas canvas(bitmap); | 262 SkCanvas canvas(bitmap); |
263 canvas.clear(0x00000000); | 263 canvas.clear(0x00000000); |
264 SkPaint paint; | 264 SkPaint paint; |
265 paint.setImageFilter(deserializedFilter); | 265 paint.setImageFilter(deserializedFilter); |
266 canvas.clipRect(SkRect::MakeXYWH(0, 0, SkIntToScalar(24), SkIntToScalar(
24))); | 266 canvas.clipRect(SkRect::MakeXYWH(0, 0, SkIntToScalar(24), SkIntToScalar(
24))); |
267 canvas.drawBitmap(bitmap, 0, 0, &paint); | 267 canvas.drawBitmap(bitmap, 0, 0, &paint); |
268 } | 268 } |
269 } | 269 } |
270 | 270 |
271 static void TestXfermodeSerialization(skiatest::Reporter* reporter) { | 271 static void TestXfermodeSerialization(skiatest::Reporter* reporter) { |
272 for (size_t i = 0; i <= SkXfermode::kLastMode; ++i) { | 272 for (size_t i = 0; i <= SkXfermode::kLastMode; ++i) { |
273 if (i == SkXfermode::kSrcOver_Mode) { | 273 if (i == SkXfermode::kSrcOver_Mode) { |
274 // skip SrcOver, as it is allowed to return nullptr from Create() | 274 // skip SrcOver, as it is allowed to return nullptr from Create() |
275 continue; | 275 continue; |
276 } | 276 } |
277 SkAutoTUnref<SkXfermode> mode(SkXfermode::Create(static_cast<SkXfermode:
:Mode>(i))); | 277 auto mode(SkXfermode::Make(static_cast<SkXfermode::Mode>(i))); |
278 REPORTER_ASSERT(reporter, mode.get()); | 278 REPORTER_ASSERT(reporter, mode); |
279 SkAutoTUnref<SkXfermode> copy( | 279 SkAutoTUnref<SkXfermode> copy( |
280 TestFlattenableSerialization<SkXfermode>(mode.get(), true, reporter)
); | 280 TestFlattenableSerialization<SkXfermode>(mode.get(), true, reporter)
); |
281 } | 281 } |
282 } | 282 } |
283 | 283 |
284 static void TestColorFilterSerialization(skiatest::Reporter* reporter) { | 284 static void TestColorFilterSerialization(skiatest::Reporter* reporter) { |
285 uint8_t table[256]; | 285 uint8_t table[256]; |
286 for (int i = 0; i < 256; ++i) { | 286 for (int i = 0; i < 256; ++i) { |
287 table[i] = (i * 41) % 256; | 287 table[i] = (i * 41) % 256; |
288 } | 288 } |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 { r1, SkAnnotationKeys::Define_Named_Dest_Key(), d1 }, | 620 { r1, SkAnnotationKeys::Define_Named_Dest_Key(), d1 }, |
621 { r2, SkAnnotationKeys::Link_Named_Dest_Key(), d2 }, | 621 { r2, SkAnnotationKeys::Link_Named_Dest_Key(), d2 }, |
622 }; | 622 }; |
623 | 623 |
624 sk_sp<SkPicture> pict0(recorder.finishRecordingAsPicture()); | 624 sk_sp<SkPicture> pict0(recorder.finishRecordingAsPicture()); |
625 sk_sp<SkPicture> pict1(copy_picture_via_serialization(pict0.get())); | 625 sk_sp<SkPicture> pict1(copy_picture_via_serialization(pict0.get())); |
626 | 626 |
627 TestAnnotationCanvas canvas(reporter, recs, SK_ARRAY_COUNT(recs)); | 627 TestAnnotationCanvas canvas(reporter, recs, SK_ARRAY_COUNT(recs)); |
628 canvas.drawPicture(pict1); | 628 canvas.drawPicture(pict1); |
629 } | 629 } |
OLD | NEW |