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 "SkBlurImageFilter.h" | 9 #include "SkBlurImageFilter.h" |
10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 } | 254 } |
255 { | 255 { |
256 SkPaint paint; | 256 SkPaint paint; |
257 paint.setShader(SkPerlinNoiseShader::MakeTurbulence(SK_Scalar1, SK_S
calar1, 1, 0)); | 257 paint.setShader(SkPerlinNoiseShader::MakeTurbulence(SK_Scalar1, SK_S
calar1, 1, 0)); |
258 sk_sp<SkImageFilter> paintFilter(SkPaintImageFilter::Make(paint)); | 258 sk_sp<SkImageFilter> paintFilter(SkPaintImageFilter::Make(paint)); |
259 | 259 |
260 this->addFilter("paint and blur", SkBlurImageFilter::Make(five, five
, | 260 this->addFilter("paint and blur", SkBlurImageFilter::Make(five, five
, |
261 std::move(
paintFilter), | 261 std::move(
paintFilter), |
262 cropRect))
; | 262 cropRect))
; |
263 } | 263 } |
264 this->addFilter("xfermode", SkXfermodeImageFilter::Make( | 264 this->addFilter("xfermode", SkXfermodeImageFilter::Make(SkBlendMode::kSr
c, input, input, |
265 SkXfermode::Make(SkXfermode::kSrc_Mode), input, input, cropRect)); | 265 cropRect)); |
266 } | 266 } |
267 int count() const { return fFilters.count(); } | 267 int count() const { return fFilters.count(); } |
268 SkImageFilter* getFilter(int index) const { return fFilters[index].fFilter.g
et(); } | 268 SkImageFilter* getFilter(int index) const { return fFilters[index].fFilter.g
et(); } |
269 const char* getName(int index) const { return fFilters[index].fName; } | 269 const char* getName(int index) const { return fFilters[index].fName; } |
270 private: | 270 private: |
271 struct Filter { | 271 struct Filter { |
272 Filter() : fName(nullptr) {} | 272 Filter() : fName(nullptr) {} |
273 Filter(const char* name, sk_sp<SkImageFilter> filter) | 273 Filter(const char* name, sk_sp<SkImageFilter> filter) |
274 : fName(name) | 274 : fName(name) |
275 , fFilter(std::move(filter)) { | 275 , fFilter(std::move(filter)) { |
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
931 SkRect boundsDst = composedFilter->computeFastBounds(boundsSrc); | 931 SkRect boundsDst = composedFilter->computeFastBounds(boundsSrc); |
932 | 932 |
933 REPORTER_ASSERT(reporter, boundsDst == expectedBounds); | 933 REPORTER_ASSERT(reporter, boundsDst == expectedBounds); |
934 } | 934 } |
935 | 935 |
936 DEF_TEST(ImageFilterUnionBounds, reporter) { | 936 DEF_TEST(ImageFilterUnionBounds, reporter) { |
937 sk_sp<SkImageFilter> offset(SkOffsetImageFilter::Make(50, 0, nullptr)); | 937 sk_sp<SkImageFilter> offset(SkOffsetImageFilter::Make(50, 0, nullptr)); |
938 // Regardless of which order they appear in, the image filter bounds should | 938 // Regardless of which order they appear in, the image filter bounds should |
939 // be combined correctly. | 939 // be combined correctly. |
940 { | 940 { |
941 sk_sp<SkImageFilter> composite(SkXfermodeImageFilter::Make(nullptr, offs
et)); | 941 sk_sp<SkImageFilter> composite(SkXfermodeImageFilter::Make(SkBlendMode::
kSrcOver, offset)); |
942 SkRect bounds = SkRect::MakeWH(100, 100); | 942 SkRect bounds = SkRect::MakeWH(100, 100); |
943 // Intentionally aliasing here, as that's what the real callers do. | 943 // Intentionally aliasing here, as that's what the real callers do. |
944 bounds = composite->computeFastBounds(bounds); | 944 bounds = composite->computeFastBounds(bounds); |
945 REPORTER_ASSERT(reporter, bounds == SkRect::MakeWH(150, 100)); | 945 REPORTER_ASSERT(reporter, bounds == SkRect::MakeWH(150, 100)); |
946 } | 946 } |
947 { | 947 { |
948 sk_sp<SkImageFilter> composite(SkXfermodeImageFilter::Make(nullptr, null
ptr, | 948 sk_sp<SkImageFilter> composite(SkXfermodeImageFilter::Make(SkBlendMode::
kSrcOver, nullptr, |
949 offset, nullp
tr)); | 949 offset, nullp
tr)); |
950 SkRect bounds = SkRect::MakeWH(100, 100); | 950 SkRect bounds = SkRect::MakeWH(100, 100); |
951 // Intentionally aliasing here, as that's what the real callers do. | 951 // Intentionally aliasing here, as that's what the real callers do. |
952 bounds = composite->computeFastBounds(bounds); | 952 bounds = composite->computeFastBounds(bounds); |
953 REPORTER_ASSERT(reporter, bounds == SkRect::MakeWH(150, 100)); | 953 REPORTER_ASSERT(reporter, bounds == SkRect::MakeWH(150, 100)); |
954 } | 954 } |
955 } | 955 } |
956 | 956 |
957 static void test_imagefilter_merge_result_size(skiatest::Reporter* reporter, GrC
ontext* context) { | 957 static void test_imagefilter_merge_result_size(skiatest::Reporter* reporter, GrC
ontext* context) { |
958 SkBitmap greenBM; | 958 SkBitmap greenBM; |
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1425 bitmap.eraseARGB(255, 255, 255, 255); | 1425 bitmap.eraseARGB(255, 255, 255, 255); |
1426 | 1426 |
1427 sk_sp<SkColorFilter> green(SkColorFilter::MakeModeFilter(SK_ColorGREEN, | 1427 sk_sp<SkColorFilter> green(SkColorFilter::MakeModeFilter(SK_ColorGREEN, |
1428 SkXfermode::kSrcIn_
Mode)); | 1428 SkXfermode::kSrcIn_
Mode)); |
1429 sk_sp<SkImageFilter> greenFilter(SkColorFilterImageFilter::Make(green, nullp
tr)); | 1429 sk_sp<SkImageFilter> greenFilter(SkColorFilterImageFilter::Make(green, nullp
tr)); |
1430 SkImageFilter::CropRect cropRect(SkRect::MakeEmpty()); | 1430 SkImageFilter::CropRect cropRect(SkRect::MakeEmpty()); |
1431 sk_sp<SkImageFilter> croppedOut(SkColorFilterImageFilter::Make(green, nullpt
r, &cropRect)); | 1431 sk_sp<SkImageFilter> croppedOut(SkColorFilterImageFilter::Make(green, nullpt
r, &cropRect)); |
1432 | 1432 |
1433 // Check that an xfermode image filter whose input has been cropped out stil
l draws the other | 1433 // Check that an xfermode image filter whose input has been cropped out stil
l draws the other |
1434 // input. Also check that drawing with both inputs cropped out doesn't cause
a GPU warning. | 1434 // input. Also check that drawing with both inputs cropped out doesn't cause
a GPU warning. |
1435 sk_sp<SkXfermode> mode(SkXfermode::Make(SkXfermode::kSrcOver_Mode)); | 1435 SkBlendMode mode = SkBlendMode::kSrcOver; |
1436 sk_sp<SkImageFilter> xfermodeNoFg(SkXfermodeImageFilter::Make(mode, greenFil
ter, | 1436 sk_sp<SkImageFilter> xfermodeNoFg(SkXfermodeImageFilter::Make(mode, greenFil
ter, |
1437 croppedOut, nu
llptr)); | 1437 croppedOut, nu
llptr)); |
1438 sk_sp<SkImageFilter> xfermodeNoBg(SkXfermodeImageFilter::Make(mode, croppedO
ut, | 1438 sk_sp<SkImageFilter> xfermodeNoBg(SkXfermodeImageFilter::Make(mode, croppedO
ut, |
1439 greenFilter, n
ullptr)); | 1439 greenFilter, n
ullptr)); |
1440 sk_sp<SkImageFilter> xfermodeNoFgNoBg(SkXfermodeImageFilter::Make(mode, crop
pedOut, | 1440 sk_sp<SkImageFilter> xfermodeNoFgNoBg(SkXfermodeImageFilter::Make(mode, crop
pedOut, |
1441 croppedOut
, nullptr)); | 1441 croppedOut
, nullptr)); |
1442 | 1442 |
1443 SkPaint paint; | 1443 SkPaint paint; |
1444 paint.setImageFilter(std::move(xfermodeNoFg)); | 1444 paint.setImageFilter(std::move(xfermodeNoFg)); |
1445 canvas->drawBitmap(bitmap, 0, 0, &paint); // drawSprite | 1445 canvas->drawBitmap(bitmap, 0, 0, &paint); // drawSprite |
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1866 { SkColorFilterImageFilter::Make(cf, blif), false }, | 1866 { SkColorFilterImageFilter::Make(cf, blif), false }, |
1867 { SkMergeImageFilter::Make(cfif, blif), false }, | 1867 { SkMergeImageFilter::Make(cfif, blif), false }, |
1868 { SkComposeImageFilter::Make(blif, cfif), false }, | 1868 { SkComposeImageFilter::Make(blif, cfif), false }, |
1869 }; | 1869 }; |
1870 | 1870 |
1871 for (const auto& rec : recs) { | 1871 for (const auto& rec : recs) { |
1872 const bool canHandle = rec.fFilter->canHandleComplexCTM(); | 1872 const bool canHandle = rec.fFilter->canHandleComplexCTM(); |
1873 REPORTER_ASSERT(reporter, canHandle == rec.fExpectCanHandle); | 1873 REPORTER_ASSERT(reporter, canHandle == rec.fExpectCanHandle); |
1874 } | 1874 } |
1875 } | 1875 } |
OLD | NEW |