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 "SkBitmap.h" | 8 #include "SkBitmap.h" |
9 #include "SkBitmapDevice.h" | 9 #include "SkBitmapDevice.h" |
10 #include "SkBlurImageFilter.h" | 10 #include "SkBlurImageFilter.h" |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 SkScalar kernel[9] = { | 111 SkScalar kernel[9] = { |
112 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), | 112 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
113 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), | 113 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), |
114 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), | 114 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
115 }; | 115 }; |
116 const SkISize kernelSize = SkISize::Make(3, 3); | 116 const SkISize kernelSize = SkISize::Make(3, 3); |
117 const SkScalar gain = SK_Scalar1, bias = 0; | 117 const SkScalar gain = SK_Scalar1, bias = 0; |
118 const SkScalar five = SkIntToScalar(5); | 118 const SkScalar five = SkIntToScalar(5); |
119 | 119 |
120 sk_sp<SkImage> gradientImage(SkImage::MakeFromBitmap(make_gradient_circl
e(64, 64))); | 120 sk_sp<SkImage> gradientImage(SkImage::MakeFromBitmap(make_gradient_circl
e(64, 64))); |
121 SkAutoTUnref<SkImageFilter> gradientSource(SkImageSource::Create(gradien
tImage.get())); | 121 sk_sp<SkImageFilter> gradientSource(SkImageSource::Make(std::move(gradie
ntImage))); |
122 sk_sp<SkImageFilter> blur(SkBlurImageFilter::Create(five, five, input)); | 122 sk_sp<SkImageFilter> blur(SkBlurImageFilter::Create(five, five, input)); |
123 SkMatrix matrix; | 123 SkMatrix matrix; |
124 | 124 |
125 matrix.setTranslate(SK_Scalar1, SK_Scalar1); | 125 matrix.setTranslate(SK_Scalar1, SK_Scalar1); |
126 matrix.postRotate(SkIntToScalar(45), SK_Scalar1, SK_Scalar1); | 126 matrix.postRotate(SkIntToScalar(45), SK_Scalar1, SK_Scalar1); |
127 | 127 |
128 SkRTreeFactory factory; | 128 SkRTreeFactory factory; |
129 SkPictureRecorder recorder; | 129 SkPictureRecorder recorder; |
130 SkCanvas* recordingCanvas = recorder.beginRecording(64, 64, &factory, 0)
; | 130 SkCanvas* recordingCanvas = recorder.beginRecording(64, 64, &factory, 0)
; |
131 | 131 |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 | 423 |
424 { | 424 { |
425 // This tests for : | 425 // This tests for : |
426 // 1 ) location at (0,0,1) | 426 // 1 ) location at (0,0,1) |
427 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); | 427 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); |
428 // 2 ) location and target at same value | 428 // 2 ) location and target at same value |
429 SkPoint3 target = SkPoint3::Make(location.fX, location.fY, location.
fZ); | 429 SkPoint3 target = SkPoint3::Make(location.fX, location.fY, location.
fZ); |
430 // 3 ) large negative specular exponent value | 430 // 3 ) large negative specular exponent value |
431 SkScalar specularExponent = -1000; | 431 SkScalar specularExponent = -1000; |
432 | 432 |
433 SkAutoTUnref<SkImageFilter> bmSrc(SkImageSource::Create(image.get())
); | 433 sk_sp<SkImageFilter> bmSrc(SkImageSource::Make(std::move(image))); |
434 SkPaint paint; | 434 SkPaint paint; |
435 paint.setImageFilter(SkLightingImageFilter::CreateSpotLitSpecular( | 435 paint.setImageFilter(SkLightingImageFilter::CreateSpotLitSpecular( |
436 location, target, specularExponent, 180, | 436 location, target, specularExponent, 180, |
437 0xFFFFFFFF, SK_Scalar1, SK_Scalar1, SK_Scalar1, | 437 0xFFFFFFFF, SK_Scalar1, SK_Scalar1, SK_Scalar1, |
438 bmSrc))->unref(); | 438 bmSrc.get()))->unref(); |
439 SkCanvas canvas(result); | 439 SkCanvas canvas(result); |
440 SkRect r = SkRect::MakeWH(SkIntToScalar(kBitmapSize), | 440 SkRect r = SkRect::MakeWH(SkIntToScalar(kBitmapSize), |
441 SkIntToScalar(kBitmapSize)); | 441 SkIntToScalar(kBitmapSize)); |
442 canvas.drawRect(r, paint); | 442 canvas.drawRect(r, paint); |
443 } | 443 } |
444 } | 444 } |
445 } | 445 } |
446 | 446 |
447 static void test_crop_rects(SkImageFilter::Proxy* proxy, | 447 static void test_crop_rects(SkImageFilter::Proxy* proxy, |
448 skiatest::Reporter* reporter, | 448 skiatest::Reporter* reporter, |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
822 } | 822 } |
823 } | 823 } |
824 | 824 |
825 static void test_imagefilter_merge_result_size(SkImageFilter::Proxy* proxy, | 825 static void test_imagefilter_merge_result_size(SkImageFilter::Proxy* proxy, |
826 skiatest::Reporter* reporter, | 826 skiatest::Reporter* reporter, |
827 GrContext* context) { | 827 GrContext* context) { |
828 SkBitmap greenBM; | 828 SkBitmap greenBM; |
829 greenBM.allocN32Pixels(20, 20); | 829 greenBM.allocN32Pixels(20, 20); |
830 greenBM.eraseColor(SK_ColorGREEN); | 830 greenBM.eraseColor(SK_ColorGREEN); |
831 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM)); | 831 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM)); |
832 sk_sp<SkImageFilter> source(SkImageSource::Create(greenImage.get())); | 832 sk_sp<SkImageFilter> source(SkImageSource::Make(std::move(greenImage))); |
833 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(source, source)); | 833 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(source, source)); |
834 | 834 |
835 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 1)); | 835 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 1)); |
836 | 836 |
837 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100),
nullptr); | 837 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100),
nullptr); |
838 SkIPoint offset; | 838 SkIPoint offset; |
839 | 839 |
840 sk_sp<SkSpecialImage> resultImg(merge->filterImage(srcImg.get(), ctx, &offse
t)); | 840 sk_sp<SkSpecialImage> resultImg(merge->filterImage(srcImg.get(), ctx, &offse
t)); |
841 REPORTER_ASSERT(reporter, resultImg); | 841 REPORTER_ASSERT(reporter, resultImg); |
842 | 842 |
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1488 SkAutoTUnref<SkImageFilter> forceOpaque(SkColorFilterImageFilter::Create(for
ceOpaqueCF.get())); | 1488 SkAutoTUnref<SkImageFilter> forceOpaque(SkColorFilterImageFilter::Create(for
ceOpaqueCF.get())); |
1489 REPORTER_ASSERT(reporter, forceOpaqueCF->affectsTransparentBlack()); | 1489 REPORTER_ASSERT(reporter, forceOpaqueCF->affectsTransparentBlack()); |
1490 REPORTER_ASSERT(reporter, !forceOpaque->canComputeFastBounds()); | 1490 REPORTER_ASSERT(reporter, !forceOpaque->canComputeFastBounds()); |
1491 } | 1491 } |
1492 | 1492 |
1493 // Verify that SkImageSource survives serialization | 1493 // Verify that SkImageSource survives serialization |
1494 DEF_TEST(ImageFilterImageSourceSerialization, reporter) { | 1494 DEF_TEST(ImageFilterImageSourceSerialization, reporter) { |
1495 auto surface(SkSurface::MakeRasterN32Premul(10, 10)); | 1495 auto surface(SkSurface::MakeRasterN32Premul(10, 10)); |
1496 surface->getCanvas()->clear(SK_ColorGREEN); | 1496 surface->getCanvas()->clear(SK_ColorGREEN); |
1497 sk_sp<SkImage> image(surface->makeImageSnapshot()); | 1497 sk_sp<SkImage> image(surface->makeImageSnapshot()); |
1498 SkAutoTUnref<SkImageFilter> filter(SkImageSource::Create(image.get())); | 1498 sk_sp<SkImageFilter> filter(SkImageSource::Make(std::move(image))); |
1499 | 1499 |
1500 SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(filter)); | 1500 sk_sp<SkData> data(SkValidatingSerializeFlattenable(filter.get())); |
1501 SkAutoTUnref<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable( | 1501 sk_sp<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable( |
1502 data->data(), data->size(), SkImageFilter::GetFlattenableType())); | 1502 data->data(), data->size(), SkImageFilter::GetFlattenableType())); |
1503 SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.g
et()); | 1503 SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.g
et()); |
1504 REPORTER_ASSERT(reporter, unflattenedFilter); | 1504 REPORTER_ASSERT(reporter, unflattenedFilter); |
1505 | 1505 |
1506 SkBitmap bm; | 1506 SkBitmap bm; |
1507 bm.allocN32Pixels(10, 10); | 1507 bm.allocN32Pixels(10, 10); |
1508 bm.eraseColor(SK_ColorBLUE); | 1508 bm.eraseColor(SK_ColorBLUE); |
1509 SkPaint paint; | 1509 SkPaint paint; |
1510 paint.setColor(SK_ColorRED); | 1510 paint.setColor(SK_ColorRED); |
1511 paint.setImageFilter(unflattenedFilter); | 1511 paint.setImageFilter(unflattenedFilter); |
(...skipping 20 matching lines...) Expand all Loading... |
1532 ERRORF(reporter, "Failed to allocate large bmp."); | 1532 ERRORF(reporter, "Failed to allocate large bmp."); |
1533 return; | 1533 return; |
1534 } | 1534 } |
1535 | 1535 |
1536 sk_sp<SkImage> largeImage(SkImage::MakeFromBitmap(largeBmp)); | 1536 sk_sp<SkImage> largeImage(SkImage::MakeFromBitmap(largeBmp)); |
1537 if (!largeImage) { | 1537 if (!largeImage) { |
1538 ERRORF(reporter, "Failed to create large image."); | 1538 ERRORF(reporter, "Failed to create large image."); |
1539 return; | 1539 return; |
1540 } | 1540 } |
1541 | 1541 |
1542 SkAutoTUnref<SkImageFilter> largeSource(SkImageSource::Create(largeImage.get
())); | 1542 sk_sp<SkImageFilter> largeSource(SkImageSource::Make(std::move(largeImage)))
; |
1543 if (!largeSource) { | 1543 if (!largeSource) { |
1544 ERRORF(reporter, "Failed to create large SkImageSource."); | 1544 ERRORF(reporter, "Failed to create large SkImageSource."); |
1545 return; | 1545 return; |
1546 } | 1546 } |
1547 | 1547 |
1548 SkAutoTUnref<SkImageFilter> blur(SkBlurImageFilter::Create(10.f, 10.f, large
Source)); | 1548 sk_sp<SkImageFilter> blur(SkBlurImageFilter::Create(10.f, 10.f, largeSource.
get())); |
1549 if (!blur) { | 1549 if (!blur) { |
1550 ERRORF(reporter, "Failed to create SkBlurImageFilter."); | 1550 ERRORF(reporter, "Failed to create SkBlurImageFilter."); |
1551 return; | 1551 return; |
1552 } | 1552 } |
1553 | 1553 |
1554 SkPaint paint; | 1554 SkPaint paint; |
1555 paint.setImageFilter(blur); | 1555 paint.setImageFilter(std::move(blur)); |
1556 | 1556 |
1557 // This should not crash (http://crbug.com/570479). | 1557 // This should not crash (http://crbug.com/570479). |
1558 canvas->drawRect(SkRect::MakeIWH(largeW, largeH), paint); | 1558 canvas->drawRect(SkRect::MakeIWH(largeW, largeH), paint); |
1559 } | 1559 } |
1560 | 1560 |
1561 DEF_TEST(BlurLargeImage, reporter) { | 1561 DEF_TEST(BlurLargeImage, reporter) { |
1562 auto surface(SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(100, 100))); | 1562 auto surface(SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(100, 100))); |
1563 test_large_blur_input(reporter, surface->getCanvas()); | 1563 test_large_blur_input(reporter, surface->getCanvas()); |
1564 } | 1564 } |
1565 | 1565 |
(...skipping 26 matching lines...) Expand all Loading... |
1592 | 1592 |
1593 test_xfermode_cropped_input(&canvas, reporter); | 1593 test_xfermode_cropped_input(&canvas, reporter); |
1594 } | 1594 } |
1595 | 1595 |
1596 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { | 1596 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { |
1597 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, | 1597 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, |
1598 SkImageInfo::MakeN32Premul(100, 100
))); | 1598 SkImageInfo::MakeN32Premul(100, 100
))); |
1599 test_large_blur_input(reporter, surface->getCanvas()); | 1599 test_large_blur_input(reporter, surface->getCanvas()); |
1600 } | 1600 } |
1601 #endif | 1601 #endif |
OLD | NEW |