mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
250 lines
5.4 KiB
Dart
250 lines
5.4 KiB
Dart
// Copyright 2013 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// @dart = 2.6
|
|
import 'dart:html' as html;
|
|
import 'dart:typed_data';
|
|
|
|
import 'package:ui/src/engine.dart';
|
|
import 'package:ui/ui.dart';
|
|
|
|
/// Contains method name that was called on [MockEngineCanvas] and arguments
|
|
/// that were passed.
|
|
class MockCanvasCall {
|
|
MockCanvasCall._({
|
|
this.methodName,
|
|
this.arguments,
|
|
});
|
|
|
|
final String methodName;
|
|
final dynamic arguments;
|
|
|
|
@override
|
|
String toString() {
|
|
return '$MockCanvasCall($methodName, $arguments)';
|
|
}
|
|
}
|
|
|
|
/// A fake implementation of [EngineCanvas] that logs calls to its methods but
|
|
/// doesn't actually paint anything.
|
|
///
|
|
/// Useful for testing interactions between upper layers of the system with
|
|
/// canvases.
|
|
class MockEngineCanvas implements EngineCanvas {
|
|
final List<MockCanvasCall> methodCallLog = <MockCanvasCall>[];
|
|
|
|
@override
|
|
html.Element get rootElement => null;
|
|
|
|
void _called(String methodName, {dynamic arguments}) {
|
|
methodCallLog.add(MockCanvasCall._(
|
|
methodName: methodName,
|
|
arguments: arguments,
|
|
));
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_called('dispose');
|
|
}
|
|
|
|
@override
|
|
void clear() {
|
|
_called('clear');
|
|
}
|
|
|
|
@override
|
|
void save() {
|
|
_called('save');
|
|
}
|
|
|
|
@override
|
|
void restore() {
|
|
_called('restore');
|
|
}
|
|
|
|
@override
|
|
void translate(double dx, double dy) {
|
|
_called('translate', arguments: <String, double>{
|
|
'dx': dx,
|
|
'dy': dy,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void scale(double sx, double sy) {
|
|
_called('scale', arguments: <String, double>{
|
|
'sx': sx,
|
|
'sy': sy,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void rotate(double radians) {
|
|
_called('rotate', arguments: radians);
|
|
}
|
|
|
|
@override
|
|
void skew(double sx, double sy) {
|
|
_called('skew', arguments: <String, double>{
|
|
'sx': sx,
|
|
'sy': sy,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void transform(Float32List matrix4) {
|
|
_called('transform', arguments: matrix4);
|
|
}
|
|
|
|
@override
|
|
void clipRect(Rect rect, ClipOp op) {
|
|
_called('clipRect', arguments: rect);
|
|
}
|
|
|
|
@override
|
|
void clipRRect(RRect rrect) {
|
|
_called('clipRRect', arguments: rrect);
|
|
}
|
|
|
|
@override
|
|
void clipPath(Path path) {
|
|
_called('clipPath', arguments: path);
|
|
}
|
|
|
|
@override
|
|
void drawColor(Color color, BlendMode blendMode) {
|
|
_called('drawColor', arguments: <String, dynamic>{
|
|
'color': color,
|
|
'blendMode': blendMode,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawLine(Offset p1, Offset p2, SurfacePaintData paint) {
|
|
_called('drawLine', arguments: <String, dynamic>{
|
|
'p1': p1,
|
|
'p2': p2,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawPaint(SurfacePaintData paint) {
|
|
_called('drawPaint', arguments: paint);
|
|
}
|
|
|
|
@override
|
|
void drawRect(Rect rect, SurfacePaintData paint) {
|
|
_called('drawRect', arguments: <String, dynamic>{
|
|
'rect': rect,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawRRect(RRect rrect, SurfacePaintData paint) {
|
|
_called('drawRRect', arguments: <String, dynamic>{
|
|
'rrect': rrect,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawDRRect(RRect outer, RRect inner, SurfacePaintData paint) {
|
|
_called('drawDRRect', arguments: <String, dynamic>{
|
|
'outer': outer,
|
|
'inner': inner,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawOval(Rect rect, SurfacePaintData paint) {
|
|
_called('drawOval', arguments: <String, dynamic>{
|
|
'rect': rect,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawCircle(Offset c, double radius, SurfacePaintData paint) {
|
|
_called('drawCircle', arguments: <String, dynamic>{
|
|
'c': c,
|
|
'radius': radius,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawPath(Path path, SurfacePaintData paint) {
|
|
_called('drawPath', arguments: <String, dynamic>{
|
|
'path': path,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawShadow(
|
|
Path path, Color color, double elevation, bool transparentOccluder) {
|
|
_called('drawShadow', arguments: <String, dynamic>{
|
|
'path': path,
|
|
'color': color,
|
|
'elevation': elevation,
|
|
'transparentOccluder': transparentOccluder,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawImage(Image image, Offset p, SurfacePaintData paint) {
|
|
_called('drawImage', arguments: <String, dynamic>{
|
|
'image': image,
|
|
'p': p,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawImageRect(Image image, Rect src, Rect dst, SurfacePaintData paint) {
|
|
_called('drawImageRect', arguments: <String, dynamic>{
|
|
'image': image,
|
|
'src': src,
|
|
'dst': dst,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawParagraph(Paragraph paragraph, Offset offset) {
|
|
_called('drawParagraph', arguments: <String, dynamic>{
|
|
'paragraph': paragraph,
|
|
'offset': offset,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawVertices(
|
|
Vertices vertices, BlendMode blendMode, SurfacePaintData paint) {
|
|
_called('drawVertices', arguments: <String, dynamic>{
|
|
'vertices': vertices,
|
|
'blendMode': blendMode,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void drawPoints(PointMode pointMode, Float32List points, SurfacePaintData paint) {
|
|
_called('drawPoints', arguments: <String, dynamic>{
|
|
'pointMode': pointMode,
|
|
'points': points,
|
|
'paint': paint,
|
|
});
|
|
}
|
|
|
|
@override
|
|
void endOfPaint() {
|
|
_called('endOfPaint', arguments: <String, dynamic>{});
|
|
}
|
|
}
|