From df2487e67dcd14c8b036cfed5b3b8c44d7baeac9 Mon Sep 17 00:00:00 2001 From: Brian Osman Date: Wed, 21 Feb 2024 15:54:33 +0000 Subject: [PATCH] Replace SkColorSpace::filterColor with filterColor4f The old API is deprecated. The new one operates on float colors, but is also explicit about the color space of the source color (and the working space of the filter). Bug: b/40040795 --- .../skia/dl_sk_conversions_unittests.cc | 21 ++++++++++++++----- .../testing/dl_rendering_unittests.cc | 11 +++++++--- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/display_list/skia/dl_sk_conversions_unittests.cc b/display_list/skia/dl_sk_conversions_unittests.cc index f5ea4bce86ff7..f5adf4d2501b0 100644 --- a/display_list/skia/dl_sk_conversions_unittests.cc +++ b/display_list/skia/dl_sk_conversions_unittests.cc @@ -10,6 +10,7 @@ #include "flutter/display_list/effects/dl_color_source.h" #include "flutter/display_list/skia/dl_sk_conversions.h" #include "gtest/gtest.h" +#include "third_party/skia/include/core/SkColorSpace.h" #include "third_party/skia/include/core/SkSamplingOptions.h" #include "third_party/skia/include/core/SkTileMode.h" @@ -142,9 +143,9 @@ TEST(DisplayListSkConversions, ToSkSamplingOptions) { FUNC(kLastSeparableMode) \ FUNC(kLastMode) -TEST(DisplayListSkConversions, ToSkBlendMode) { +TEST(DisplayListSkConversions, ToSkBlendMode){ #define CHECK_TO_SKENUM(V) ASSERT_EQ(ToSk(DlBlendMode::V), SkBlendMode::V); - FOR_EACH_BLEND_MODE_ENUM(CHECK_TO_SKENUM) + FOR_EACH_BLEND_MODE_ENUM(CHECK_TO_SKENUM) #undef CHECK_TO_SKENUM } @@ -155,17 +156,24 @@ TEST(DisplayListSkConversions, BlendColorFilterModifiesTransparency) { << "]"; std::string desc = desc_str.str(); DlBlendColorFilter filter(color, mode); + auto srgb = SkColorSpace::MakeSRGB(); if (filter.modifies_transparent_black()) { auto dl_filter = DlBlendColorFilter::Make(color, mode); auto sk_filter = ToSk(filter); ASSERT_NE(dl_filter, nullptr) << desc; ASSERT_NE(sk_filter, nullptr) << desc; - ASSERT_TRUE(sk_filter->filterColor(0) != 0) << desc; + ASSERT_TRUE(sk_filter->filterColor4f(SkColors::kTransparent, srgb.get(), + srgb.get()) != + SkColors::kTransparent) + << desc; } else { auto dl_filter = DlBlendColorFilter::Make(color, mode); auto sk_filter = ToSk(filter); EXPECT_EQ(dl_filter == nullptr, sk_filter == nullptr) << desc; - ASSERT_TRUE(sk_filter == nullptr || sk_filter->filterColor(0) == 0) + ASSERT_TRUE(sk_filter == nullptr || + sk_filter->filterColor4f(SkColors::kTransparent, srgb.get(), + srgb.get()) == + SkColors::kTransparent) << desc; } }; @@ -266,9 +274,12 @@ TEST(DisplayListSkConversions, MatrixColorFilterModifiesTransparency) { DlMatrixColorFilter filter(matrix); auto dl_filter = DlMatrixColorFilter::Make(matrix); auto sk_filter = ToSk(filter); + auto srgb = SkColorSpace::MakeSRGB(); EXPECT_EQ(dl_filter == nullptr, sk_filter == nullptr); EXPECT_EQ(filter.modifies_transparent_black(), - sk_filter && sk_filter->filterColor(0) != 0); + sk_filter && sk_filter->filterColor4f(SkColors::kTransparent, + srgb.get(), srgb.get()) != + SkColors::kTransparent); }; // Tests identity (matrix[0] already == 1 in an identity filter) diff --git a/display_list/testing/dl_rendering_unittests.cc b/display_list/testing/dl_rendering_unittests.cc index 8e522643dc941..dc99b4f1e4e6e 100644 --- a/display_list/testing/dl_rendering_unittests.cc +++ b/display_list/testing/dl_rendering_unittests.cc @@ -24,6 +24,7 @@ #include "third_party/skia/include/core/SkBBHFactory.h" #include "third_party/skia/include/core/SkColorFilter.h" +#include "third_party/skia/include/core/SkColorSpace.h" #include "third_party/skia/include/core/SkFontMgr.h" #include "third_party/skia/include/core/SkPictureRecorder.h" #include "third_party/skia/include/core/SkStream.h" @@ -2232,8 +2233,8 @@ class CanvasCompareTester { return DirectoryStatus::kCreated; } FML_LOG(ERROR) << "Could not create directory (" << dir - << ") for impeller failure images" - << ", ret = " << ret.get() << ", errno = " << errno; + << ") for impeller failure images" << ", ret = " << ret.get() + << ", errno = " << errno; return DirectoryStatus::kFailed; } @@ -4528,10 +4529,14 @@ class DisplayListNopTest : public DisplayListRendering { auto sk_mode = static_cast(mode); auto sk_color_filter = SkColorFilters::Blend(ToSk(color), sk_mode); + auto srgb = SkColorSpace::MakeSRGB(); int all_flags = 0; if (sk_color_filter) { for (DlColor dst_color : test_dst_colors) { - DlColor result = DlColor(sk_color_filter->filterColor(ToSk(dst_color))); + SkColor4f dst_color_f = SkColor4f::FromColor(ToSk(dst_color)); + DlColor result = DlColor( + sk_color_filter->filterColor4f(dst_color_f, srgb.get(), srgb.get()) + .toSkColor()); all_flags |= check_color_result(dst_color, result, dl, desc); } if ((all_flags & kWasMTB) != 0) {