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

Commit abecc66

Browse files
authored
Revert "Fix bounds of image_filter_layer (#16960)"
This reverts commit 8b6119e.
1 parent bcefcdb commit abecc66

File tree

2 files changed

+12
-54
lines changed

2 files changed

+12
-54
lines changed

flow/layers/image_filter_layer.cc

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,9 @@ ImageFilterLayer::ImageFilterLayer(sk_sp<SkImageFilter> filter)
1111

1212
void ImageFilterLayer::Preroll(PrerollContext* context,
1313
const SkMatrix& matrix) {
14-
TRACE_EVENT0("flutter", "ImageFilterLayer::Preroll");
15-
1614
Layer::AutoPrerollSaveLayerState save =
1715
Layer::AutoPrerollSaveLayerState::Create(context);
18-
19-
SkRect child_paint_bounds = SkRect::MakeEmpty();
20-
PrerollChildren(context, matrix, &child_paint_bounds);
21-
if (filter_) {
22-
const SkIRect filter_input_bounds = child_paint_bounds.roundOut();
23-
SkIRect filter_output_bounds =
24-
filter_->filterBounds(filter_input_bounds, SkMatrix::I(),
25-
SkImageFilter::kForward_MapDirection);
26-
child_paint_bounds = SkRect::Make(filter_output_bounds);
27-
}
28-
set_paint_bounds(child_paint_bounds);
16+
ContainerLayer::Preroll(context, matrix);
2917

3018
if (!context->has_platform_view && context->raster_cache &&
3119
SkRect::Intersects(context->cull_rect, paint_bounds())) {

flow/layers/image_filter_layer_unittests.cc

Lines changed: 11 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,8 @@ TEST_F(ImageFilterLayerTest, SimpleFilter) {
8383
auto layer = std::make_shared<ImageFilterLayer>(layer_filter);
8484
layer->Add(mock_layer);
8585

86-
const SkRect child_rounded_bounds =
87-
SkRect::MakeLTRB(5.0f, 6.0f, 21.0f, 22.0f);
88-
8986
layer->Preroll(preroll_context(), initial_transform);
90-
EXPECT_EQ(layer->paint_bounds(), child_rounded_bounds);
87+
EXPECT_EQ(layer->paint_bounds(), child_bounds);
9188
EXPECT_TRUE(layer->needs_painting());
9289
EXPECT_EQ(mock_layer->parent_matrix(), initial_transform);
9390

@@ -99,35 +96,15 @@ TEST_F(ImageFilterLayerTest, SimpleFilter) {
9996
MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
10097
MockCanvas::DrawCall{1, MockCanvas::SetMatrixData{SkMatrix()}},
10198
MockCanvas::DrawCall{
102-
1, MockCanvas::SaveLayerData{child_rounded_bounds,
103-
filter_paint, nullptr, 2}},
99+
1, MockCanvas::SaveLayerData{child_bounds, filter_paint,
100+
nullptr, 2}},
104101
MockCanvas::DrawCall{
105102
2, MockCanvas::DrawPathData{child_path, child_paint}},
106103
MockCanvas::DrawCall{2, MockCanvas::RestoreData{1}},
107104
MockCanvas::DrawCall{1, MockCanvas::RestoreData{0}},
108105
}));
109106
}
110107

