5 #include "flutter/display_list/display_list_attributes_testing.h" 6 #include "flutter/display_list/display_list_builder.h" 7 #include "flutter/display_list/display_list_color_filter.h" 8 #include "flutter/display_list/types.h" 20 TEST(DisplayListColorFilter, BuilderSetGet) {
32 TEST(DisplayListColorFilter, FromSkiaNullFilter) {
34 ASSERT_EQ(filter,
nullptr);
35 ASSERT_EQ(filter.get(),
nullptr);
38 TEST(DisplayListColorFilter, FromSkiaBlendFilter) {
39 sk_sp<SkColorFilter> sk_filter =
44 ASSERT_EQ(*filter->asBlend(), dl_filter);
48 ASSERT_EQ(filter->asMatrix(),
nullptr);
51 TEST(DisplayListColorFilter, FromSkiaMatrixFilter) {
52 sk_sp<SkColorFilter> sk_filter = SkColorFilters::Matrix(kMatrix);
56 ASSERT_EQ(*filter->asMatrix(), dl_filter);
58 for (
int i = 0; i < 20; i++) {
59 ASSERT_EQ((*matrix_filter)[i], kMatrix[i]);
62 ASSERT_EQ(filter->asBlend(),
nullptr);
65 TEST(DisplayListColorFilter, FromSkiaSrgbToLinearFilter) {
66 sk_sp<SkColorFilter> sk_filter = SkColorFilters::SRGBToLinearGamma();
70 ASSERT_EQ(filter->asBlend(),
nullptr);
71 ASSERT_EQ(filter->asMatrix(),
nullptr);
74 TEST(DisplayListColorFilter, FromSkiaLinearToSrgbFilter) {
75 sk_sp<SkColorFilter> sk_filter = SkColorFilters::LinearToSRGBGamma();
79 ASSERT_EQ(filter->asBlend(),
nullptr);
80 ASSERT_EQ(filter->asMatrix(),
nullptr);
83 TEST(DisplayListColorFilter, FromSkiaUnrecognizedFilter) {
84 sk_sp<SkColorFilter> sk_inputA =
86 sk_sp<SkColorFilter> sk_inputB =
88 sk_sp<SkColorFilter> sk_filter =
89 SkColorFilters::Compose(sk_inputA, sk_inputB);
92 ASSERT_EQ(filter->skia_object(), sk_filter);
94 ASSERT_EQ(filter->asBlend(),
nullptr);
95 ASSERT_EQ(filter->asMatrix(),
nullptr);
98 TEST(DisplayListColorFilter, BlendConstructor) {
102 TEST(DisplayListColorFilter, BlendShared) {
104 ASSERT_NE(filter.
shared().get(), &filter);
105 ASSERT_EQ(*filter.
shared(), filter);
108 TEST(DisplayListColorFilter, BlendAsBlend) {
110 ASSERT_NE(filter.
asBlend(),
nullptr);
111 ASSERT_EQ(filter.
asBlend(), &filter);
114 TEST(DisplayListColorFilter, BlendContents) {
120 TEST(DisplayListColorFilter, BlendEquals) {
126 TEST(DisplayListColorFilter, BlendNotEquals) {
134 TEST(DisplayListColorFilter, NopBlendShouldNotCrash) {
139 TEST(DisplayListColorFilter, MatrixConstructor) {
143 TEST(DisplayListColorFilter, MatrixShared) {
145 ASSERT_NE(filter.
shared().get(), &filter);
146 ASSERT_EQ(*filter.
shared(), filter);
149 TEST(DisplayListColorFilter, MatrixAsMatrix) {
151 ASSERT_NE(filter.
asMatrix(),
nullptr);
152 ASSERT_EQ(filter.
asMatrix(), &filter);
155 TEST(DisplayListColorFilter, MatrixContents) {
157 memcpy(matrix_, kMatrix,
sizeof(matrix_));
161 for (
int i = 0; i < 20; i++) {
162 ASSERT_EQ(filter[i], matrix_[i]);
168 for (
int i = 0; i < 20; i++) {
169 ASSERT_EQ(matrix2[i], matrix_[i]);
173 float original_value = matrix_[4];
175 ASSERT_EQ(filter[4], original_value);
178 TEST(DisplayListColorFilter, MatrixEquals) {
184 TEST(DisplayListColorFilter, MatrixNotEquals) {
186 memcpy(matrix_, kMatrix,
sizeof(matrix_));
193 TEST(DisplayListColorFilter, NopMatrixShouldNotCrash) {
204 TEST(DisplayListColorFilter, SrgbToLinearConstructor) {
208 TEST(DisplayListColorFilter, SrgbToLinearShared) {
210 ASSERT_NE(filter.
shared().get(), &filter);
211 ASSERT_EQ(*filter.
shared(), filter);
214 TEST(DisplayListColorFilter, SrgbToLinearEquals) {
221 TEST(DisplayListColorFilter, LinearToSrgbConstructor) {
225 TEST(DisplayListColorFilter, LinearToSrgbShared) {
227 ASSERT_NE(filter.
shared().get(), &filter);
228 ASSERT_EQ(*filter.
shared(), filter);
231 TEST(DisplayListColorFilter, LinearToSrgbEquals) {
238 TEST(DisplayListColorFilter, UnknownConstructor) {
242 TEST(DisplayListColorFilter, UnknownShared) {
244 ASSERT_NE(filter.
shared().get(), &filter);
245 ASSERT_EQ(*filter.
shared(), filter);
248 TEST(DisplayListColorFilter, UnknownContents) {
249 sk_sp<SkColorFilter> sk_filter = SkColorFilters::LinearToSRGBGamma();
252 ASSERT_EQ(sk_filter.get(), filter.
skia_object().get());
255 TEST(DisplayListColorFilter, UnknownEquals) {
256 sk_sp<SkColorFilter> sk_filter = SkColorFilters::LinearToSRGBGamma();
262 TEST(DisplayListColorFilter, UnknownNotEquals) {
270 TestNotEquals(filter1, filter2,
"SkColorFilter instance differs");
void get_matrix(float matrix[20]) const
bool Equals(const T *a, const T *b)
static constexpr DlColor kRed()
std::shared_ptr< const DlColorFilter > getColorFilter() const
TEST(DisplayListColorFilter, BuilderSetGet)
static void TestNotEquals(T &source1, T &source2, std::string label)
static const float kMatrix[20]
static constexpr DlColor kBlue()
std::shared_ptr< DlColorFilter > shared() const override
multiply or screen, depending on destination
static const std::shared_ptr< DlLinearToSrgbGammaColorFilter > instance
void setColorFilter(const DlColorFilter *filter) override
static std::shared_ptr< DlColorFilter > From(SkColorFilter *sk_filter)
bool modifies_transparent_black() const override
const DlBlendColorFilter * asBlend() const override
static constexpr DlColor kTransparent()
sk_sp< SkColorFilter > skia_object() const override
std::shared_ptr< DlColorFilter > shared() const override
static const std::shared_ptr< DlSrgbToLinearGammaColorFilter > instance
const DlMatrixColorFilter * asMatrix() const override
std::shared_ptr< DlColorFilter > shared() const override
static void TestEquals(T &source1, T &source2)
bool modifies_transparent_black() const override
std::shared_ptr< DlColorFilter > shared() const override
std::shared_ptr< DlColorFilter > shared() const override