Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 9975c85

Browse files
authored
[DisplayList] migrate DlColorFilter objects to new source layout (#56785)
A new source code/header structure was introduced when the DlColorSource and DlImageFilter objects were migrated to Impeller geometry classes. Even though the DlColorFilter objects did not depend on Skia geometry objects, they need to be updated to the new source layout for consistency.
1 parent 3a63daf commit 9975c85

40 files changed

+769
-550
lines changed

ci/licenses_golden/licenses_flutter

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42532,6 +42532,14 @@ ORIGIN: ../../../flutter/display_list/dl_storage.h + ../../../flutter/LICENSE
4253242532
ORIGIN: ../../../flutter/display_list/dl_tile_mode.h + ../../../flutter/LICENSE
4253342533
ORIGIN: ../../../flutter/display_list/dl_vertices.cc + ../../../flutter/LICENSE
4253442534
ORIGIN: ../../../flutter/display_list/dl_vertices.h + ../../../flutter/LICENSE
42535+
ORIGIN: ../../../flutter/display_list/effects/color_filters/dl_blend_color_filter.cc + ../../../flutter/LICENSE
42536+
ORIGIN: ../../../flutter/display_list/effects/color_filters/dl_blend_color_filter.h + ../../../flutter/LICENSE
42537+
ORIGIN: ../../../flutter/display_list/effects/color_filters/dl_linear_to_srgb_gamma_color_filter.cc + ../../../flutter/LICENSE
42538+
ORIGIN: ../../../flutter/display_list/effects/color_filters/dl_linear_to_srgb_gamma_color_filter.h + ../../../flutter/LICENSE
42539+
ORIGIN: ../../../flutter/display_list/effects/color_filters/dl_matrix_color_filter.cc + ../../../flutter/LICENSE
42540+
ORIGIN: ../../../flutter/display_list/effects/color_filters/dl_matrix_color_filter.h + ../../../flutter/LICENSE
42541+
ORIGIN: ../../../flutter/display_list/effects/color_filters/dl_srgb_to_linear_gamma_color_filter.cc + ../../../flutter/LICENSE
42542+
ORIGIN: ../../../flutter/display_list/effects/color_filters/dl_srgb_to_linear_gamma_color_filter.h + ../../../flutter/LICENSE
4253542543
ORIGIN: ../../../flutter/display_list/effects/color_sources/dl_color_color_source.cc + ../../../flutter/LICENSE
4253642544
ORIGIN: ../../../flutter/display_list/effects/color_sources/dl_color_color_source.h + ../../../flutter/LICENSE
4253742545
ORIGIN: ../../../flutter/display_list/effects/color_sources/dl_conical_gradient_color_source.cc + ../../../flutter/LICENSE
@@ -42550,6 +42558,7 @@ ORIGIN: ../../../flutter/display_list/effects/color_sources/dl_sweep_gradient_co
4255042558
ORIGIN: ../../../flutter/display_list/effects/color_sources/dl_sweep_gradient_color_source.h + ../../../flutter/LICENSE
4255142559
ORIGIN: ../../../flutter/display_list/effects/dl_color_filter.cc + ../../../flutter/LICENSE
4255242560
ORIGIN: ../../../flutter/display_list/effects/dl_color_filter.h + ../../../flutter/LICENSE
42561+
ORIGIN: ../../../flutter/display_list/effects/dl_color_filters.h + ../../../flutter/LICENSE
4255342562
ORIGIN: ../../../flutter/display_list/effects/dl_color_source.cc + ../../../flutter/LICENSE
4255442563
ORIGIN: ../../../flutter/display_list/effects/dl_color_source.h + ../../../flutter/LICENSE
4255542564
ORIGIN: ../../../flutter/display_list/effects/dl_color_sources.h + ../../../flutter/LICENSE
@@ -45450,6 +45459,14 @@ FILE: ../../../flutter/display_list/dl_storage.h
4545045459
FILE: ../../../flutter/display_list/dl_tile_mode.h
4545145460
FILE: ../../../flutter/display_list/dl_vertices.cc
4545245461
FILE: ../../../flutter/display_list/dl_vertices.h
45462+
FILE: ../../../flutter/display_list/effects/color_filters/dl_blend_color_filter.cc
45463+
FILE: ../../../flutter/display_list/effects/color_filters/dl_blend_color_filter.h
45464+
FILE: ../../../flutter/display_list/effects/color_filters/dl_linear_to_srgb_gamma_color_filter.cc
45465+
FILE: ../../../flutter/display_list/effects/color_filters/dl_linear_to_srgb_gamma_color_filter.h
45466+
FILE: ../../../flutter/display_list/effects/color_filters/dl_matrix_color_filter.cc
45467+
FILE: ../../../flutter/display_list/effects/color_filters/dl_matrix_color_filter.h
45468+
FILE: ../../../flutter/display_list/effects/color_filters/dl_srgb_to_linear_gamma_color_filter.cc
45469+
FILE: ../../../flutter/display_list/effects/color_filters/dl_srgb_to_linear_gamma_color_filter.h
4545345470
FILE: ../../../flutter/display_list/effects/color_sources/dl_color_color_source.cc
4545445471
FILE: ../../../flutter/display_list/effects/color_sources/dl_color_color_source.h
4545545472
FILE: ../../../flutter/display_list/effects/color_sources/dl_conical_gradient_color_source.cc
@@ -45468,6 +45485,7 @@ FILE: ../../../flutter/display_list/effects/color_sources/dl_sweep_gradient_colo
4546845485
FILE: ../../../flutter/display_list/effects/color_sources/dl_sweep_gradient_color_source.h
4546945486
FILE: ../../../flutter/display_list/effects/dl_color_filter.cc
4547045487
FILE: ../../../flutter/display_list/effects/dl_color_filter.h
45488+
FILE: ../../../flutter/display_list/effects/dl_color_filters.h
4547145489
FILE: ../../../flutter/display_list/effects/dl_color_source.cc
4547245490
FILE: ../../../flutter/display_list/effects/dl_color_source.h
4547345491
FILE: ../../../flutter/display_list/effects/dl_color_sources.h

display_list/BUILD.gn

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ source_set("display_list") {
4747
"dl_tile_mode.h",
4848
"dl_vertices.cc",
4949
"dl_vertices.h",
50+
"effects/color_filters/dl_blend_color_filter.cc",
51+
"effects/color_filters/dl_blend_color_filter.h",
52+
"effects/color_filters/dl_linear_to_srgb_gamma_color_filter.cc",
53+
"effects/color_filters/dl_linear_to_srgb_gamma_color_filter.h",
54+
"effects/color_filters/dl_matrix_color_filter.cc",
55+
"effects/color_filters/dl_matrix_color_filter.h",
56+
"effects/color_filters/dl_srgb_to_linear_gamma_color_filter.cc",
57+
"effects/color_filters/dl_srgb_to_linear_gamma_color_filter.h",
5058
"effects/color_sources/dl_color_color_source.cc",
5159
"effects/color_sources/dl_color_color_source.h",
5260
"effects/color_sources/dl_conical_gradient_color_source.cc",
@@ -63,8 +71,10 @@ source_set("display_list") {
6371
"effects/color_sources/dl_sweep_gradient_color_source.h",
6472
"effects/dl_color_filter.cc",
6573
"effects/dl_color_filter.h",
74+
"effects/dl_color_filters.h",
6675
"effects/dl_color_source.cc",
6776
"effects/dl_color_source.h",
77+
"effects/dl_color_sources.h",
6878
"effects/dl_image_filter.cc",
6979
"effects/dl_image_filter.h",
7080
"effects/dl_image_filters.h",

display_list/display_list_unittests.cc

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ TEST_F(DisplayListTest, BuildRestoresAttributes) {
518518
builder.Build();
519519
check_defaults(builder, cull_rect);
520520

521-
receiver.setColorFilter(&kTestMatrixColorFilter1);
521+
receiver.setColorFilter(kTestMatrixColorFilter1.get());
522522
builder.Build();
523523
check_defaults(builder, cull_rect);
524524

@@ -940,7 +940,7 @@ TEST_F(DisplayListTest, DisplayListSaveLayerBoundsWithAlphaFilter) {
940940
0, 0, 0, 1, 0,
941941
};
942942
// clang-format on
943-
DlMatrixColorFilter base_color_filter(color_matrix);
943+
auto base_color_filter = DlColorFilter::MakeMatrix(color_matrix);
944944
// clang-format off
945945
const float alpha_matrix[] = {
946946
0, 0, 0, 0, 0,
@@ -949,7 +949,7 @@ TEST_F(DisplayListTest, DisplayListSaveLayerBoundsWithAlphaFilter) {
949949
0, 0, 0, 0, 1,
950950
};
951951
// clang-format on
952-
DlMatrixColorFilter alpha_color_filter(alpha_matrix);
952+
auto alpha_color_filter = DlColorFilter::MakeMatrix(alpha_matrix);
953953
sk_sp<SkColorFilter> sk_alpha_color_filter =
954954
SkColorFilters::Matrix(alpha_matrix);
955955

@@ -967,7 +967,7 @@ TEST_F(DisplayListTest, DisplayListSaveLayerBoundsWithAlphaFilter) {
967967
// Now checking that a normal color filter still produces rect bounds
968968
DisplayListBuilder builder(build_bounds);
969969
DlPaint save_paint;
970-
save_paint.setColorFilter(&base_color_filter);
970+
save_paint.setColorFilter(base_color_filter);
971971
builder.SaveLayer(&save_bounds, &save_paint);
972972
builder.DrawRect(rect, DlPaint());
973973
builder.Restore();
@@ -999,7 +999,7 @@ TEST_F(DisplayListTest, DisplayListSaveLayerBoundsWithAlphaFilter) {
999999
// save layer that modifies an unbounded region
10001000
DisplayListBuilder builder(build_bounds);
10011001
DlPaint save_paint;
1002-
save_paint.setColorFilter(&alpha_color_filter);
1002+
save_paint.setColorFilter(alpha_color_filter);
10031003
builder.SaveLayer(&save_bounds, &save_paint);
10041004
builder.DrawRect(rect, DlPaint());
10051005
builder.Restore();
@@ -1012,7 +1012,7 @@ TEST_F(DisplayListTest, DisplayListSaveLayerBoundsWithAlphaFilter) {
10121012
// to the behavior in the previous example
10131013
DisplayListBuilder builder(build_bounds);
10141014
DlPaint save_paint;
1015-
save_paint.setColorFilter(&alpha_color_filter);
1015+
save_paint.setColorFilter(alpha_color_filter);
10161016
builder.SaveLayer(nullptr, &save_paint);
10171017
builder.DrawRect(rect, DlPaint());
10181018
builder.Restore();
@@ -1668,7 +1668,7 @@ TEST_F(DisplayListTest, SaveLayerColorFilterDoesNotInheritOpacity) {
16681668
DisplayListBuilder builder;
16691669
DlPaint save_paint;
16701670
save_paint.setColor(DlColor(SkColorSetARGB(127, 255, 255, 255)));
1671-
save_paint.setColorFilter(&kTestMatrixColorFilter1);
1671+
save_paint.setColorFilter(kTestMatrixColorFilter1);
16721672
builder.SaveLayer(nullptr, &save_paint);
16731673
builder.DrawRect(SkRect{10, 10, 20, 20}, DlPaint());
16741674
builder.Restore();
@@ -1720,7 +1720,7 @@ TEST_F(DisplayListTest, SaveLayerColorFilterOnChildDoesNotInheritOpacity) {
17201720
save_paint.setColor(DlColor(SkColorSetARGB(127, 255, 255, 255)));
17211721
builder.SaveLayer(nullptr, &save_paint);
17221722
DlPaint draw_paint = save_paint;
1723-
draw_paint.setColorFilter(&kTestMatrixColorFilter1);
1723+
draw_paint.setColorFilter(kTestMatrixColorFilter1);
17241724
builder.DrawRect(SkRect{10, 10, 20, 20}, draw_paint);
17251725
builder.Restore();
17261726

@@ -2671,7 +2671,7 @@ TEST_F(DisplayListTest, RemoveUnnecessarySaveRestorePairsInSetPaint) {
26712671
0, 0, 0, 0, 1,
26722672
};
26732673
// clang-format on
2674-
DlMatrixColorFilter alpha_color_filter(alpha_matrix);
2674+
auto alpha_color_filter = DlColorFilter::MakeMatrix(alpha_matrix);
26752675
// Making sure hiding a problematic ColorFilter as an ImageFilter
26762676
// will generate the same behavior as setting it as a ColorFilter
26772677

@@ -3957,7 +3957,7 @@ TEST_F(DisplayListTest, FloodingSaveLayerBoundsComputationOfSimpleRect) {
39573957
SkRect rect = SkRect::MakeLTRB(100.0f, 100.0f, 200.0f, 200.0f);
39583958
DlPaint save_paint;
39593959
auto color_filter =
3960-
DlBlendColorFilter::Make(DlColor::kRed(), DlBlendMode::kSrc);
3960+
DlColorFilter::MakeBlend(DlColor::kRed(), DlBlendMode::kSrc);
39613961
ASSERT_TRUE(color_filter->modifies_transparent_black());
39623962
save_paint.setColorFilter(color_filter);
39633963
SkRect clip_rect = rect.makeOutset(100.0f, 100.0f);
@@ -3983,7 +3983,7 @@ TEST_F(DisplayListTest, NestedFloodingSaveLayerBoundsComputationOfSimpleRect) {
39833983
SkRect rect = SkRect::MakeLTRB(100.0f, 100.0f, 200.0f, 200.0f);
39843984
DlPaint save_paint;
39853985
auto color_filter =
3986-
DlBlendColorFilter::Make(DlColor::kRed(), DlBlendMode::kSrc);
3986+
DlColorFilter::MakeBlend(DlColor::kRed(), DlBlendMode::kSrc);
39873987
ASSERT_TRUE(color_filter->modifies_transparent_black());
39883988
save_paint.setColorFilter(color_filter);
39893989
SkRect clip_rect = rect.makeOutset(100.0f, 100.0f);
@@ -4016,7 +4016,7 @@ TEST_F(DisplayListTest, SaveLayerBoundsComputationOfFloodingImageFilter) {
40164016
SkRect rect = SkRect::MakeLTRB(100.0f, 100.0f, 200.0f, 200.0f);
40174017
DlPaint draw_paint;
40184018
auto color_filter =
4019-
DlBlendColorFilter::Make(DlColor::kRed(), DlBlendMode::kSrc);
4019+
DlColorFilter::MakeBlend(DlColor::kRed(), DlBlendMode::kSrc);
40204020
ASSERT_TRUE(color_filter->modifies_transparent_black());
40214021
auto image_filter = DlImageFilter::MakeColorFilter(color_filter);
40224022
draw_paint.setImageFilter(image_filter);
@@ -4043,7 +4043,7 @@ TEST_F(DisplayListTest, SaveLayerBoundsComputationOfFloodingColorFilter) {
40434043
SkRect rect = SkRect::MakeLTRB(100.0f, 100.0f, 200.0f, 200.0f);
40444044
DlPaint draw_paint;
40454045
auto color_filter =
4046-
DlBlendColorFilter::Make(DlColor::kRed(), DlBlendMode::kSrc);
4046+
DlColorFilter::MakeBlend(DlColor::kRed(), DlBlendMode::kSrc);
40474047
ASSERT_TRUE(color_filter->modifies_transparent_black());
40484048
draw_paint.setColorFilter(color_filter);
40494049
SkRect clip_rect = rect.makeOutset(100.0f, 100.0f);
@@ -4233,7 +4233,7 @@ TEST_F(DisplayListTest, FloodingFilteredLayerPushesRestoreOpIndex) {
42334233
0.5f, 0.0f, 0.0f, 0.0f, 0.5f
42344234
};
42354235
// clang-format on
4236-
auto color_filter = DlMatrixColorFilter::Make(matrix);
4236+
auto color_filter = DlColorFilter::MakeMatrix(matrix);
42374237
save_paint.setImageFilter(DlImageFilter::MakeColorFilter(color_filter));
42384238
builder.SaveLayer(nullptr, &save_paint);
42394239
int save_layer_id = DisplayListBuilderTestingLastOpIndex(builder);
@@ -5817,7 +5817,7 @@ TEST_F(DisplayListTest, UnboundedRenderOpsAreReportedUnlessClipped) {
58175817
0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
58185818
};
58195819
// clang-format on
5820-
auto unbounded_cf = DlMatrixColorFilter::Make(matrix);
5820+
auto unbounded_cf = DlColorFilter::MakeMatrix(matrix);
58215821
// ColorFilter must modify transparent black to be "unbounded"
58225822
ASSERT_TRUE(unbounded_cf->modifies_transparent_black());
58235823
auto unbounded_if = DlImageFilter::MakeColorFilter(unbounded_cf);

display_list/dl_builder.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "flutter/display_list/dl_blend_mode.h"
99
#include "flutter/display_list/dl_op_flags.h"
1010
#include "flutter/display_list/dl_op_records.h"
11+
#include "flutter/display_list/effects/dl_color_filters.h"
1112
#include "flutter/display_list/effects/dl_color_source.h"
1213
#include "flutter/display_list/effects/dl_image_filters.h"
1314
#include "flutter/display_list/utils/dl_accumulation_rect.h"

display_list/dl_paint_unittests.cc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "flutter/display_list/dl_paint.h"
66

7+
#include "flutter/display_list/testing/dl_test_equality.h"
78
#include "flutter/display_list/utils/dl_comparable.h"
89
#include "gtest/gtest.h"
910

@@ -58,8 +59,9 @@ TEST(DisplayListPaint, ConstructorDefaults) {
5859
auto color_source = DlColorSource::MakeColor(DlColor::kMagenta());
5960
EXPECT_NE(paint, DlPaint().setColorSource(color_source));
6061

61-
DlBlendColorFilter color_filter(DlColor::kYellow(), DlBlendMode::kDstIn);
62-
EXPECT_NE(paint, DlPaint().setColorFilter(color_filter.shared()));
62+
auto color_filter =
63+
DlColorFilter::MakeBlend(DlColor::kYellow(), DlBlendMode::kDstATop);
64+
EXPECT_NE(paint, DlPaint().setColorFilter(color_filter));
6365

6466
auto image_filter = DlImageFilter::MakeBlur(1.3, 4.7, DlTileMode::kClamp);
6567
EXPECT_NE(paint, DlPaint().setImageFilter(image_filter));
@@ -107,8 +109,7 @@ TEST(DisplayListPaint, ChainingConstructor) {
107109
.setStrokeMiter(1.5) //
108110
.setColorSource(DlColorSource::MakeColor(DlColor::kMagenta())) //
109111
.setColorFilter(
110-
DlBlendColorFilter(DlColor::kYellow(), DlBlendMode::kDstIn)
111-
.shared())
112+
DlColorFilter::MakeBlend(DlColor::kYellow(), DlBlendMode::kDstIn))
112113
.setImageFilter(DlImageFilter::MakeBlur(1.3, 4.7, DlTileMode::kClamp))
113114
.setMaskFilter(DlBlurMaskFilter(DlBlurStyle::kInner, 3.14).shared());
114115
EXPECT_TRUE(paint.isAntiAlias());
@@ -123,8 +124,9 @@ TEST(DisplayListPaint, ChainingConstructor) {
123124
EXPECT_EQ(paint.getStrokeMiter(), 1.5);
124125
EXPECT_TRUE(Equals(paint.getColorSource(),
125126
DlColorSource::MakeColor(DlColor::kMagenta())));
126-
EXPECT_EQ(*paint.getColorFilter(),
127-
DlBlendColorFilter(DlColor::kYellow(), DlBlendMode::kDstIn));
127+
EXPECT_TRUE(Equals(
128+
paint.getColorFilter(),
129+
DlColorFilter::MakeBlend(DlColor::kYellow(), DlBlendMode::kDstIn)));
128130
EXPECT_TRUE(Equals(paint.getImageFilter(),
129131
DlImageFilter::MakeBlur(1.3, 4.7, DlTileMode::kClamp)));
130132
EXPECT_EQ(*paint.getMaskFilter(),
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
#include "flutter/display_list/effects/color_filters/dl_blend_color_filter.h"
6+
7+
namespace flutter {
8+
9+
std::shared_ptr<const DlColorFilter> DlBlendColorFilter::Make(
10+
DlColor color,
11+
DlBlendMode mode) {
12+
switch (mode) {
13+
case DlBlendMode::kDst: {
14+
return nullptr;
15+
}
16+
case DlBlendMode::kSrcOver: {
17+
if (color.isTransparent()) {
18+
return nullptr;
19+
}
20+
if (color.isOpaque()) {
21+
mode = DlBlendMode::kSrc;
22+
}
23+
break;
24+
}
25+
case DlBlendMode::kDstOver:
26+
case DlBlendMode::kDstOut:
27+
case DlBlendMode::kSrcATop:
28+
case DlBlendMode::kXor:
29+
case DlBlendMode::kDarken: {
30+
if (color.isTransparent()) {
31+
return nullptr;
32+
}
33+
break;
34+
}
35+
case DlBlendMode::kDstIn: {
36+
if (color.isOpaque()) {
37+
return nullptr;
38+
}
39+
break;
40+
}
41+
default:
42+
break;
43+
}
44+
return std::make_shared<DlBlendColorFilter>(color, mode);
45+
}
46+
47+
bool DlBlendColorFilter::modifies_transparent_black() const {
48+
switch (mode_) {
49+
// These modes all act like kSrc when the dest is all 0s.
50+
// So they modify transparent black when the src color is
51+
// not transparent.
52+
case DlBlendMode::kSrc:
53+
case DlBlendMode::kSrcOver:
54+
case DlBlendMode::kDstOver:
55+
case DlBlendMode::kSrcOut:
56+
case DlBlendMode::kDstATop:
57+
case DlBlendMode::kXor:
58+
case DlBlendMode::kPlus:
59+
case DlBlendMode::kScreen:
60+
case DlBlendMode::kOverlay:
61+
case DlBlendMode::kDarken:
62+
case DlBlendMode::kLighten:
63+
case DlBlendMode::kColorDodge:
64+
case DlBlendMode::kColorBurn:
65+
case DlBlendMode::kHardLight:
66+
case DlBlendMode::kSoftLight:
67+
case DlBlendMode::kDifference:
68+
case DlBlendMode::kExclusion:
69+
case DlBlendMode::kMultiply:
70+
case DlBlendMode::kHue:
71+
case DlBlendMode::kSaturation:
72+
case DlBlendMode::kColor:
73+
case DlBlendMode::kLuminosity:
74+
return !color_.isTransparent();
75+
76+
// These modes are all like kDst when the dest is all 0s.
77+
// So they never modify transparent black.
78+
case DlBlendMode::kClear:
79+
case DlBlendMode::kDst:
80+
case DlBlendMode::kSrcIn:
81+
case DlBlendMode::kDstIn:
82+
case DlBlendMode::kDstOut:
83+
case DlBlendMode::kSrcATop:
84+
case DlBlendMode::kModulate:
85+
return false;
86+
}
87+
}
88+
89+
bool DlBlendColorFilter::can_commute_with_opacity() const {
90+
switch (mode_) {
91+
case DlBlendMode::kClear:
92+
case DlBlendMode::kDst:
93+
case DlBlendMode::kSrcIn:
94+
case DlBlendMode::kDstIn:
95+
case DlBlendMode::kDstOut:
96+
case DlBlendMode::kSrcATop:
97+
case DlBlendMode::kModulate:
98+
return true;
99+
100+
case DlBlendMode::kSrc:
101+
case DlBlendMode::kSrcOver:
102+
case DlBlendMode::kDstOver:
103+
case DlBlendMode::kSrcOut:
104+
case DlBlendMode::kDstATop:
105+
case DlBlendMode::kXor:
106+
case DlBlendMode::kPlus:
107+
case DlBlendMode::kScreen:
108+
case DlBlendMode::kOverlay:
109+
case DlBlendMode::kDarken:
110+
case DlBlendMode::kLighten:
111+
case DlBlendMode::kColorDodge:
112+
case DlBlendMode::kColorBurn:
113+
case DlBlendMode::kHardLight:
114+
case DlBlendMode::kSoftLight:
115+
case DlBlendMode::kDifference:
116+
case DlBlendMode::kExclusion:
117+
case DlBlendMode::kMultiply:
118+
case DlBlendMode::kHue:
119+
case DlBlendMode::kSaturation:
120+
case DlBlendMode::kColor:
121+
case DlBlendMode::kLuminosity:
122+
return color_.isTransparent();
123+
}
124+
}
125+
126+
} // namespace flutter

0 commit comments

Comments
 (0)