Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: tests/ImageFilterTest.cpp

Issue 1842193002: Update SkOffsetImageFilter to sk_sp (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update to ToT Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/effects/SkTileImageFilter.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 SkAutoTUnref<SkImageFilter> gradientSource(SkImageSource::Create(gradien tImage.get()));
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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1), 170 kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1),
171 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false, i nput, cropRect)); 171 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false, i nput, cropRect));
172 this->addFilter("merge", SkMergeImageFilter::Make(sk_ref_sp<SkImageFilte r>(input), 172 this->addFilter("merge", SkMergeImageFilter::Make(sk_ref_sp<SkImageFilte r>(input),
173 sk_ref_sp<SkImageFilte r>(input), 173 sk_ref_sp<SkImageFilte r>(input),
174 SkXfermode::kSrcOver_M ode, 174 SkXfermode::kSrcOver_M ode,
175 cropRect).release()); 175 cropRect).release());
176 this->addFilter("merge with disjoint inputs", SkMergeImageFilter::Make( 176 this->addFilter("merge with disjoint inputs", SkMergeImageFilter::Make(
177 std::move(paintFilterLeft), std::move(paintFilterRight), 177 std::move(paintFilterLeft), std::move(paintFilterRight),
178 SkXfermode::kSrcOver_Mode, cropRect).release()); 178 SkXfermode::kSrcOver_Mode, cropRect).release());
179 this->addFilter("offset", 179 this->addFilter("offset",
180 SkOffsetImageFilter::Create(SK_Scalar1, SK_Scalar1, inpu t, cropRect)); 180 SkOffsetImageFilter::Make(SK_Scalar1, SK_Scalar1,
181 sk_ref_sp<SkImageFilter>(input ),
182 cropRect).release());
181 this->addFilter("dilate", SkDilateImageFilter::Create(3, 2, input, cropR ect)); 183 this->addFilter("dilate", SkDilateImageFilter::Create(3, 2, input, cropR ect));
182 this->addFilter("erode", SkErodeImageFilter::Create(2, 3, input, cropRec t)); 184 this->addFilter("erode", SkErodeImageFilter::Create(2, 3, input, cropRec t));
183 this->addFilter("tile", SkTileImageFilter::Create( 185 this->addFilter("tile", SkTileImageFilter::Create(
184 SkRect::MakeXYWH(0, 0, 50, 50), 186 SkRect::MakeXYWH(0, 0, 50, 50),
185 cropRect ? cropRect->rect() : SkRect::MakeXYWH(0, 0, 100, 100), 187 cropRect ? cropRect->rect() : SkRect::MakeXYWH(0, 0, 100, 100),
186 input)); 188 input));
187 if (!cropRect) { 189 if (!cropRect) {
188 this->addFilter("matrix", SkImageFilter::CreateMatrixFilter( 190 this->addFilter("matrix", SkImageFilter::CreateMatrixFilter(
189 matrix, kLow_SkFilterQuality, input)); 191 matrix, kLow_SkFilterQuality, input));
190 } 192 }
191 this->addFilter("blur and offset", SkOffsetImageFilter::Create( 193 this->addFilter("blur and offset",
192 five, five, blur.get(), cropRect)); 194 SkOffsetImageFilter::Make(five, five, blur,
195 cropRect).release());
193 this->addFilter("picture and blur", SkBlurImageFilter::Create( 196 this->addFilter("picture and blur", SkBlurImageFilter::Create(
194 five, five, pictureFilter.get(), cropRect)); 197 five, five, pictureFilter.get(), cropRect));
195 this->addFilter("paint and blur", SkBlurImageFilter::Create( 198 this->addFilter("paint and blur", SkBlurImageFilter::Create(
196 five, five, paintFilter.get(), cropRect)); 199 five, five, paintFilter.get(), cropRect));
197 this->addFilter("xfermode", SkXfermodeImageFilter::Make( 200 this->addFilter("xfermode", SkXfermodeImageFilter::Make(
198 SkXfermode::Make(SkXfermode::kSrc_Mode), input, input, cropRect).rel ease()); 201 SkXfermode::Make(SkXfermode::kSrc_Mode), input, input, cropRect).rel ease());
199 } 202 }
200 int count() const { return fFilters.count(); } 203 int count() const { return fFilters.count(); }
201 SkImageFilter* getFilter(int index) const { return fFilters[index].fFilter.g et(); } 204 SkImageFilter* getFilter(int index) const { return fFilters[index].fFilter.g et(); }
202 const char* getName(int index) const { return fFilters[index].fName; } 205 const char* getName(int index) const { return fFilters[index].fName; }
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 DEF_GPUTEST_FOR_NATIVE_CONTEXT(TestNegativeBlurSigma_Gpu, reporter, context) { 591 DEF_GPUTEST_FOR_NATIVE_CONTEXT(TestNegativeBlurSigma_Gpu, reporter, context) {
589 run_gpu_test(reporter, context, 100, test_negative_blur_sigma); 592 run_gpu_test(reporter, context, 100, test_negative_blur_sigma);
590 } 593 }
591 #endif 594 #endif
592 595
593 static void test_zero_blur_sigma(SkImageFilter::Proxy* proxy, 596 static void test_zero_blur_sigma(SkImageFilter::Proxy* proxy,
594 skiatest::Reporter* reporter, 597 skiatest::Reporter* reporter,
595 GrContext* context) { 598 GrContext* context) {
596 // Check that SkBlurImageFilter with a zero sigma and a non-zero srcOffset w orks correctly. 599 // Check that SkBlurImageFilter with a zero sigma and a non-zero srcOffset w orks correctly.
597 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(5, 0, 5, 10) )); 600 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(5, 0, 5, 10) ));
598 SkAutoTUnref<SkImageFilter> input(SkOffsetImageFilter::Create(0, 0, nullptr, &cropRect)); 601 sk_sp<SkImageFilter> input(SkOffsetImageFilter::Make(0, 0, nullptr, &cropRec t));
599 SkAutoTUnref<SkImageFilter> filter(SkBlurImageFilter::Create(0, 0, input, &c ropRect)); 602 sk_sp<SkImageFilter> filter(SkBlurImageFilter::Create(0, 0, input.get(), &cr opRect));
600 603
601 sk_sp<SkSpecialSurface> surf(create_empty_special_surface(context, proxy, 10 )); 604 sk_sp<SkSpecialSurface> surf(create_empty_special_surface(context, proxy, 10 ));
602 surf->getCanvas()->clear(SK_ColorGREEN); 605 surf->getCanvas()->clear(SK_ColorGREEN);
603 sk_sp<SkSpecialImage> image(surf->makeImageSnapshot()); 606 sk_sp<SkSpecialImage> image(surf->makeImageSnapshot());
604 607
605 SkIPoint offset; 608 SkIPoint offset;
606 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr); 609 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(32, 32), nullptr);
607 610
608 sk_sp<SkSpecialImage> result(filter->filterImage(image.get(), ctx, &offset)) ; 611 sk_sp<SkSpecialImage> result(filter->filterImage(image.get(), ctx, &offset)) ;
609 REPORTER_ASSERT(reporter, offset.fX == 5 && offset.fY == 0); 612 REPORTER_ASSERT(reporter, offset.fX == 5 && offset.fY == 0);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 795
793 SkRect boundsSrc = SkRect::MakeWH(SkIntToScalar(100), SkIntToScalar(100)); 796 SkRect boundsSrc = SkRect::MakeWH(SkIntToScalar(100), SkIntToScalar(100));
794 SkRect expectedBounds = SkRect::MakeXYWH( 797 SkRect expectedBounds = SkRect::MakeXYWH(
795 SkIntToScalar(-6), SkIntToScalar(-6), SkIntToScalar(112), SkIntToScalar( 112)); 798 SkIntToScalar(-6), SkIntToScalar(-6), SkIntToScalar(112), SkIntToScalar( 112));
796 SkRect boundsDst = composedFilter->computeFastBounds(boundsSrc); 799 SkRect boundsDst = composedFilter->computeFastBounds(boundsSrc);
797 800
798 REPORTER_ASSERT(reporter, boundsDst == expectedBounds); 801 REPORTER_ASSERT(reporter, boundsDst == expectedBounds);
799 } 802 }
800 803
801 DEF_TEST(ImageFilterUnionBounds, reporter) { 804 DEF_TEST(ImageFilterUnionBounds, reporter) {
802 SkAutoTUnref<SkImageFilter> offset(SkOffsetImageFilter::Create(50, 0)); 805 sk_sp<SkImageFilter> offset(SkOffsetImageFilter::Make(50, 0, nullptr));
803 // Regardless of which order they appear in, the image filter bounds should 806 // Regardless of which order they appear in, the image filter bounds should
804 // be combined correctly. 807 // be combined correctly.
805 { 808 {
806 sk_sp<SkImageFilter> composite(SkXfermodeImageFilter::Make(nullptr, offs et.get())); 809 sk_sp<SkImageFilter> composite(SkXfermodeImageFilter::Make(nullptr, offs et.get()));
807 SkRect bounds = SkRect::MakeWH(100, 100); 810 SkRect bounds = SkRect::MakeWH(100, 100);
808 // Intentionally aliasing here, as that's what the real callers do. 811 // Intentionally aliasing here, as that's what the real callers do.
809 bounds = composite->computeFastBounds(bounds); 812 bounds = composite->computeFastBounds(bounds);
810 REPORTER_ASSERT(reporter, bounds == SkRect::MakeWH(150, 100)); 813 REPORTER_ASSERT(reporter, bounds == SkRect::MakeWH(150, 100));
811 } 814 }
812 { 815 {
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
1333 SkCanvas canvas(temp); 1336 SkCanvas canvas(temp);
1334 test_xfermode_cropped_input(&canvas, reporter); 1337 test_xfermode_cropped_input(&canvas, reporter);
1335 } 1338 }
1336 1339
1337 static void test_composed_imagefilter_offset(SkImageFilter::Proxy* proxy, 1340 static void test_composed_imagefilter_offset(SkImageFilter::Proxy* proxy,
1338 skiatest::Reporter* reporter, 1341 skiatest::Reporter* reporter,
1339 GrContext* context) { 1342 GrContext* context) {
1340 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100) ); 1343 sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, proxy, 100) );
1341 1344
1342 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20)); 1345 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(1, 0, 20, 20));
1343 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Create(0, 0, nullptr, &cropRect)); 1346 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Make(0, 0, nullptr, & cropRect));
1344 sk_sp<SkImageFilter> blurFilter(SkBlurImageFilter::Create(SK_Scalar1, SK_Sca lar1, 1347 sk_sp<SkImageFilter> blurFilter(SkBlurImageFilter::Create(SK_Scalar1, SK_Sca lar1,
1345 nullptr, &cropRect )); 1348 nullptr, &cropRect ));
1346 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(blu rFilter), 1349 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(blu rFilter),
1347 std::move(off setFilter))); 1350 std::move(off setFilter)));
1348 SkIPoint offset; 1351 SkIPoint offset;
1349 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); 1352 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr );
1350 1353
1351 sk_sp<SkSpecialImage> resultImg(composedFilter->filterImage(srcImg.get(), ct x, &offset)); 1354 sk_sp<SkSpecialImage> resultImg(composedFilter->filterImage(srcImg.get(), ct x, &offset));
1352 REPORTER_ASSERT(reporter, resultImg); 1355 REPORTER_ASSERT(reporter, resultImg);
1353 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0); 1356 REPORTER_ASSERT(reporter, offset.fX == 1 && offset.fY == 0);
(...skipping 18 matching lines...) Expand all
1372 // Here, accounting for the outer offset is necessary so that the green 1375 // Here, accounting for the outer offset is necessary so that the green
1373 // pixels of the picture are not clipped. 1376 // pixels of the picture are not clipped.
1374 1377
1375 SkPictureRecorder recorder; 1378 SkPictureRecorder recorder;
1376 SkCanvas* recordingCanvas = recorder.beginRecording(SkRect::MakeWH(200, 100) ); 1379 SkCanvas* recordingCanvas = recorder.beginRecording(SkRect::MakeWH(200, 100) );
1377 recordingCanvas->clipRect(SkRect::MakeXYWH(100, 0, 100, 100)); 1380 recordingCanvas->clipRect(SkRect::MakeXYWH(100, 0, 100, 100));
1378 recordingCanvas->clear(SK_ColorGREEN); 1381 recordingCanvas->clear(SK_ColorGREEN);
1379 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture()); 1382 sk_sp<SkPicture> picture(recorder.finishRecordingAsPicture());
1380 sk_sp<SkImageFilter> pictureFilter(SkPictureImageFilter::Make(picture)); 1383 sk_sp<SkImageFilter> pictureFilter(SkPictureImageFilter::Make(picture));
1381 SkImageFilter::CropRect cropRect(SkRect::MakeWH(100, 100)); 1384 SkImageFilter::CropRect cropRect(SkRect::MakeWH(100, 100));
1382 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Create(-100, 0, nullp tr, &cropRect)); 1385 sk_sp<SkImageFilter> offsetFilter(SkOffsetImageFilter::Make(-100, 0, nullptr , &cropRect));
1383 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(off setFilter), 1386 sk_sp<SkImageFilter> composedFilter(SkComposeImageFilter::Make(std::move(off setFilter),
1384 std::move(pic tureFilter))); 1387 std::move(pic tureFilter)));
1385 1388
1386 sk_sp<SkSpecialImage> sourceImage(create_empty_special_image(context, proxy, 100)); 1389 sk_sp<SkSpecialImage> sourceImage(create_empty_special_image(context, proxy, 100));
1387 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr ); 1390 SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeWH(100, 100), nullptr );
1388 SkIPoint offset; 1391 SkIPoint offset;
1389 sk_sp<SkSpecialImage> result(composedFilter->filterImage(sourceImage.get(), ctx, &offset)); 1392 sk_sp<SkSpecialImage> result(composedFilter->filterImage(sourceImage.get(), ctx, &offset));
1390 REPORTER_ASSERT(reporter, offset.isZero()); 1393 REPORTER_ASSERT(reporter, offset.isZero());
1391 REPORTER_ASSERT(reporter, result); 1394 REPORTER_ASSERT(reporter, result);
1392 REPORTER_ASSERT(reporter, result->subset().size() == SkISize::Make(100, 100) ); 1395 REPORTER_ASSERT(reporter, result->subset().size() == SkISize::Make(100, 100) );
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
1589 1592
1590 test_xfermode_cropped_input(&canvas, reporter); 1593 test_xfermode_cropped_input(&canvas, reporter);
1591 } 1594 }
1592 1595
1593 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { 1596 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) {
1594 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, 1597 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes,
1595 SkImageInfo::MakeN32Premul(100, 100 ))); 1598 SkImageInfo::MakeN32Premul(100, 100 )));
1596 test_large_blur_input(reporter, surface->getCanvas()); 1599 test_large_blur_input(reporter, surface->getCanvas());
1597 } 1600 }
1598 #endif 1601 #endif
OLDNEW
« no previous file with comments | « src/effects/SkTileImageFilter.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698