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

Commit ff4b00f

Browse files
dart format
1 parent c007ac5 commit ff4b00f

File tree

2 files changed

+108
-97
lines changed

2 files changed

+108
-97
lines changed

lib/web_ui/lib/src/engine/renderer.dart

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import 'dart:math' as math;
77
import 'dart:typed_data';
88

99
import 'package:ui/src/engine.dart';
10-
import 'package:ui/src/engine/skwasm/skwasm_impl.dart' if (dart.library.html) 'package:ui/src/engine/skwasm/skwasm_stub.dart';
10+
import 'package:ui/src/engine/skwasm/skwasm_impl.dart'
11+
if (dart.library.html) 'package:ui/src/engine/skwasm/skwasm_stub.dart';
1112
import 'package:ui/ui.dart' as ui;
1213
import 'package:ui/ui_web/src/ui_web.dart' as ui_web;
1314

@@ -103,17 +104,18 @@ abstract class Renderer {
103104
Float32List? matrix4,
104105
]);
105106

106-
ui.ImageFilter createBlurImageFilter({
107-
double sigmaX = 0.0,
108-
double sigmaY = 0.0,
109-
ui.TileMode tileMode = ui.TileMode.clamp});
110-
ui.ImageFilter createDilateImageFilter({ double radiusX = 0.0, double radiusY = 0.0});
111-
ui.ImageFilter createErodeImageFilter({ double radiusX = 0.0, double radiusY = 0.0});
112-
ui.ImageFilter createMatrixImageFilter(
113-
Float64List matrix4, {
114-
ui.FilterQuality filterQuality = ui.FilterQuality.low
115-
});
116-
ui.ImageFilter composeImageFilters({required ui.ImageFilter outer, required ui.ImageFilter inner});
107+
ui.ImageFilter createBlurImageFilter(
108+
{double sigmaX = 0.0,
109+
double sigmaY = 0.0,
110+
ui.TileMode tileMode = ui.TileMode.clamp});
111+
ui.ImageFilter createDilateImageFilter(
112+
{double radiusX = 0.0, double radiusY = 0.0});
113+
ui.ImageFilter createErodeImageFilter(
114+
{double radiusX = 0.0, double radiusY = 0.0});
115+
ui.ImageFilter createMatrixImageFilter(Float64List matrix4,
116+
{ui.FilterQuality filterQuality = ui.FilterQuality.low});
117+
ui.ImageFilter composeImageFilters(
118+
{required ui.ImageFilter outer, required ui.ImageFilter inner});
117119

