22// Use of this source code is governed by a BSD-style license that can be
33// found in the LICENSE file.
44
5+ #include " flutter/flow/layers/clip_rect_layer.h"
56#include " flutter/flow/layers/opacity_layer.h"
67
78#include " flutter/flow/testing/layer_test.h"
@@ -58,10 +59,6 @@ TEST_F(OpacityLayerTest, FullyOpaque) {
5859 const SkMatrix initial_transform = SkMatrix::MakeTrans (0 .5f , 0 .5f );
5960 const SkMatrix layer_transform =
6061 SkMatrix::MakeTrans (layer_offset.fX , layer_offset.fY );
61- #ifndef SUPPORT_FRACTIONAL_TRANSLATION
62- const SkMatrix integral_layer_transform = RasterCache::GetIntegralTransCTM (
63- SkMatrix::Concat (initial_transform, layer_transform));
64- #endif
6562 const SkPaint child_paint = SkPaint (SkColors::kGreen );
6663 const SkRect expected_layer_bounds =
6764 layer_transform.mapRect (child_path.getBounds ());
@@ -86,10 +83,6 @@ TEST_F(OpacityLayerTest, FullyOpaque) {
8683 auto expected_draw_calls = std::vector (
8784 {MockCanvas::DrawCall{0 , MockCanvas::SaveData{1 }},
8885 MockCanvas::DrawCall{1 , MockCanvas::ConcatMatrixData{layer_transform}},
89- #ifndef SUPPORT_FRACTIONAL_TRANSLATION
90- MockCanvas::DrawCall{
91- 1 , MockCanvas::SetMatrixData{integral_layer_transform}},
92- #endif
9386 MockCanvas::DrawCall{
9487 1 , MockCanvas::SaveLayerData{opacity_bounds, opacity_paint, nullptr ,
9588 2 }},
@@ -107,10 +100,6 @@ TEST_F(OpacityLayerTest, FullyTransparent) {
107100 const SkMatrix initial_transform = SkMatrix::MakeTrans (0 .5f , 0 .5f );
108101 const SkMatrix layer_transform =
109102 SkMatrix::MakeTrans (layer_offset.fX , layer_offset.fY );
110- #ifndef SUPPORT_FRACTIONAL_TRANSLATION
111- const SkMatrix integral_layer_transform = RasterCache::GetIntegralTransCTM (
112- SkMatrix::Concat (initial_transform, layer_transform));
113- #endif
114103 const SkPaint child_paint = SkPaint (SkColors::kGreen );
115104 const SkRect expected_layer_bounds =
116105 layer_transform.mapRect (child_path.getBounds ());
@@ -133,10 +122,6 @@ TEST_F(OpacityLayerTest, FullyTransparent) {
133122 auto expected_draw_calls = std::vector (
134123 {MockCanvas::DrawCall{0 , MockCanvas::SaveData{1 }},
135124 MockCanvas::DrawCall{1 , MockCanvas::ConcatMatrixData{layer_transform}},
136- #ifndef SUPPORT_FRACTIONAL_TRANSLATION
137- MockCanvas::DrawCall{
138- 1 , MockCanvas::SetMatrixData{integral_layer_transform}},
139- #endif
140125 MockCanvas::DrawCall{1 , MockCanvas::SaveData{2 }},
141126 MockCanvas::DrawCall{
142127 2 , MockCanvas::ClipRectData{kEmptyRect , SkClipOp::kIntersect ,
@@ -155,10 +140,6 @@ TEST_F(OpacityLayerTest, HalfTransparent) {
155140 const SkMatrix initial_transform = SkMatrix::MakeTrans (0 .5f , 0 .5f );
156141 const SkMatrix layer_transform =
157142 SkMatrix::MakeTrans (layer_offset.fX , layer_offset.fY );
158- #ifndef SUPPORT_FRACTIONAL_TRANSLATION
159- const SkMatrix integral_layer_transform = RasterCache::GetIntegralTransCTM (
160- SkMatrix::Concat (initial_transform, layer_transform));
161- #endif
162143 const SkPaint child_paint = SkPaint (SkColors::kGreen );
163144 const SkRect expected_layer_bounds =
164145 layer_transform.mapRect (child_path.getBounds ());
@@ -185,10 +166,6 @@ TEST_F(OpacityLayerTest, HalfTransparent) {
185166 auto expected_draw_calls = std::vector (
186167 {MockCanvas::DrawCall{0 , MockCanvas::SaveData{1 }},
187168 MockCanvas::DrawCall{1 , MockCanvas::ConcatMatrixData{layer_transform}},
188- #ifndef SUPPORT_FRACTIONAL_TRANSLATION
189- MockCanvas::DrawCall{
190- 1 , MockCanvas::SetMatrixData{integral_layer_transform}},
191- #endif
192169 MockCanvas::DrawCall{
193170 1 , MockCanvas::SaveLayerData{opacity_bounds, opacity_paint, nullptr ,
194171 2 }},
@@ -211,13 +188,6 @@ TEST_F(OpacityLayerTest, Nested) {
211188 SkMatrix::MakeTrans (layer1_offset.fX , layer1_offset.fY );
212189 const SkMatrix layer2_transform =
213190 SkMatrix::MakeTrans (layer2_offset.fX , layer2_offset.fY );
214- #ifndef SUPPORT_FRACTIONAL_TRANSLATION
215- const SkMatrix integral_layer1_transform = RasterCache::GetIntegralTransCTM (
216- SkMatrix::Concat (initial_transform, layer1_transform));
217- const SkMatrix integral_layer2_transform = RasterCache::GetIntegralTransCTM (
218- SkMatrix::Concat (SkMatrix::Concat (initial_transform, layer1_transform),
219- layer2_transform));
220- #endif
221191 const SkPaint child1_paint = SkPaint (SkColors::kRed );
222192 const SkPaint child2_paint = SkPaint (SkColors::kBlue );
223193 const SkPaint child3_paint = SkPaint (SkColors::kGreen );
@@ -278,21 +248,13 @@ TEST_F(OpacityLayerTest, Nested) {
278248 auto expected_draw_calls = std::vector (
279249 {MockCanvas::DrawCall{0 , MockCanvas::SaveData{1 }},
280250 MockCanvas::DrawCall{1 , MockCanvas::ConcatMatrixData{layer1_transform}},
281- #ifndef SUPPORT_FRACTIONAL_TRANSLATION
282- MockCanvas::DrawCall{
283- 1 , MockCanvas::SetMatrixData{integral_layer1_transform}},
284- #endif
285251 MockCanvas::DrawCall{
286252 1 , MockCanvas::SaveLayerData{opacity1_bounds, opacity1_paint,
287253 nullptr , 2 }},
288254 MockCanvas::DrawCall{
289255 2 , MockCanvas::DrawPathData{child1_path, child1_paint}},
290256 MockCanvas::DrawCall{2 , MockCanvas::SaveData{3 }},
291257 MockCanvas::DrawCall{3 , MockCanvas::ConcatMatrixData{layer2_transform}},
292- #ifndef SUPPORT_FRACTIONAL_TRANSLATION
293- MockCanvas::DrawCall{
294- 3 , MockCanvas::SetMatrixData{integral_layer2_transform}},
295- #endif
296258 MockCanvas::DrawCall{
297259 3 , MockCanvas::SaveLayerData{opacity2_bounds, opacity2_paint,
298260 nullptr , 4 }},
@@ -327,5 +289,18 @@ TEST_F(OpacityLayerTest, Readback) {
327289 EXPECT_FALSE (preroll_context ()->surface_needs_readback );
328290}
329291
292+ TEST_F (OpacityLayerTest, CullRectIsTransformed) {
293+ auto clipRectLayer = std::make_shared<ClipRectLayer>(
294+ SkRect::MakeLTRB (0 , 0 , 10 , 10 ), flutter::hardEdge);
295+ auto opacityLayer =
296+ std::make_shared<OpacityLayer>(128 , SkPoint::Make (20 , 20 ));
297+ auto mockLayer = std::make_shared<MockLayer>(SkPath ());
298+ clipRectLayer->Add (opacityLayer);
299+ opacityLayer->Add (mockLayer);
300+ clipRectLayer->Preroll (preroll_context (), SkMatrix::I ());
301+ EXPECT_EQ (mockLayer->parent_cull_rect ().fLeft , -20 );
302+ EXPECT_EQ (mockLayer->parent_cull_rect ().fTop , -20 );
303+ }
304+
330305} // namespace testing
331306} // namespace flutter
0 commit comments