|
8 | 8 | #include "third_party/skia/include/core/SkPathBuilder.h" |
9 | 9 |
|
10 | 10 | #include "flutter/display_list/display_list_builder.h" |
| 11 | +#include "flutter/display_list/display_list_mask_filter.h" |
| 12 | +#include "flutter/display_list/types.h" |
11 | 13 | #include "flutter/testing/testing.h" |
12 | 14 | #include "impeller/display_list/display_list_image_impeller.h" |
13 | 15 | #include "impeller/display_list/display_list_playground.h" |
@@ -174,5 +176,36 @@ TEST_P(DisplayListTest, StrokedPathsDrawCorrectly) { |
174 | 176 | ASSERT_TRUE(OpenPlaygroundHere(builder.Build())); |
175 | 177 | } |
176 | 178 |
|
| 179 | +TEST_F(DisplayListTest, CanDrawWithMaskBlur) { |
| 180 | + auto texture = CreateTextureForFixture("embarcadero.jpg"); |
| 181 | + flutter::DisplayListBuilder builder; |
| 182 | + |
| 183 | + // Mask blurred image. |
| 184 | + { |
| 185 | + auto filter = flutter::DlBlurMaskFilter(kNormal_SkBlurStyle, 10.0f); |
| 186 | + builder.setMaskFilter(&filter); |
| 187 | + builder.drawImage(DlImageImpeller::Make(texture), SkPoint::Make(100, 100), |
| 188 | + SkSamplingOptions{}, true); |
| 189 | + } |
| 190 | + |
| 191 | + // Mask blurred filled path. |
| 192 | + { |
| 193 | + builder.setColor(SK_ColorYELLOW); |
| 194 | + auto filter = flutter::DlBlurMaskFilter(kOuter_SkBlurStyle, 10.0f); |
| 195 | + builder.setMaskFilter(&filter); |
| 196 | + builder.drawArc(SkRect::MakeXYWH(410, 110, 100, 100), 45, 270, true); |
| 197 | + } |
| 198 | + |
| 199 | + // Mask blurred text. |
| 200 | + { |
| 201 | + auto filter = flutter::DlBlurMaskFilter(kSolid_SkBlurStyle, 10.0f); |
| 202 | + builder.setMaskFilter(&filter); |
| 203 | + builder.drawTextBlob( |
| 204 | + SkTextBlob::MakeFromString("Testing", CreateTestFont()), 220, 170); |
| 205 | + } |
| 206 | + |
| 207 | + ASSERT_TRUE(OpenPlaygroundHere(builder.Build())); |
| 208 | +} |
| 209 | + |
177 | 210 | } // namespace testing |
178 | 211 | } // namespace impeller |
0 commit comments