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

Commit 47c8564

Browse files
committed
push methods return layers with correct class names
1 parent 82aac14 commit 47c8564

File tree

6 files changed

+69
-67
lines changed

6 files changed

+69
-67
lines changed

lib/web_ui/lib/src/engine/canvaskit/layer.dart

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,10 @@ abstract class ContainerLayer extends Layer {
117117
}
118118
}
119119

120-
class BackdropFilterLayer extends ContainerLayer {
120+
class BackdropFilterEngineLayer extends ContainerLayer implements ui.BackdropFilterEngineLayer {
121121
final ui.ImageFilter _filter;
122122

123-
BackdropFilterLayer(this._filter);
123+
BackdropFilterEngineLayer(this._filter);
124124

125125
@override
126126
void paint(PaintContext context) {
@@ -131,12 +131,12 @@ class BackdropFilterLayer extends ContainerLayer {
131131
}
132132

133133
/// A layer that clips its child layers by a given [Path].
134-
class ClipPathLayer extends ContainerLayer {
134+
class ClipPathEngineLayer extends ContainerLayer implements ui.ClipPathEngineLayer {
135135
/// The path used to clip child layers.
136136
final CkPath _clipPath;
137137
final ui.Clip _clipBehavior;
138138

139-
ClipPathLayer(this._clipPath, this._clipBehavior)
139+
ClipPathEngineLayer(this._clipPath, this._clipBehavior)
140140
: assert(_clipBehavior != ui.Clip.none);
141141

142142
@override
@@ -170,12 +170,12 @@ class ClipPathLayer extends ContainerLayer {
170170
}
171171

172172
/// A layer that clips its child layers by a given [Rect].
173-
class ClipRectLayer extends ContainerLayer {
173+
class ClipRectEngineLayer extends ContainerLayer implements ui.ClipRectEngineLayer {
174174
/// The rectangle used to clip child layers.
175175
final ui.Rect _clipRect;
176176
final ui.Clip _clipBehavior;
177177

178-
ClipRectLayer(this._clipRect, this._clipBehavior)
178+
ClipRectEngineLayer(this._clipRect, this._clipBehavior)
179179
: assert(_clipBehavior != ui.Clip.none);
180180

181181
@override
@@ -210,12 +210,12 @@ class ClipRectLayer extends ContainerLayer {
210210
}
211211

212212
/// A layer that clips its child layers by a given [RRect].
213-
class ClipRRectLayer extends ContainerLayer {
213+
class ClipRRectEngineLayer extends ContainerLayer implements ui.ClipRRectEngineLayer {
214214
/// The rounded rectangle used to clip child layers.
215215
final ui.RRect _clipRRect;
216216
final ui.Clip? _clipBehavior;
217217

218-
ClipRRectLayer(this._clipRRect, this._clipBehavior)
218+
ClipRRectEngineLayer(this._clipRRect, this._clipBehavior)
219219
: assert(_clipBehavior != ui.Clip.none);
220220

221221
@override
@@ -247,11 +247,11 @@ class ClipRRectLayer extends ContainerLayer {
247247
}
248248

249249
/// A layer that paints its children with the given opacity.
250-
class OpacityLayer extends ContainerLayer implements ui.OpacityEngineLayer {
250+
class OpacityEngineLayer extends ContainerLayer implements ui.OpacityEngineLayer {
251251
final int _alpha;
252252
final ui.Offset _offset;
253253

254-
OpacityLayer(this._alpha, this._offset);
254+
OpacityEngineLayer(this._alpha, this._offset);
255255

256256
@override
257257
void preroll(PrerollContext context, Matrix4 matrix) {
@@ -287,12 +287,11 @@ class OpacityLayer extends ContainerLayer implements ui.OpacityEngineLayer {
287287
}
288288

289289
/// A layer that transforms its child layers by the given transform matrix.
290-
class TransformLayer extends ContainerLayer
291-
implements ui.OffsetEngineLayer, ui.TransformEngineLayer {
290+
class TransformEngineLayer extends ContainerLayer implements ui.TransformEngineLayer {
292291
/// The matrix with which to transform the child layers.
293292
final Matrix4 _transform;
294293

295-
TransformLayer(this._transform);
294+
TransformEngineLayer(this._transform);
296295

297296
@override
298297
void preroll(PrerollContext context, Matrix4 matrix) {
@@ -314,9 +313,18 @@ class TransformLayer extends ContainerLayer
314313
}
315314
}
316315

316+
/// Translates its children along x and y coordinates.
317+
///
318+
/// This is a thin wrapper over [TransformEngineLayer] just so the framework
319+
/// gets the "OffsetEngineLayer" when calling `runtimeType.toString()`. This is
320+
/// better for debugging.
321+
class OffsetEngineLayer extends TransformEngineLayer implements ui.OffsetEngineLayer {
322+
OffsetEngineLayer(double dx, double dy) : super(Matrix4.translationValues(dx, dy, 0.0));
323+
}
324+
317325
/// A layer that applies an [ui.ImageFilter] to its children.
318-
class ImageFilterLayer extends ContainerLayer implements ui.OpacityEngineLayer {
319-
ImageFilterLayer(this._filter);
326+
class ImageFilterEngineLayer extends ContainerLayer implements ui.ImageFilterEngineLayer {
327+
ImageFilterEngineLayer(this._filter);
320328

321329
final ui.ImageFilter _filter;
322330

@@ -331,6 +339,13 @@ class ImageFilterLayer extends ContainerLayer implements ui.OpacityEngineLayer {
331339
}
332340
}
333341

342+
class ShaderMaskEngineLayer extends ContainerLayer implements ui.ShaderMaskEngineLayer {
343+
@override
344+
void paint(PaintContext paintContext) {
345+
// TODO(yjbanov): this needs to be implemented
346+
}
347+
}
348+
334349
/// A layer containing a [Picture].
335350
class PictureLayer extends Layer {
336351
/// The picture to paint into the canvas.
@@ -369,15 +384,15 @@ class PictureLayer extends Layer {
369384
///
370385
/// The shape clips its children to a given [Path], and casts a shadow based
371386
/// on the given elevation.
372-
class PhysicalShapeLayer extends ContainerLayer
387+
class PhysicalShapeEngineLayer extends ContainerLayer
373388
implements ui.PhysicalShapeEngineLayer {
374389
final double _elevation;
375390
final ui.Color _color;
376391
final ui.Color? _shadowColor;
377392
final CkPath _path;
378393
final ui.Clip _clipBehavior;
379394

380-
PhysicalShapeLayer(
395+
PhysicalShapeEngineLayer(
381396
this._elevation,
382397
this._color,
383398
this._shadowColor,
@@ -445,8 +460,8 @@ class PhysicalShapeLayer extends ContainerLayer
445460
}
446461

447462
/// A layer which contains a [ui.ColorFilter].
448-
class ColorFilterLayer extends ContainerLayer {
449-
ColorFilterLayer(this.filter);
463+
class ColorFilterEngineLayer extends ContainerLayer implements ui.ColorFilterEngineLayer {
464+
ColorFilterEngineLayer(this.filter);
450465

451466
final ui.ColorFilter filter;
452467

lib/web_ui/lib/src/engine/canvaskit/layer_scene_builder.dart

Lines changed: 26 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -99,108 +99,95 @@ class LayerSceneBuilder implements ui.SceneBuilder {
9999
}
100100

101101
@override
102-
ui.BackdropFilterEngineLayer? pushBackdropFilter(
102+
BackdropFilterEngineLayer? pushBackdropFilter(
103103
ui.ImageFilter filter, {
104104
ui.EngineLayer? oldLayer,
105105
}) {
106-
pushLayer(BackdropFilterLayer(filter));
107-
return null;
106+
return pushLayer<BackdropFilterEngineLayer>(BackdropFilterEngineLayer(filter));
108107
}
109108

110109
@override
111-
ui.ClipPathEngineLayer? pushClipPath(
110+
ClipPathEngineLayer? pushClipPath(
112111
ui.Path path, {
113112
ui.Clip clipBehavior = ui.Clip.antiAlias,
114113
ui.EngineLayer? oldLayer,
115114
}) {
116-
pushLayer(ClipPathLayer(path as CkPath, clipBehavior));
117-
return null;
115+
return pushLayer<ClipPathEngineLayer>(ClipPathEngineLayer(path as CkPath, clipBehavior));
118116
}
119117

120118
@override
121-
ui.ClipRRectEngineLayer? pushClipRRect(
119+
ClipRRectEngineLayer? pushClipRRect(
122120
ui.RRect rrect, {
123121
ui.Clip? clipBehavior,
124122
ui.EngineLayer? oldLayer,
125123
}) {
126-
pushLayer(ClipRRectLayer(rrect, clipBehavior));
127-
return null;
124+
return pushLayer<ClipRRectEngineLayer>(ClipRRectEngineLayer(rrect, clipBehavior));
128125
}
129126

130127
@override
131-
ui.ClipRectEngineLayer? pushClipRect(
128+
ClipRectEngineLayer? pushClipRect(
132129
ui.Rect rect, {
133130
ui.Clip clipBehavior = ui.Clip.antiAlias,
134131
ui.EngineLayer? oldLayer,
135132
}) {
136-
pushLayer(ClipRectLayer(rect, clipBehavior));
137-
return null;
133+
return pushLayer<ClipRectEngineLayer>(ClipRectEngineLayer(rect, clipBehavior));
138134
}
139135

140136
@override
141-
ui.ColorFilterEngineLayer? pushColorFilter(
137+
ColorFilterEngineLayer? pushColorFilter(
142138
ui.ColorFilter filter, {
143139
ui.ColorFilterEngineLayer? oldLayer,
144140
}) {
145141
assert(filter != null); // ignore: unnecessary_null_comparison
146-
pushLayer(ColorFilterLayer(filter));
147-
return null;
142+
return pushLayer<ColorFilterEngineLayer>(ColorFilterEngineLayer(filter));
148143
}
149144

150-
ui.ImageFilterEngineLayer? pushImageFilter(
145+
ImageFilterEngineLayer? pushImageFilter(
151146
ui.ImageFilter filter, {
152147
ui.ImageFilterEngineLayer? oldLayer,
153148
}) {
154149
assert(filter != null); // ignore: unnecessary_null_comparison
155-
pushLayer(ImageFilterLayer(filter));
156-
return null;
150+
return pushLayer<ImageFilterEngineLayer>(ImageFilterEngineLayer(filter));
157151
}
158152

159153
@override
160-
ui.OffsetEngineLayer pushOffset(
154+
OffsetEngineLayer pushOffset(
161155
double dx,
162156
double dy, {
163157
ui.EngineLayer? oldLayer,
164158
}) {
165-
final Matrix4 matrix = Matrix4.translationValues(dx, dy, 0.0);
166-
final TransformLayer layer = TransformLayer(matrix);
167-
pushLayer(layer);
168-
return layer;
159+
return pushLayer<OffsetEngineLayer>(OffsetEngineLayer(dx, dy));
169160
}
170161

171162
@override
172-
ui.OpacityEngineLayer pushOpacity(
163+
OpacityEngineLayer pushOpacity(
173164
int alpha, {
174165
ui.EngineLayer? oldLayer,
175166
ui.Offset offset = ui.Offset.zero,
176167
}) {
177-
final OpacityLayer layer = OpacityLayer(alpha, offset);
178-
pushLayer(layer);
179-
return layer;
168+
return pushLayer<OpacityEngineLayer>(OpacityEngineLayer(alpha, offset));
180169
}
181170

182171
@override
183-
ui.PhysicalShapeEngineLayer pushPhysicalShape({
172+
PhysicalShapeEngineLayer pushPhysicalShape({
184173
required ui.Path path,
185174
required double elevation,
186175
required ui.Color color,
187176
ui.Color? shadowColor,
188177
ui.Clip clipBehavior = ui.Clip.none,
189178
ui.EngineLayer? oldLayer,
190179
}) {
191-
final PhysicalShapeLayer layer = PhysicalShapeLayer(
180+
return pushLayer<PhysicalShapeEngineLayer>(PhysicalShapeEngineLayer(
192181
elevation,
193182
color,
194183
shadowColor,
195184
path as CkPath,
196185
clipBehavior,
197-
);
198-
pushLayer(layer);
199-
return layer;
186+
));
200187
}
201188

202189
@override
203-
ui.ShaderMaskEngineLayer pushShaderMask(
190+
ShaderMaskEngineLayer pushShaderMask(
204191
ui.Shader shader,
205192
ui.Rect maskRect,
206193
ui.BlendMode blendMode, {
@@ -210,13 +197,12 @@ class LayerSceneBuilder implements ui.SceneBuilder {
210197
}
211198

212199
@override
213-
ui.TransformEngineLayer? pushTransform(
200+
TransformEngineLayer? pushTransform(
214201
Float64List matrix4, {
215202
ui.EngineLayer? oldLayer,
216203
}) {
217204
final Matrix4 matrix = Matrix4.fromFloat32List(toMatrix32(matrix4));
218-
pushLayer(TransformLayer(matrix));
219-
return null;
205+
return pushLayer<TransformEngineLayer>(TransformEngineLayer(matrix));
220206
}
221207

222208
@override
@@ -234,18 +220,19 @@ class LayerSceneBuilder implements ui.SceneBuilder {
234220
// TODO: implement setRasterizerTracingThreshold
235221
}
236222

237-
void pushLayer(ContainerLayer layer) {
223+
T pushLayer<T extends ContainerLayer>(T layer) {
238224
if (rootLayer == null) {
239225
rootLayer = currentLayer = layer;
240-
return;
226+
return layer;
241227
}
242228

243229
if (currentLayer == null) {
244-
return;
230+
return layer;
245231
}
246232

247233
currentLayer!.add(layer);
248234
currentLayer = layer;
235+
return layer;
249236
}
250237

251238
@override

lib/web_ui/test/canvaskit/canvas_golden_test.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ void testMain() {
107107
canvas.drawShadow(shape, ui.Color(0xFFFF0000), elevation, true);
108108
canvas.drawPath(shape, shapePaint);
109109

110-
final PhysicalShapeLayer psl = PhysicalShapeLayer(
110+
final PhysicalShapeEngineLayer psl = PhysicalShapeEngineLayer(
111111
elevation,
112112
const ui.Color(0xFF000000),
113113
const ui.Color(0xFF000000),
@@ -149,12 +149,12 @@ void testMain() {
149149
(rectSize + padding) * 3 + padding,
150150
(rectSize + padding) * 2 + padding,
151151
);
152-
late List<PhysicalShapeLayer> physicalShapeLayers;
152+
late List<PhysicalShapeEngineLayer> physicalShapeLayers;
153153

154154
LayerTree buildTestScene({ required bool paintShadowBounds }) {
155-
final Iterator<PhysicalShapeLayer>? shadowBounds = paintShadowBounds
155+
final Iterator<PhysicalShapeEngineLayer>? shadowBounds = paintShadowBounds
156156
? physicalShapeLayers.iterator : null;
157-
physicalShapeLayers = <PhysicalShapeLayer>[];
157+
physicalShapeLayers = <PhysicalShapeEngineLayer>[];
158158

159159
final LayerSceneBuilder builder = LayerSceneBuilder();
160160
builder.pushOffset(padding + halfSize, padding + halfSize);
@@ -177,7 +177,7 @@ void testMain() {
177177
elevation: 6,
178178
color: const ui.Color(0xFF009900),
179179
shadowColor: const ui.Color(0xFF000000),
180-
) as PhysicalShapeLayer);
180+
) as PhysicalShapeEngineLayer);
181181
if (shadowBounds != null) {
182182
shadowBounds.moveNext();
183183
final ui.Rect bounds = shadowBounds.current.paintBounds;

lib/web_ui/test/canvaskit/layer_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ void testMain() {
4444
sb.addPicture(ui.Offset.zero, picture);
4545
final LayerTree layerTree = sb.build().layerTree;
4646
dispatcher.rasterizer!.draw(layerTree);
47-
final ClipRectLayer clipRect = layerTree.rootLayer as ClipRectLayer;
47+
final ClipRectEngineLayer clipRect = layerTree.rootLayer as ClipRectEngineLayer;
4848
expect(clipRect.paintBounds, ui.Rect.fromLTRB(15, 15, 30, 30));
4949

50-
final TransformLayer transform = clipRect.debugLayers.single as TransformLayer;
50+
final TransformEngineLayer transform = clipRect.debugLayers.single as TransformEngineLayer;
5151
expect(transform.paintBounds, ui.Rect.fromLTRB(0, 0, 30, 30));
5252
});
5353
// TODO: https://github.com/flutter/flutter/issues/60040

lib/web_ui/test/golden_tests/engine/backdrop_filter_golden_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'dart:html' as html;
88
import 'package:test/bootstrap/browser.dart';
99
import 'package:test/test.dart';
1010
import 'package:ui/ui.dart';
11-
import 'package:ui/src/engine.dart';
11+
import 'package:ui/src/engine.dart' hide ClipRectEngineLayer, BackdropFilterEngineLayer;
1212

1313
import 'package:web_engine_tester/golden_tester.dart';
1414

lib/web_ui/test/golden_tests/engine/color_filter_golden_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import 'dart:js_util' as js_util;
99
import 'package:test/bootstrap/browser.dart'; // ignore: import_of_legacy_library_into_null_safe
1010
import 'package:test/test.dart'; // ignore: import_of_legacy_library_into_null_safe
1111
import 'package:ui/ui.dart';
12-
import 'package:ui/src/engine.dart';
12+
import 'package:ui/src/engine.dart' hide PhysicalShapeEngineLayer;
1313

1414
import 'package:web_engine_tester/golden_tester.dart'; // ignore: import_of_legacy_library_into_null_safe
1515

0 commit comments

Comments
 (0)