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

Side by Side Diff: tests/ImageFilterTest.cpp

Issue 1869833002: Update MatrixConvolutionImageFilter 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/SkMatrixConvolutionImageFilter.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 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 this->addFilter("drop shadow", SkDropShadowImageFilter::Make( 184 this->addFilter("drop shadow", SkDropShadowImageFilter::Make(
185 SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_ColorGREEN, 185 SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_ColorGREEN,
186 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, 186 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode,
187 input, cropRect).release()); 187 input, cropRect).release());
188 this->addFilter("diffuse lighting", SkLightingImageFilter::CreatePointLi tDiffuse( 188 this->addFilter("diffuse lighting", SkLightingImageFilter::CreatePointLi tDiffuse(
189 location, SK_ColorGREEN, 0, 0, input.get(), cropRect)); 189 location, SK_ColorGREEN, 0, 0, input.get(), cropRect));
190 this->addFilter("specular lighting", 190 this->addFilter("specular lighting",
191 SkLightingImageFilter::CreatePointLitSpecular(location, SK_Col orGREEN, 0, 0, 0, 191 SkLightingImageFilter::CreatePointLitSpecular(location, SK_Col orGREEN, 0, 0, 0,
192 input.get(), cro pRect)); 192 input.get(), cro pRect));
193 this->addFilter("matrix convolution", 193 this->addFilter("matrix convolution",
194 SkMatrixConvolutionImageFilter::Create( 194 SkMatrixConvolutionImageFilter::Make(
195 kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1), 195 kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1),
196 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false, 196 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false,
197 input.get(), cropRect)); 197 input, cropRect).release());
198 this->addFilter("merge", SkMergeImageFilter::Make(input, input, 198 this->addFilter("merge", SkMergeImageFilter::Make(input, input,
199 SkXfermode::kSrcOver_M ode, 199 SkXfermode::kSrcOver_M ode,
200 cropRect).release()); 200 cropRect).release());
201 { 201 {
202 SkPaint greenColorShaderPaint; 202 SkPaint greenColorShaderPaint;
203 greenColorShaderPaint.setShader(SkShader::MakeColorShader(SK_ColorGR EEN)); 203 greenColorShaderPaint.setShader(SkShader::MakeColorShader(SK_ColorGR EEN));
204 204
205 SkImageFilter::CropRect leftSideCropRect(SkRect::MakeXYWH(0, 0, 32, 64)); 205 SkImageFilter::CropRect leftSideCropRect(SkRect::MakeXYWH(0, 0, 32, 64));
206 sk_sp<SkImageFilter> paintFilterLeft(SkPaintImageFilter::Make(greenC olorShaderPaint, 206 sk_sp<SkImageFilter> paintFilterLeft(SkPaintImageFilter::Make(greenC olorShaderPaint,
207 &leftS ideCropRect)); 207 &leftS ideCropRect));
(...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after
1026 1026
1027 DEF_TEST(ImageFilterMatrixConvolution, reporter) { 1027 DEF_TEST(ImageFilterMatrixConvolution, reporter) {
1028 // Check that a 1x3 filter does not cause a spurious assert. 1028 // Check that a 1x3 filter does not cause a spurious assert.
1029 SkScalar kernel[3] = { 1029 SkScalar kernel[3] = {
1030 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), 1030 SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1),
1031 }; 1031 };
1032 SkISize kernelSize = SkISize::Make(1, 3); 1032 SkISize kernelSize = SkISize::Make(1, 3);
1033 SkScalar gain = SK_Scalar1, bias = 0; 1033 SkScalar gain = SK_Scalar1, bias = 0;
1034 SkIPoint kernelOffset = SkIPoint::Make(0, 0); 1034 SkIPoint kernelOffset = SkIPoint::Make(0, 0);
1035 1035
1036 SkAutoTUnref<SkImageFilter> filter( 1036 sk_sp<SkImageFilter> filter(SkMatrixConvolutionImageFilter::Make(
1037 SkMatrixConvolutionImageFilter::Create( 1037 kernelSize, kernel,
1038 kernelSize, kernel, gain, bias, kernelOffset, 1038 gain, bias, kernelOffset,
1039 SkMatrixConvolutionImageFilter::kRepeat_TileMode, false)); 1039 SkMatrixConvolutionImageFilter::kRep eat_TileMode,
1040 false, nullptr));
1040 1041
1041 SkBitmap result; 1042 SkBitmap result;
1042 int width = 16, height = 16; 1043 int width = 16, height = 16;
1043 result.allocN32Pixels(width, height); 1044 result.allocN32Pixels(width, height);
1044 SkCanvas canvas(result); 1045 SkCanvas canvas(result);
1045 canvas.clear(0); 1046 canvas.clear(0);
1046 1047
1047 SkPaint paint; 1048 SkPaint paint;
1048 paint.setImageFilter(filter); 1049 paint.setImageFilter(std::move(filter));
1049 SkRect rect = SkRect::Make(SkIRect::MakeWH(width, height)); 1050 SkRect rect = SkRect::Make(SkIRect::MakeWH(width, height));
1050 canvas.drawRect(rect, paint); 1051 canvas.drawRect(rect, paint);
1051 } 1052 }
1052 1053
1053 DEF_TEST(ImageFilterMatrixConvolutionBorder, reporter) { 1054 DEF_TEST(ImageFilterMatrixConvolutionBorder, reporter) {
1054 // Check that a filter with borders outside the target bounds 1055 // Check that a filter with borders outside the target bounds
1055 // does not crash. 1056 // does not crash.
1056 SkScalar kernel[3] = { 1057 SkScalar kernel[3] = {
1057 0, 0, 0, 1058 0, 0, 0,
1058 }; 1059 };
1059 SkISize kernelSize = SkISize::Make(3, 1); 1060 SkISize kernelSize = SkISize::Make(3, 1);
1060 SkScalar gain = SK_Scalar1, bias = 0; 1061 SkScalar gain = SK_Scalar1, bias = 0;
1061 SkIPoint kernelOffset = SkIPoint::Make(2, 0); 1062 SkIPoint kernelOffset = SkIPoint::Make(2, 0);
1062 1063
1063 SkAutoTUnref<SkImageFilter> filter( 1064 sk_sp<SkImageFilter> filter(SkMatrixConvolutionImageFilter::Make(
1064 SkMatrixConvolutionImageFilter::Create( 1065 kernelSize, kernel, gain, bias, kern elOffset,
1065 kernelSize, kernel, gain, bias, kernelOffset, 1066 SkMatrixConvolutionImageFilter::kCla mp_TileMode,
1066 SkMatrixConvolutionImageFilter::kClamp_TileMode, true)); 1067 true, nullptr));
1067 1068
1068 SkBitmap result; 1069 SkBitmap result;
1069 1070
1070 int width = 10, height = 10; 1071 int width = 10, height = 10;
1071 result.allocN32Pixels(width, height); 1072 result.allocN32Pixels(width, height);
1072 SkCanvas canvas(result); 1073 SkCanvas canvas(result);
1073 canvas.clear(0); 1074 canvas.clear(0);
1074 1075
1075 SkPaint filterPaint; 1076 SkPaint filterPaint;
1076 filterPaint.setImageFilter(filter); 1077 filterPaint.setImageFilter(std::move(filter));
1077 SkRect bounds = SkRect::MakeWH(1, 10); 1078 SkRect bounds = SkRect::MakeWH(1, 10);
1078 SkRect rect = SkRect::Make(SkIRect::MakeWH(width, height)); 1079 SkRect rect = SkRect::Make(SkIRect::MakeWH(width, height));
1079 SkPaint rectPaint; 1080 SkPaint rectPaint;
1080 canvas.saveLayer(&bounds, &filterPaint); 1081 canvas.saveLayer(&bounds, &filterPaint);
1081 canvas.drawRect(rect, rectPaint); 1082 canvas.drawRect(rect, rectPaint);
1082 canvas.restore(); 1083 canvas.restore();
1083 } 1084 }
1084 1085
1085 DEF_TEST(ImageFilterCropRect, reporter) { 1086 DEF_TEST(ImageFilterCropRect, reporter) {
1086 run_raster_test(reporter, 100, test_crop_rects); 1087 run_raster_test(reporter, 100, test_crop_rects);
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 SkCanvas canvas(temp); 1287 SkCanvas canvas(temp);
1287 test_huge_blur(&canvas, reporter); 1288 test_huge_blur(&canvas, reporter);
1288 } 1289 }
1289 1290
1290 DEF_TEST(MatrixConvolutionSanityTest, reporter) { 1291 DEF_TEST(MatrixConvolutionSanityTest, reporter) {
1291 SkScalar kernel[1] = { 0 }; 1292 SkScalar kernel[1] = { 0 };
1292 SkScalar gain = SK_Scalar1, bias = 0; 1293 SkScalar gain = SK_Scalar1, bias = 0;
1293 SkIPoint kernelOffset = SkIPoint::Make(1, 1); 1294 SkIPoint kernelOffset = SkIPoint::Make(1, 1);
1294 1295
1295 // Check that an enormous (non-allocatable) kernel gives a nullptr filter. 1296 // Check that an enormous (non-allocatable) kernel gives a nullptr filter.
1296 SkAutoTUnref<SkImageFilter> conv(SkMatrixConvolutionImageFilter::Create( 1297 sk_sp<SkImageFilter> conv(SkMatrixConvolutionImageFilter::Make(
1297 SkISize::Make(1<<30, 1<<30), 1298 SkISize::Make(1<<30, 1<<30),
1298 kernel, 1299 kernel,
1299 gain, 1300 gain,
1300 bias, 1301 bias,
1301 kernelOffset, 1302 kernelOffset,
1302 SkMatrixConvolutionImageFilter::kRepeat_TileMode, 1303 SkMatrixConvolutionImageFilter::kRepeat_TileMode,
1303 false)); 1304 false,
1305 nullptr));
1304 1306
1305 REPORTER_ASSERT(reporter, nullptr == conv.get()); 1307 REPORTER_ASSERT(reporter, nullptr == conv.get());
1306 1308
1307 // Check that a nullptr kernel gives a nullptr filter. 1309 // Check that a nullptr kernel gives a nullptr filter.
1308 conv.reset(SkMatrixConvolutionImageFilter::Create( 1310 conv = SkMatrixConvolutionImageFilter::Make(
1309 SkISize::Make(1, 1), 1311 SkISize::Make(1, 1),
1310 nullptr, 1312 nullptr,
1311 gain, 1313 gain,
1312 bias, 1314 bias,
1313 kernelOffset, 1315 kernelOffset,
1314 SkMatrixConvolutionImageFilter::kRepeat_TileMode, 1316 SkMatrixConvolutionImageFilter::kRepeat_TileMode,
1315 false)); 1317 false,
1318 nullptr);
1316 1319
1317 REPORTER_ASSERT(reporter, nullptr == conv.get()); 1320 REPORTER_ASSERT(reporter, nullptr == conv.get());
1318 1321
1319 // Check that a kernel width < 1 gives a nullptr filter. 1322 // Check that a kernel width < 1 gives a nullptr filter.
1320 conv.reset(SkMatrixConvolutionImageFilter::Create( 1323 conv = SkMatrixConvolutionImageFilter::Make(
1321 SkISize::Make(0, 1), 1324 SkISize::Make(0, 1),
1322 kernel, 1325 kernel,
1323 gain, 1326 gain,
1324 bias, 1327 bias,
1325 kernelOffset, 1328 kernelOffset,
1326 SkMatrixConvolutionImageFilter::kRepeat_TileMode, 1329 SkMatrixConvolutionImageFilter::kRepeat_TileMode,
1327 false)); 1330 false,
1331 nullptr);
1328 1332
1329 REPORTER_ASSERT(reporter, nullptr == conv.get()); 1333 REPORTER_ASSERT(reporter, nullptr == conv.get());
1330 1334
1331 // Check that kernel height < 1 gives a nullptr filter. 1335 // Check that kernel height < 1 gives a nullptr filter.
1332 conv.reset(SkMatrixConvolutionImageFilter::Create( 1336 conv = SkMatrixConvolutionImageFilter::Make(
1333 SkISize::Make(1, -1), 1337 SkISize::Make(1, -1),
1334 kernel, 1338 kernel,
1335 gain, 1339 gain,
1336 bias, 1340 bias,
1337 kernelOffset, 1341 kernelOffset,
1338 SkMatrixConvolutionImageFilter::kRepeat_TileMode, 1342 SkMatrixConvolutionImageFilter::kRepeat_TileMode,
1339 false)); 1343 false,
1344 nullptr);
1340 1345
1341 REPORTER_ASSERT(reporter, nullptr == conv.get()); 1346 REPORTER_ASSERT(reporter, nullptr == conv.get());
1342 } 1347 }
1343 1348
1344 static void test_xfermode_cropped_input(SkCanvas* canvas, skiatest::Reporter* re porter) { 1349 static void test_xfermode_cropped_input(SkCanvas* canvas, skiatest::Reporter* re porter) {
1345 canvas->clear(0); 1350 canvas->clear(0);
1346 1351
1347 SkBitmap bitmap; 1352 SkBitmap bitmap;
1348 bitmap.allocN32Pixels(1, 1); 1353 bitmap.allocN32Pixels(1, 1);
1349 bitmap.eraseARGB(255, 255, 255, 255); 1354 bitmap.eraseARGB(255, 255, 255, 255);
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
1704 1709
1705 test_xfermode_cropped_input(&canvas, reporter); 1710 test_xfermode_cropped_input(&canvas, reporter);
1706 } 1711 }
1707 1712
1708 DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(BlurLargeImage_Gpu, reporter, ctxInfo) { 1713 DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(BlurLargeImage_Gpu, reporter, ctxInfo) {
1709 auto surface(SkSurface::MakeRenderTarget(ctxInfo.fGrContext, SkBudgeted::kYe s, 1714 auto surface(SkSurface::MakeRenderTarget(ctxInfo.fGrContext, SkBudgeted::kYe s,
1710 SkImageInfo::MakeN32Premul(100, 100 ))); 1715 SkImageInfo::MakeN32Premul(100, 100 )));
1711 test_large_blur_input(reporter, surface->getCanvas()); 1716 test_large_blur_input(reporter, surface->getCanvas());
1712 } 1717 }
1713 #endif 1718 #endif
OLDNEW
« no previous file with comments | « src/effects/SkMatrixConvolutionImageFilter.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698