| // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| library CanvasTest; |
| |
| import 'dart:html'; |
| |
| import 'package:async_helper/async_minitest.dart'; |
| |
| main() { |
| CanvasElement canvas; |
| CanvasRenderingContext2D context; |
| int width = 100; |
| int height = 100; |
| |
| canvas = new CanvasElement(width: width, height: height); |
| document.body!.append(canvas); |
| |
| context = canvas.context2D; |
| |
| test('CreateImageData', () { |
| ImageData image = context.createImageData(canvas.width, canvas.height); |
| List<int> data = image.data; |
| |
| expect(data.length, 40000); |
| checkPixel(data, 0, [0, 0, 0, 0]); |
| checkPixel(data, width * height - 1, [0, 0, 0, 0]); |
| |
| data[100] = 200; |
| expect(data[100], equals(200)); |
| }); |
| |
| test('toDataUrl', () { |
| var canvas = new CanvasElement(width: 100, height: 100); |
| var context = canvas.context2D; |
| context.fillStyle = 'red'; |
| context.fill(); |
| |
| var url = canvas.toDataUrl(); |
| |
| var img = new ImageElement(); |
| img.onLoad.listen(expectAsync((_) { |
| expect(img.complete, true); |
| })); |
| img.onError.listen((_) { |
| fail('URL failed to load.'); |
| }); |
| img.src = url; |
| }); |
| } |
| |
| void checkPixel(List<int> data, int offset, List<int> rgba) { |
| offset *= 4; |
| for (var i = 0; i < 4; ++i) { |
| expect(data[offset + i], equals(rgba[i])); |
| } |
| } |