111-
TEST_F(ImageFilterLayerTest, SimpleFilterBounds) {
112-
const SkMatrix initial_transform = SkMatrix::MakeTrans(0.5f, 1.0f);
113-
const SkRect child_bounds = SkRect::MakeLTRB(5.0f, 6.0f, 20.5f, 21.5f);
114-
const SkPath child_path = SkPath().addRect(child_bounds);
115-
const SkPaint child_paint = SkPaint(SkColors::kYellow);
116-
const SkMatrix filter_transform = SkMatrix::MakeScale(2.0, 2.0);
117-
auto layer_filter = SkImageFilter::MakeMatrixFilter(
118-
filter_transform, SkFilterQuality::kMedium_SkFilterQuality, nullptr);
119-
auto mock_layer = std::make_shared<MockLayer>(child_path, child_paint);
120-
auto layer = std::make_shared<ImageFilterLayer>(layer_filter);
121-
layer->Add(mock_layer);
122-
123-
const SkRect filter_bounds = SkRect::MakeLTRB(10.0f, 12.0f, 42.0f, 44.0f);
124-
125-
layer->Preroll(preroll_context(), initial_transform);
126-
EXPECT_EQ(layer->paint_bounds(), filter_bounds);
127-
EXPECT_TRUE(layer->needs_painting());
128-
EXPECT_EQ(mock_layer->parent_matrix(), initial_transform);
129-
}
130-
131108
TEST_F(ImageFilterLayerTest, MultipleChildren) {
132109
const SkMatrix initial_transform = SkMatrix::MakeTrans(0.5f, 1.0f);
133110
const SkRect child_bounds = SkRect::MakeLTRB(5.0f, 6.0f, 2.5f, 3.5f);
@@ -146,12 +123,10 @@ TEST_F(ImageFilterLayerTest, MultipleChildren) {
146123

147124
SkRect children_bounds = child_path1.getBounds();
148125
children_bounds.join(child_path2.getBounds());
149-
SkRect children_rounded_bounds = SkRect::Make(children_bounds.roundOut());
150-
151126
layer->Preroll(preroll_context(), initial_transform);
152127
EXPECT_EQ(mock_layer1->paint_bounds(), child_path1.getBounds());
153128
EXPECT_EQ(mock_layer2->paint_bounds(), child_path2.getBounds());
154-
EXPECT_EQ(layer->paint_bounds(), children_rounded_bounds);
129+
EXPECT_EQ(layer->paint_bounds(), children_bounds);
155130
EXPECT_TRUE(mock_layer1->needs_painting());
156131
EXPECT_TRUE(mock_layer2->needs_painting());
157132
EXPECT_TRUE(layer->needs_painting());
@@ -166,8 +141,8 @@ TEST_F(ImageFilterLayerTest, MultipleChildren) {
166141
{MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
167142
MockCanvas::DrawCall{1, MockCanvas::SetMatrixData{SkMatrix()}},
168143
MockCanvas::DrawCall{
169-
1, MockCanvas::SaveLayerData{children_rounded_bounds,
170-
filter_paint, nullptr, 2}},
144+
1, MockCanvas::SaveLayerData{children_bounds, filter_paint,
145+
nullptr, 2}},
171146
MockCanvas::DrawCall{
172147
2, MockCanvas::DrawPathData{child_path1, child_paint1}},
173148
MockCanvas::DrawCall{
@@ -198,16 +173,11 @@ TEST_F(ImageFilterLayerTest, Nested) {
198173

199174
SkRect children_bounds = child_path1.getBounds();
200175
children_bounds.join(child_path2.getBounds());
201-
const SkRect children_rounded_bounds =
202-
SkRect::Make(children_bounds.roundOut());
203-
const SkRect mock_layer2_rounded_bounds =
204-
SkRect::Make(child_path2.getBounds().roundOut());
205-
206176
layer1->Preroll(preroll_context(), initial_transform);
207177
EXPECT_EQ(mock_layer1->paint_bounds(), child_path1.getBounds());
208178
EXPECT_EQ(mock_layer2->paint_bounds(), child_path2.getBounds());
209-
EXPECT_EQ(layer1->paint_bounds(), children_rounded_bounds);
210-
EXPECT_EQ(layer2->paint_bounds(), mock_layer2_rounded_bounds);
179+
EXPECT_EQ(layer1->paint_bounds(), children_bounds);
180+
EXPECT_EQ(layer2->paint_bounds(), mock_layer2->paint_bounds());
211181
EXPECT_TRUE(mock_layer1->needs_painting());
212182
EXPECT_TRUE(mock_layer2->needs_painting());
213183
EXPECT_TRUE(layer1->needs_painting());
@@ -224,14 +194,14 @@ TEST_F(ImageFilterLayerTest, Nested) {
224194
MockCanvas::DrawCall{0, MockCanvas::SaveData{1}},
225195
MockCanvas::DrawCall{1, MockCanvas::SetMatrixData{SkMatrix()}},
226196
MockCanvas::DrawCall{
227-
1, MockCanvas::SaveLayerData{children_rounded_bounds,
228-
filter_paint1, nullptr, 2}},
197+
1, MockCanvas::SaveLayerData{children_bounds, filter_paint1,
198+
nullptr, 2}},
229199
MockCanvas::DrawCall{
230200
2, MockCanvas::DrawPathData{child_path1, child_paint1}},
231201
MockCanvas::DrawCall{2, MockCanvas::SaveData{3}},
232202
MockCanvas::DrawCall{3, MockCanvas::SetMatrixData{SkMatrix()}},
233203
MockCanvas::DrawCall{
234-
3, MockCanvas::SaveLayerData{mock_layer2_rounded_bounds,
204+
3, MockCanvas::SaveLayerData{child_path2.getBounds(),
235205
filter_paint2, nullptr, 4}},
236206
MockCanvas::DrawCall{
237207
4, MockCanvas::DrawPathData{child_path2, child_paint2}},

0 commit comments

Comments
 (0)