118120
Future<ui.Codec> instantiateImageCodec(
119121
Uint8List list, {
@@ -129,20 +131,15 @@ abstract class Renderer {
129131

130132
FutureOr<ui.Image> createImageFromImageBitmap(DomImageBitmap imageSource);
131133

132-
ui.Image createImageFromTextureSource(Object object, { required int width, required int height });
133-
134+
ui.Image createImageFromTextureSource(Object object,
135+
{required int width, required int height});
134136

135-
void decodeImageFromPixels(
136-
Uint8List pixels,
137-
int width,
138-
int height,
139-
ui.PixelFormat format,
140-
ui.ImageDecoderCallback callback, {
141-
int? rowBytes,
142-
int? targetWidth,
143-
int? targetHeight,
144-
bool allowUpscaling = true
145-
});
137+
void decodeImageFromPixels(Uint8List pixels, int width, int height,
138+
ui.PixelFormat format, ui.ImageDecoderCallback callback,
139+
{int? rowBytes,
140+
int? targetWidth,
141+
int? targetHeight,
142+
bool allowUpscaling = true});
146143

147144
ui.ImageShader createImageShader(
148145
ui.Image image,

lib/web_ui/test/ui/image_golden_test.dart

Lines changed: 86 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@ Future<void> testMain() async {
7171
setUp(() {
7272
assetScope = fakeAssetManager.pushAssetScope();
7373
assetScope.setAsset(
74-
'glitch_shader',
75-
ByteData.sublistView(utf8.encode(kGlitchShaderSksl))
76-
);
74+
'glitch_shader', ByteData.sublistView(utf8.encode(kGlitchShaderSksl)));
7775
});
7876

7977
tearDown(() {
@@ -107,14 +105,19 @@ Future<void> testMain() async {
107105

108106
final ui.PictureRecorder recorder = ui.PictureRecorder();
109107
final ui.Canvas canvas = ui.Canvas(recorder, drawRegion);
110-
canvas.drawImage(image, ui.Offset.zero, ui.Paint()..filterQuality = ui.FilterQuality.none);
111-
canvas.drawImage(image, const ui.Offset(150, 0), ui.Paint()..filterQuality = ui.FilterQuality.low);
112-
canvas.drawImage(image, const ui.Offset(0, 150), ui.Paint()..filterQuality = ui.FilterQuality.medium);
113-
canvas.drawImage(image, const ui.Offset(150, 150), ui.Paint()..filterQuality = ui.FilterQuality.high);
108+
canvas.drawImage(image, ui.Offset.zero,
109+
ui.Paint()..filterQuality = ui.FilterQuality.none);
110+
canvas.drawImage(image, const ui.Offset(150, 0),
111+
ui.Paint()..filterQuality = ui.FilterQuality.low);
112+
canvas.drawImage(image, const ui.Offset(0, 150),
113+
ui.Paint()..filterQuality = ui.FilterQuality.medium);
114+
canvas.drawImage(image, const ui.Offset(150, 150),
115+
ui.Paint()..filterQuality = ui.FilterQuality.high);
114116

115117
await drawPictureUsingCurrentRenderer(recorder.endRecording());
116118

117-
await matchGoldenFile('${name}_canvas_drawImage.png', region: drawRegion);
119+
await matchGoldenFile('${name}_canvas_drawImage.png',
120+
region: drawRegion);
118121
});
119122

120123
test('drawImageRect', () async {
@@ -124,57 +127,52 @@ Future<void> testMain() async {
124127
final ui.Canvas canvas = ui.Canvas(recorder, drawRegion);
125128
const ui.Rect srcRect = ui.Rect.fromLTRB(50, 50, 100, 100);
126129
canvas.drawImageRect(
127-
image,
128-
srcRect,
129-
const ui.Rect.fromLTRB(0, 0, 150, 150),
130-
ui.Paint()..filterQuality = ui.FilterQuality.none
131-
);
130+
image,
131+
srcRect,
132+
const ui.Rect.fromLTRB(0, 0, 150, 150),
133+
ui.Paint()..filterQuality = ui.FilterQuality.none);
132134
canvas.drawImageRect(
133-
image,
134-
srcRect,
135-
const ui.Rect.fromLTRB(150, 0, 300, 150),
136-
ui.Paint()..filterQuality = ui.FilterQuality.low
137-
);
135+
image,
136+
srcRect,
137+
const ui.Rect.fromLTRB(150, 0, 300, 150),
138+
ui.Paint()..filterQuality = ui.FilterQuality.low);
138139
canvas.drawImageRect(
139-
image,
140-
srcRect,
141-
const ui.Rect.fromLTRB(0, 150, 150, 300),
142-
ui.Paint()..filterQuality = ui.FilterQuality.medium
143-
);
140+
image,
141+
srcRect,
142+
const ui.Rect.fromLTRB(0, 150, 150, 300),
143+
ui.Paint()..filterQuality = ui.FilterQuality.medium);
144144
canvas.drawImageRect(
145-
image,
146-
srcRect,
147-
const ui.Rect.fromLTRB(150, 150, 300, 300),
148-
ui.Paint()..filterQuality = ui.FilterQuality.high
149-
);
145+
image,
146+
srcRect,
147+
const ui.Rect.fromLTRB(150, 150, 300, 300),
148+
ui.Paint()..filterQuality = ui.FilterQuality.high);
150149

151150
await drawPictureUsingCurrentRenderer(recorder.endRecording());
152151

153-
await matchGoldenFile('${name}_canvas_drawImageRect.png', region: drawRegion);
152+
await matchGoldenFile('${name}_canvas_drawImageRect.png',
153+
region: drawRegion);
154154
});
155155

156156
test('drawImageNine', () async {
157157
final ui.Image image = await generateImage();
158158

159159
final ui.PictureRecorder recorder = ui.PictureRecorder();
160160
final ui.Canvas canvas = ui.Canvas(recorder, drawRegion);
161-
canvas.drawImageNine(
162-
image,
163-
const ui.Rect.fromLTRB(50, 50, 100, 100),
164-
drawRegion,
165-
ui.Paint()
166-
);
161+
canvas.drawImageNine(image, const ui.Rect.fromLTRB(50, 50, 100, 100),
162+
drawRegion, ui.Paint());
167163

168164
await drawPictureUsingCurrentRenderer(recorder.endRecording());
169165

170-
await matchGoldenFile('${name}_canvas_drawImageNine.png', region: drawRegion);
166+
await matchGoldenFile('${name}_canvas_drawImageNine.png',
167+
region: drawRegion);
171168
});
172169

173170
test('image_shader_cubic_rotated', () async {
174171
final ui.PictureRecorder recorder = ui.PictureRecorder();
175172
final ui.Canvas canvas = ui.Canvas(recorder, drawRegion);
176173
final Float64List matrix = Matrix4.rotationZ(pi / 6).toFloat64();
177-
Future<void> drawOvalWithShader(ui.Rect rect, ui.FilterQuality quality) async {
174+
Future<void> drawOvalWithShader(
175+
ui.Rect rect, ui.FilterQuality quality) async {
178176
final ui.Image image = await generateImage();
179177
final ui.ImageShader shader = ui.ImageShader(
180178
image,
@@ -183,32 +181,35 @@ Future<void> testMain() async {
183181
matrix,
184182
filterQuality: quality,
185183
);
186-
canvas.drawOval(
187-
rect,
188-
ui.Paint()..shader = shader
189-
);
184+
canvas.drawOval(rect, ui.Paint()..shader = shader);
190185
}
191186

192187
// Draw image shader with all four qualities.
193-
await drawOvalWithShader(const ui.Rect.fromLTRB(0, 0, 150, 100), ui.FilterQuality.none);
194-
await drawOvalWithShader(const ui.Rect.fromLTRB(150, 0, 300, 100), ui.FilterQuality.low);
188+
await drawOvalWithShader(
189+
const ui.Rect.fromLTRB(0, 0, 150, 100), ui.FilterQuality.none);
190+
await drawOvalWithShader(
191+
const ui.Rect.fromLTRB(150, 0, 300, 100), ui.FilterQuality.low);
195192

196193
// Note that for images that CanvasKit handles lazily (ones created via
197194
// `createImageFromImageBitmap` or `instantiateImageCodecFromUrl`)
198195
// there is a CanvasKit bug that this just renders a black oval instead of
199196
// actually texturing it with the image.
200197
// See https://g-issues.skia.org/issues/338095525
201-
await drawOvalWithShader(const ui.Rect.fromLTRB(0, 100, 150, 200), ui.FilterQuality.medium);
202-
await drawOvalWithShader(const ui.Rect.fromLTRB(150, 100, 300, 200), ui.FilterQuality.high);
198+
await drawOvalWithShader(
199+
const ui.Rect.fromLTRB(0, 100, 150, 200), ui.FilterQuality.medium);
200+
await drawOvalWithShader(
201+
const ui.Rect.fromLTRB(150, 100, 300, 200), ui.FilterQuality.high);
203202

204203
await drawPictureUsingCurrentRenderer(recorder.endRecording());
205-
await matchGoldenFile('${name}_image_shader_cubic_rotated.png', region: drawRegion);
204+
await matchGoldenFile('${name}_image_shader_cubic_rotated.png',
205+
region: drawRegion);
206206
});
207207

208208
test('fragment_shader_sampler', () async {
209209
final ui.Image image = await generateImage();
210210

211-
final ui.FragmentProgram program = await renderer.createFragmentProgram('glitch_shader');
211+
final ui.FragmentProgram program =
212+
await renderer.createFragmentProgram('glitch_shader');
212213
final ui.FragmentShader shader = program.fragmentShader();
213214

214215
// Resolution
@@ -223,11 +224,13 @@ Future<void> testMain() async {
223224

224225
final ui.PictureRecorder recorder = ui.PictureRecorder();
225226
final ui.Canvas canvas = ui.Canvas(recorder, drawRegion);
226-
canvas.drawCircle(const ui.Offset(150, 150), 100, ui.Paint()..shader = shader);
227+
canvas.drawCircle(
228+
const ui.Offset(150, 150), 100, ui.Paint()..shader = shader);
227229

228230
await drawPictureUsingCurrentRenderer(recorder.endRecording());
229231

230-
await matchGoldenFile('${name}_fragment_shader_sampler.png', region: drawRegion);
232+
await matchGoldenFile('${name}_fragment_shader_sampler.png',
233+
region: drawRegion);
231234
}, skip: isHtml); // HTML doesn't support fragment shaders
232235

233236
test('drawVertices with image shader', () async {
@@ -268,11 +271,13 @@ Future<void> testMain() async {
268271

269272
final ui.PictureRecorder recorder = ui.PictureRecorder();
270273
final ui.Canvas canvas = ui.Canvas(recorder, drawRegion);
271-
canvas.drawVertices(vertices, ui.BlendMode.srcOver, ui.Paint()..shader = shader);
274+
canvas.drawVertices(
275+
vertices, ui.BlendMode.srcOver, ui.Paint()..shader = shader);
272276

273277
await drawPictureUsingCurrentRenderer(recorder.endRecording());
274278

275-
await matchGoldenFile('${name}_drawVertices_imageShader.png', region: drawRegion);
279+
await matchGoldenFile('${name}_drawVertices_imageShader.png',
280+
region: drawRegion);
276281
}, skip: isHtml); // https://github.com/flutter/flutter/issues/127454;
277282

278283
test('toByteData_rgba', () async {
@@ -286,7 +291,8 @@ Future<void> testMain() async {
286291
test('toByteData_png', () async {
287292
final ui.Image image = await generateImage();
288293

289-
final ByteData? pngData = await image.toByteData(format: ui.ImageByteFormat.png);
294+
final ByteData? pngData =
295+
await image.toByteData(format: ui.ImageByteFormat.png);
290296
expect(pngData, isNotNull);
291297
expect(pngData!.lengthInBytes, isNonZero);
292298
}, skip: isHtml); // https://github.com/flutter/flutter/issues/126611
@@ -300,19 +306,18 @@ Future<void> testMain() async {
300306
for (int x = 0; x < 15; x++) {
301307
final ui.Offset center = ui.Offset(x * 10 + 5, y * 10 + 5);
302308
final ui.Color color = ui.Color.fromRGBO(
303-
(center.dx * 256 / 150).round(),
304-
(center.dy * 256 / 150).round(), 0, 1);
309+
(center.dx * 256 / 150).round(),
310+
(center.dy * 256 / 150).round(),
311+
0,
312+
1);
305313
canvas.drawCircle(center, 5, ui.Paint()..color = color);
306314
}
307315
}
308316
return recorder.endRecording().toImage(150, 150);
309317
});
310318

311319
Uint8List generatePixelData(
312-
int width,
313-
int height,
314-
ui.Color Function(double, double) generator
315-
) {
320+
int width, int height, ui.Color Function(double, double) generator) {
316321
final Uint8List data = Uint8List(width * height * 4);
317322
int outputIndex = 0;
318323
for (int y = 0; y < height; y++) {
@@ -342,7 +347,8 @@ Future<void> testMain() async {
342347
);
343348
});
344349
final Completer<ui.Image> completer = Completer<ui.Image>();
345-
ui.decodeImageFromPixels(pixels, 150, 150, ui.PixelFormat.rgba8888, completer.complete);
350+
ui.decodeImageFromPixels(
351+
pixels, 150, 150, ui.PixelFormat.rgba8888, completer.complete);
346352
return completer.future;
347353
});
348354

@@ -375,8 +381,7 @@ Future<void> testMain() async {
375381

376382
emitImageTests('codec_uri', () async {
377383
final ui.Codec codec = await renderer.instantiateImageCodecFromUrl(
378-
Uri(path: '/test_images/mandrill_128.png')
379-
);
384+
Uri(path: '/test_images/mandrill_128.png'));
380385
expect(codec.frameCount, 1);
381386

382387
final ui.FrameInfo info = await codec.getNextFrame();
@@ -388,12 +393,14 @@ Future<void> testMain() async {
388393
if (!isFirefox) {
389394
emitImageTests('svg_image_bitmap', () async {
390395
final DomBlob svgBlob = createDomBlob(<String>[
391-
'''
396+
'''
392397
<svg xmlns="http://www.w3.org/2000/svg" width="150" height="150">
393398
<path d="M25,75 A50,50 0 1,0 125 75 L75,25 Z" stroke="blue" stroke-width="10" fill="red"></path>
394399
</svg>
395400
'''
396-
], <String, String>{'type': 'image/svg+xml'});
401+
], <String, String>{
402+
'type': 'image/svg+xml'
403+
});
397404
final String url = domWindow.URL.createObjectURL(svgBlob);
398405
final DomHTMLImageElement image = createDomHTMLImageElement();
399406
final Completer<void> completer = Completer<void>();
@@ -410,7 +417,8 @@ Future<void> testMain() async {
410417

411418
expect(bitmap.width.toDartInt, 150);
412419
expect(bitmap.height.toDartInt, 150);
413-
final ui.Image uiImage = await renderer.createImageFromImageBitmap(bitmap);
420+
final ui.Image uiImage =
421+
await renderer.createImageFromImageBitmap(bitmap);
414422

415423
if (isSkwasm) {
416424
// Skwasm transfers the bitmap to the web worker, so it should be disposed/consumed.
@@ -426,12 +434,14 @@ Future<void> testMain() async {
426434
if (!isFirefox && !isHtml) {
427435
emitImageTests('svg_image_bitmap_texture_source', () async {
428436
final DomBlob svgBlob = createDomBlob(<String>[
429-
'''
437+
'''
430438
<svg xmlns="http://www.w3.org/2000/svg" width="150" height="150">
431439
<path d="M25,75 A50,50 0 1,0 125 75 L75,25 Z" stroke="blue" stroke-width="10" fill="red"></path>
432440
</svg>
433441
'''
434-
], <String, String>{'type': 'image/svg+xml'});
442+
], <String, String>{
443+
'type': 'image/svg+xml'
444+
});
435445
final String url = domWindow.URL.createObjectURL(svgBlob);
436446
final DomHTMLImageElement image = createDomHTMLImageElement();
437447
final Completer<void> completer = Completer<void>();
@@ -444,23 +454,27 @@ Future<void> testMain() async {
444454
image.src = url;
445455
await completer.future;
446456

447-
if(isSkwasm) {
457+
if (isSkwasm) {
448458
// Send something we can actually transfer to a worker, unfortunately we can't transfer an element.
449-
final DomImageBitmap bitmap = await createImageBitmap(image as JSObject);
459+
final DomImageBitmap bitmap =
460+
await createImageBitmap(image as JSObject);
450461
expect(bitmap.width.toDartInt, 150);
451462
expect(bitmap.height.toDartInt, 150);
452-
453-
final ui.Image uiImage = renderer.createImageFromTextureSource(bitmap, width: 150, height: 150);
463+
464+
final ui.Image uiImage = renderer.createImageFromTextureSource(bitmap,
465+
width: 150, height: 150);
454466
return uiImage;
455467
} else {
456-
final ui.Image uiImage = renderer.createImageFromTextureSource(image, width: 150, height: 150);
468+
final ui.Image uiImage = renderer.createImageFromTextureSource(image,
469+
width: 150, height: 150);
457470
return uiImage;
458471
}
459472
});
460473
}
461474

462475
emitImageTests('codec_list_resized', () async {
463-
final ByteBuffer data = await httpFetchByteBuffer('/test_images/mandrill_128.png');
476+
final ByteBuffer data =
477+
await httpFetchByteBuffer('/test_images/mandrill_128.png');
464478
final ui.Codec codec = await renderer.instantiateImageCodec(
465479
data.asUint8List(),
466480
targetWidth: 150,

0 commit comments

Comments
 (0)