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 SkAutoTUnref<SkImageFilter> blur(SkBlurImageFilter::Create(five, five, i
nput)); | 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 |
132 SkPaint greenPaint; | 132 SkPaint greenPaint; |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 | 420 |
421 { | 421 { |
422 // This tests for : | 422 // This tests for : |
423 // 1 ) location at (0,0,1) | 423 // 1 ) location at (0,0,1) |
424 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); | 424 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); |
425 // 2 ) location and target at same value | 425 // 2 ) location and target at same value |
426 SkPoint3 target = SkPoint3::Make(location.fX, location.fY, location.
fZ); | 426 SkPoint3 target = SkPoint3::Make(location.fX, location.fY, location.
fZ); |
427 // 3 ) large negative specular exponent value | 427 // 3 ) large negative specular exponent value |
428 SkScalar specularExponent = -1000; | 428 SkScalar specularExponent = -1000; |
429 | 429 |
430 SkAutoTUnref<SkImageFilter> bmSrc(SkImageSource::Create(image.get())
); | 430 sk_sp<SkImageFilter> bmSrc(SkImageSource::Make(std::move(image))); |
431 SkPaint paint; | 431 SkPaint paint; |
432 paint.setImageFilter(SkLightingImageFilter::CreateSpotLitSpecular( | 432 paint.setImageFilter(SkLightingImageFilter::CreateSpotLitSpecular( |
433 location, target, specularExponent, 180, | 433 location, target, specularExponent, 180, |
434 0xFFFFFFFF, SK_Scalar1, SK_Scalar1, SK_Scalar1, | 434 0xFFFFFFFF, SK_Scalar1, SK_Scalar1, SK_Scalar1, |
435 bmSrc))->unref(); | 435 bmSrc.get()))->unref(); |
436 SkCanvas canvas(result); | 436 SkCanvas canvas(result); |
437 SkRect r = SkRect::MakeWH(SkIntToScalar(kBitmapSize), | 437 SkRect r = SkRect::MakeWH(SkIntToScalar(kBitmapSize), |
438 SkIntToScalar(kBitmapSize)); | 438 SkIntToScalar(kBitmapSize)); |
439 canvas.drawRect(r, paint); | 439 canvas.drawRect(r, paint); |
440 } | 440 } |
441 } | 441 } |
442 } | 442 } |
443 | 443 |
444 static void test_crop_rects(SkImageFilter::Proxy* proxy, | 444 static void test_crop_rects(SkImageFilter::Proxy* proxy, |
445 skiatest::Reporter* reporter, | 445 skiatest::Reporter* reporter, |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 } | 819 } |
820 } | 820 } |
821 | 821 |
822 static void test_imagefilter_merge_result_size(SkImageFilter::Proxy* proxy, | 822 static void test_imagefilter_merge_result_size(SkImageFilter::Proxy* proxy, |
823 skiatest::Reporter* reporter, | 823 skiatest::Reporter* reporter, |
824 GrContext* context) { | 824 GrContext* context) { |
825 SkBitmap greenBM; | 825 SkBitmap greenBM; |
826 greenBM.allocN32Pixels(20, 20); | 826 greenBM.allocN32Pixels(20, 20); |
827 greenBM.eraseColor(SK_ColorGREEN); | 827 greenBM.eraseColor(SK_ColorGREEN); |
828 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM)); | 828 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM)); |
829 sk_sp<SkImageFilter> source(SkImageSource::Create(greenImage.get())); | 829 sk_sp<SkImageFilter> source(SkImageSource::Make(std::move(greenImage))); |
830 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(source, source)); | 830 sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(source, source)); |
831 | 831 |
832 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 1)); | 832 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 1)); |
833 | 833 |
834 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100),
nullptr); | 834 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100),
nullptr); |
835 SkIPoint offset; | 835 SkIPoint offset; |
836 | 836 |
837 sk_sp<SkSpecialImage> resultImg(merge->filterImage(srcImg.get(), ctx, &offse
t)); | 837 sk_sp<SkSpecialImage> resultImg(merge->filterImage(srcImg.get(), ctx, &offse
t)); |
838 REPORTER_ASSERT(reporter, resultImg); | 838 REPORTER_ASSERT(reporter, resultImg); |
839 | 839 |
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1485 SkAutoTUnref<SkImageFilter> forceOpaque(SkColorFilterImageFilter::Create(for
ceOpaqueCF.get())); | 1485 SkAutoTUnref<SkImageFilter> forceOpaque(SkColorFilterImageFilter::Create(for
ceOpaqueCF.get())); |
1486 REPORTER_ASSERT(reporter, forceOpaqueCF->affectsTransparentBlack()); | 1486 REPORTER_ASSERT(reporter, forceOpaqueCF->affectsTransparentBlack()); |
1487 REPORTER_ASSERT(reporter, !forceOpaque->canComputeFastBounds()); | 1487 REPORTER_ASSERT(reporter, !forceOpaque->canComputeFastBounds()); |
1488 } | 1488 } |
1489 | 1489 |
1490 // Verify that SkImageSource survives serialization | 1490 // Verify that SkImageSource survives serialization |
1491 DEF_TEST(ImageFilterImageSourceSerialization, reporter) { | 1491 DEF_TEST(ImageFilterImageSourceSerialization, reporter) { |
1492 auto surface(SkSurface::MakeRasterN32Premul(10, 10)); | 1492 auto surface(SkSurface::MakeRasterN32Premul(10, 10)); |
1493 surface->getCanvas()->clear(SK_ColorGREEN); | 1493 surface->getCanvas()->clear(SK_ColorGREEN); |
1494 sk_sp<SkImage> image(surface->makeImageSnapshot()); | 1494 sk_sp<SkImage> image(surface->makeImageSnapshot()); |
1495 SkAutoTUnref<SkImageFilter> filter(SkImageSource::Create(image.get())); | 1495 sk_sp<SkImageFilter> filter(SkImageSource::Make(std::move(image))); |
1496 | 1496 |
1497 SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(filter)); | 1497 sk_sp<SkData> data(SkValidatingSerializeFlattenable(filter.get())); |
1498 SkAutoTUnref<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable( | 1498 sk_sp<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable( |
1499 data->data(), data->size(), SkImageFilter::GetFlattenableType())); | 1499 data->data(), data->size(), SkImageFilter::GetFlattenableType())); |
1500 SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.g
et()); | 1500 SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.g
et()); |
1501 REPORTER_ASSERT(reporter, unflattenedFilter); | 1501 REPORTER_ASSERT(reporter, unflattenedFilter); |
1502 | 1502 |
1503 SkBitmap bm; | 1503 SkBitmap bm; |
1504 bm.allocN32Pixels(10, 10); | 1504 bm.allocN32Pixels(10, 10); |
1505 bm.eraseColor(SK_ColorBLUE); | 1505 bm.eraseColor(SK_ColorBLUE); |
1506 SkPaint paint; | 1506 SkPaint paint; |
1507 paint.setColor(SK_ColorRED); | 1507 paint.setColor(SK_ColorRED); |
1508 paint.setImageFilter(unflattenedFilter); | 1508 paint.setImageFilter(unflattenedFilter); |
(...skipping 20 matching lines...) Expand all Loading... |
1529 ERRORF(reporter, "Failed to allocate large bmp."); | 1529 ERRORF(reporter, "Failed to allocate large bmp."); |
1530 return; | 1530 return; |
1531 } | 1531 } |
1532 | 1532 |
1533 sk_sp<SkImage> largeImage(SkImage::MakeFromBitmap(largeBmp)); | 1533 sk_sp<SkImage> largeImage(SkImage::MakeFromBitmap(largeBmp)); |
1534 if (!largeImage) { | 1534 if (!largeImage) { |
1535 ERRORF(reporter, "Failed to create large image."); | 1535 ERRORF(reporter, "Failed to create large image."); |
1536 return; | 1536 return; |
1537 } | 1537 } |
1538 | 1538 |
1539 SkAutoTUnref<SkImageFilter> largeSource(SkImageSource::Create(largeImage.get
())); | 1539 sk_sp<SkImageFilter> largeSource(SkImageSource::Make(std::move(largeImage)))
; |
1540 if (!largeSource) { | 1540 if (!largeSource) { |
1541 ERRORF(reporter, "Failed to create large SkImageSource."); | 1541 ERRORF(reporter, "Failed to create large SkImageSource."); |
1542 return; | 1542 return; |
1543 } | 1543 } |
1544 | 1544 |
1545 SkAutoTUnref<SkImageFilter> blur(SkBlurImageFilter::Create(10.f, 10.f, large
Source)); | 1545 sk_sp<SkImageFilter> blur(SkBlurImageFilter::Create(10.f, 10.f, largeSource.
get())); |
1546 if (!blur) { | 1546 if (!blur) { |
1547 ERRORF(reporter, "Failed to create SkBlurImageFilter."); | 1547 ERRORF(reporter, "Failed to create SkBlurImageFilter."); |
1548 return; | 1548 return; |
1549 } | 1549 } |
1550 | 1550 |
1551 SkPaint paint; | 1551 SkPaint paint; |
1552 paint.setImageFilter(blur); | 1552 paint.setImageFilter(std::move(blur)); |
1553 | 1553 |
1554 // This should not crash (http://crbug.com/570479). | 1554 // This should not crash (http://crbug.com/570479). |
1555 canvas->drawRect(SkRect::MakeIWH(largeW, largeH), paint); | 1555 canvas->drawRect(SkRect::MakeIWH(largeW, largeH), paint); |
1556 } | 1556 } |
1557 | 1557 |
1558 DEF_TEST(BlurLargeImage, reporter) { | 1558 DEF_TEST(BlurLargeImage, reporter) { |
1559 auto surface(SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(100, 100))); | 1559 auto surface(SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(100, 100))); |
1560 test_large_blur_input(reporter, surface->getCanvas()); | 1560 test_large_blur_input(reporter, surface->getCanvas()); |
1561 } | 1561 } |
1562 | 1562 |
(...skipping 26 matching lines...) Expand all Loading... |
1589 | 1589 |
1590 test_xfermode_cropped_input(&canvas, reporter); | 1590 test_xfermode_cropped_input(&canvas, reporter); |
1591 } | 1591 } |
1592 | 1592 |
1593 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { | 1593 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { |
1594 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, | 1594 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, |
1595 SkImageInfo::MakeN32Premul(100, 100
))); | 1595 SkImageInfo::MakeN32Premul(100, 100
))); |
1596 test_large_blur_input(reporter, surface->getCanvas()); | 1596 test_large_blur_input(reporter, surface->getCanvas()); |
1597 } | 1597 } |
1598 #endif | 1598 #endif |
OLD | NEW |