| 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 return new MatrixTestImageFilter(reporter, matrix); | 89 return new MatrixTestImageFilter(reporter, matrix); |
| 90 } | 90 } |
| 91 | 91 |
| 92 #ifndef SK_IGNORE_TO_STRING | 92 #ifndef SK_IGNORE_TO_STRING |
| 93 void MatrixTestImageFilter::toString(SkString* str) const { | 93 void MatrixTestImageFilter::toString(SkString* str) const { |
| 94 str->appendf("MatrixTestImageFilter: ("); | 94 str->appendf("MatrixTestImageFilter: ("); |
| 95 str->append(")"); | 95 str->append(")"); |
| 96 } | 96 } |
| 97 #endif | 97 #endif |
| 98 | 98 |
| 99 static SkImage* make_small_image() { | 99 static sk_sp<SkImage> make_small_image() { |
| 100 SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(kBitmapSize, k
BitmapSize)); | 100 SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(kBitmapSize, k
BitmapSize)); |
| 101 SkCanvas* canvas = surface->getCanvas(); | 101 SkCanvas* canvas = surface->getCanvas(); |
| 102 canvas->clear(0x00000000); | 102 canvas->clear(0x00000000); |
| 103 SkPaint darkPaint; | 103 SkPaint darkPaint; |
| 104 darkPaint.setColor(0xFF804020); | 104 darkPaint.setColor(0xFF804020); |
| 105 SkPaint lightPaint; | 105 SkPaint lightPaint; |
| 106 lightPaint.setColor(0xFF244484); | 106 lightPaint.setColor(0xFF244484); |
| 107 const int i = kBitmapSize / 4; | 107 const int i = kBitmapSize / 4; |
| 108 for (int y = 0; y < kBitmapSize; y += i) { | 108 for (int y = 0; y < kBitmapSize; y += i) { |
| 109 for (int x = 0; x < kBitmapSize; x += i) { | 109 for (int x = 0; x < kBitmapSize; x += i) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 121 SkIntToScalar(i), | 121 SkIntToScalar(i), |
| 122 SkIntToScalar(i)), lightPaint); | 122 SkIntToScalar(i)), lightPaint); |
| 123 canvas->drawRect(SkRect::MakeXYWH(SkIntToScalar(i), | 123 canvas->drawRect(SkRect::MakeXYWH(SkIntToScalar(i), |
| 124 SkIntToScalar(i), | 124 SkIntToScalar(i), |
| 125 SkIntToScalar(i), | 125 SkIntToScalar(i), |
| 126 SkIntToScalar(i)), darkPaint); | 126 SkIntToScalar(i)), darkPaint); |
| 127 canvas->restore(); | 127 canvas->restore(); |
| 128 } | 128 } |
| 129 } | 129 } |
| 130 | 130 |
| 131 return surface->newImageSnapshot(); | 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 SkAutoTUnref<SkColorFilter> filter(SkColorMatrixFilter::Create(matrix)); |
| 141 return SkColorFilterImageFilter::Create(filter, input); | 141 return SkColorFilterImageFilter::Create(filter, input); |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 canvas.clear(0x0); | 273 canvas.clear(0x0); |
| 274 SkRect rect = SkRect::Make(SkIRect::MakeWH(kBitmapSize, kBitmapSize)); | 274 SkRect rect = SkRect::Make(SkIRect::MakeWH(kBitmapSize, kBitmapSize)); |
| 275 canvas.drawRect(rect, paint); | 275 canvas.drawRect(rect, paint); |
| 276 uint32_t pixel = *result.getAddr32(0, 0); | 276 uint32_t pixel = *result.getAddr32(0, 0); |
| 277 // The result here should be green, since we have effectively shifted bl
ue to green. | 277 // The result here should be green, since we have effectively shifted bl
ue to green. |
| 278 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); | 278 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); |
| 279 } | 279 } |
| 280 | 280 |
| 281 { | 281 { |
| 282 // Tests pass by not asserting | 282 // Tests pass by not asserting |
| 283 SkAutoTUnref<SkImage> image(make_small_image()); | 283 sk_sp<SkImage> image(make_small_image()); |
| 284 SkBitmap result; | 284 SkBitmap result; |
| 285 result.allocN32Pixels(kBitmapSize, kBitmapSize); | 285 result.allocN32Pixels(kBitmapSize, kBitmapSize); |
| 286 | 286 |
| 287 { | 287 { |
| 288 // This tests for : | 288 // This tests for : |
| 289 // 1 ) location at (0,0,1) | 289 // 1 ) location at (0,0,1) |
| 290 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); | 290 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); |
| 291 // 2 ) location and target at same value | 291 // 2 ) location and target at same value |
| 292 SkPoint3 target = SkPoint3::Make(location.fX, location.fY, location.
fZ); | 292 SkPoint3 target = SkPoint3::Make(location.fX, location.fY, location.
fZ); |
| 293 // 3 ) large negative specular exponent value | 293 // 3 ) large negative specular exponent value |
| 294 SkScalar specularExponent = -1000; | 294 SkScalar specularExponent = -1000; |
| 295 | 295 |
| 296 SkAutoTUnref<SkImageFilter> bmSrc(SkImageSource::Create(image)); | 296 SkAutoTUnref<SkImageFilter> bmSrc(SkImageSource::Create(image.get())
); |
| 297 SkPaint paint; | 297 SkPaint paint; |
| 298 paint.setImageFilter(SkLightingImageFilter::CreateSpotLitSpecular( | 298 paint.setImageFilter(SkLightingImageFilter::CreateSpotLitSpecular( |
| 299 location, target, specularExponent, 180, | 299 location, target, specularExponent, 180, |
| 300 0xFFFFFFFF, SK_Scalar1, SK_Scalar1, SK_Scalar1, | 300 0xFFFFFFFF, SK_Scalar1, SK_Scalar1, SK_Scalar1, |
| 301 bmSrc))->unref(); | 301 bmSrc))->unref(); |
| 302 SkCanvas canvas(result); | 302 SkCanvas canvas(result); |
| 303 SkRect r = SkRect::MakeWH(SkIntToScalar(kBitmapSize), | 303 SkRect r = SkRect::MakeWH(SkIntToScalar(kBitmapSize), |
| 304 SkIntToScalar(kBitmapSize)); | 304 SkIntToScalar(kBitmapSize)); |
| 305 canvas.drawRect(r, paint); | 305 canvas.drawRect(r, paint); |
| 306 } | 306 } |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); | 567 SkPoint3 location = SkPoint3::Make(0, 0, SK_Scalar1); |
| 568 SkScalar kernel[9] = { | 568 SkScalar kernel[9] = { |
| 569 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), | 569 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
| 570 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), | 570 SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), |
| 571 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), | 571 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
| 572 }; | 572 }; |
| 573 const SkISize kernelSize = SkISize::Make(3, 3); | 573 const SkISize kernelSize = SkISize::Make(3, 3); |
| 574 const SkScalar gain = SK_Scalar1, bias = 0; | 574 const SkScalar gain = SK_Scalar1, bias = 0; |
| 575 const SkScalar five = SkIntToScalar(5); | 575 const SkScalar five = SkIntToScalar(5); |
| 576 | 576 |
| 577 SkAutoTUnref<SkImage> gradientImage(SkImage::NewFromBitmap(make_gradient_cir
cle(64, 64))); | 577 sk_sp<SkImage> gradientImage(SkImage::MakeFromBitmap(make_gradient_circle(64
, 64))); |
| 578 SkAutoTUnref<SkImageFilter> gradientSource(SkImageSource::Create(gradientIma
ge)); | 578 SkAutoTUnref<SkImageFilter> gradientSource(SkImageSource::Create(gradientIma
ge.get())); |
| 579 SkAutoTUnref<SkImageFilter> blur(SkBlurImageFilter::Create(five, five)); | 579 SkAutoTUnref<SkImageFilter> blur(SkBlurImageFilter::Create(five, five)); |
| 580 SkMatrix matrix; | 580 SkMatrix matrix; |
| 581 | 581 |
| 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 |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 795 | 795 |
| 796 REPORTER_ASSERT(reporter, boundsDst == expectedBounds); | 796 REPORTER_ASSERT(reporter, boundsDst == expectedBounds); |
| 797 } | 797 } |
| 798 | 798 |
| 799 static void test_imagefilter_merge_result_size(SkImageFilter::Proxy* proxy, | 799 static void test_imagefilter_merge_result_size(SkImageFilter::Proxy* proxy, |
| 800 skiatest::Reporter* reporter, | 800 skiatest::Reporter* reporter, |
| 801 GrContext* context) { | 801 GrContext* context) { |
| 802 SkBitmap greenBM; | 802 SkBitmap greenBM; |
| 803 greenBM.allocN32Pixels(20, 20); | 803 greenBM.allocN32Pixels(20, 20); |
| 804 greenBM.eraseColor(SK_ColorGREEN); | 804 greenBM.eraseColor(SK_ColorGREEN); |
| 805 SkAutoTUnref<SkImage> greenImage(SkImage::NewFromBitmap(greenBM)); | 805 sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM)); |
| 806 SkAutoTUnref<SkImageFilter> source(SkImageSource::Create(greenImage.get())); | 806 SkAutoTUnref<SkImageFilter> source(SkImageSource::Create(greenImage.get())); |
| 807 SkAutoTUnref<SkImageFilter> merge(SkMergeImageFilter::Create(source.get(), s
ource.get())); | 807 SkAutoTUnref<SkImageFilter> merge(SkMergeImageFilter::Create(source.get(), s
ource.get())); |
| 808 | 808 |
| 809 SkAutoTUnref<SkSpecialImage> srcImg(create_empty_special_image(context, prox
y, 1)); | 809 SkAutoTUnref<SkSpecialImage> srcImg(create_empty_special_image(context, prox
y, 1)); |
| 810 | 810 |
| 811 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100),
nullptr); | 811 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 100, 100),
nullptr); |
| 812 SkIPoint offset; | 812 SkIPoint offset; |
| 813 | 813 |
| 814 SkAutoTUnref<SkSpecialImage> resultImg(merge->filterImage(srcImg, ctx, &offs
et)); | 814 SkAutoTUnref<SkSpecialImage> resultImg(merge->filterImage(srcImg, ctx, &offs
et)); |
| 815 REPORTER_ASSERT(reporter, resultImg); | 815 REPORTER_ASSERT(reporter, resultImg); |
| (...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1426 SkTableColorFilter::CreateARGB(allOne, identity, identity, identity)); | 1426 SkTableColorFilter::CreateARGB(allOne, identity, identity, identity)); |
| 1427 SkAutoTUnref<SkImageFilter> forceOpaque(SkColorFilterImageFilter::Create(for
ceOpaqueCF.get())); | 1427 SkAutoTUnref<SkImageFilter> forceOpaque(SkColorFilterImageFilter::Create(for
ceOpaqueCF.get())); |
| 1428 REPORTER_ASSERT(reporter, forceOpaqueCF->affectsTransparentBlack()); | 1428 REPORTER_ASSERT(reporter, forceOpaqueCF->affectsTransparentBlack()); |
| 1429 REPORTER_ASSERT(reporter, !forceOpaque->canComputeFastBounds()); | 1429 REPORTER_ASSERT(reporter, !forceOpaque->canComputeFastBounds()); |
| 1430 } | 1430 } |
| 1431 | 1431 |
| 1432 // Verify that SkImageSource survives serialization | 1432 // Verify that SkImageSource survives serialization |
| 1433 DEF_TEST(ImageFilterImageSourceSerialization, reporter) { | 1433 DEF_TEST(ImageFilterImageSourceSerialization, reporter) { |
| 1434 SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(10, 10)); | 1434 SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(10, 10)); |
| 1435 surface->getCanvas()->clear(SK_ColorGREEN); | 1435 surface->getCanvas()->clear(SK_ColorGREEN); |
| 1436 SkAutoTUnref<SkImage> image(surface->newImageSnapshot()); | 1436 sk_sp<SkImage> image(surface->makeImageSnapshot()); |
| 1437 SkAutoTUnref<SkImageFilter> filter(SkImageSource::Create(image)); | 1437 SkAutoTUnref<SkImageFilter> filter(SkImageSource::Create(image.get())); |
| 1438 | 1438 |
| 1439 SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(filter)); | 1439 SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(filter)); |
| 1440 SkAutoTUnref<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable( | 1440 SkAutoTUnref<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable( |
| 1441 data->data(), data->size(), SkImageFilter::GetFlattenableType())); | 1441 data->data(), data->size(), SkImageFilter::GetFlattenableType())); |
| 1442 SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.g
et()); | 1442 SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.g
et()); |
| 1443 REPORTER_ASSERT(reporter, unflattenedFilter); | 1443 REPORTER_ASSERT(reporter, unflattenedFilter); |
| 1444 | 1444 |
| 1445 SkBitmap bm; | 1445 SkBitmap bm; |
| 1446 bm.allocN32Pixels(10, 10); | 1446 bm.allocN32Pixels(10, 10); |
| 1447 bm.eraseColor(SK_ColorBLUE); | 1447 bm.eraseColor(SK_ColorBLUE); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1465 } | 1465 } |
| 1466 #endif | 1466 #endif |
| 1467 | 1467 |
| 1468 largeBmp.allocN32Pixels(largeW, largeH); | 1468 largeBmp.allocN32Pixels(largeW, largeH); |
| 1469 largeBmp.eraseColor(0); | 1469 largeBmp.eraseColor(0); |
| 1470 if (!largeBmp.getPixels()) { | 1470 if (!largeBmp.getPixels()) { |
| 1471 ERRORF(reporter, "Failed to allocate large bmp."); | 1471 ERRORF(reporter, "Failed to allocate large bmp."); |
| 1472 return; | 1472 return; |
| 1473 } | 1473 } |
| 1474 | 1474 |
| 1475 SkAutoTUnref<SkImage> largeImage(SkImage::NewFromBitmap(largeBmp)); | 1475 sk_sp<SkImage> largeImage(SkImage::MakeFromBitmap(largeBmp)); |
| 1476 if (!largeImage) { | 1476 if (!largeImage) { |
| 1477 ERRORF(reporter, "Failed to create large image."); | 1477 ERRORF(reporter, "Failed to create large image."); |
| 1478 return; | 1478 return; |
| 1479 } | 1479 } |
| 1480 | 1480 |
| 1481 SkAutoTUnref<SkImageFilter> largeSource(SkImageSource::Create(largeImage)); | 1481 SkAutoTUnref<SkImageFilter> largeSource(SkImageSource::Create(largeImage.get
())); |
| 1482 if (!largeSource) { | 1482 if (!largeSource) { |
| 1483 ERRORF(reporter, "Failed to create large SkImageSource."); | 1483 ERRORF(reporter, "Failed to create large SkImageSource."); |
| 1484 return; | 1484 return; |
| 1485 } | 1485 } |
| 1486 | 1486 |
| 1487 SkAutoTUnref<SkImageFilter> blur(SkBlurImageFilter::Create(10.f, 10.f, large
Source)); | 1487 SkAutoTUnref<SkImageFilter> blur(SkBlurImageFilter::Create(10.f, 10.f, large
Source)); |
| 1488 if (!blur) { | 1488 if (!blur) { |
| 1489 ERRORF(reporter, "Failed to create SkBlurImageFilter."); | 1489 ERRORF(reporter, "Failed to create SkBlurImageFilter."); |
| 1490 return; | 1490 return; |
| 1491 } | 1491 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1532 test_xfermode_cropped_input(&canvas, reporter); | 1532 test_xfermode_cropped_input(&canvas, reporter); |
| 1533 } | 1533 } |
| 1534 | 1534 |
| 1535 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { | 1535 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { |
| 1536 SkAutoTUnref<SkSurface> surface( | 1536 SkAutoTUnref<SkSurface> surface( |
| 1537 SkSurface::NewRenderTarget(context, SkBudgeted::kYes, | 1537 SkSurface::NewRenderTarget(context, SkBudgeted::kYes, |
| 1538 SkImageInfo::MakeN32Premul(100, 100))); | 1538 SkImageInfo::MakeN32Premul(100, 100))); |
| 1539 test_large_blur_input(reporter, surface->getCanvas()); | 1539 test_large_blur_input(reporter, surface->getCanvas()); |
| 1540 } | 1540 } |
| 1541 #endif | 1541 #endif |
| OLD | NEW |