mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-12 19:01:09 +08:00
74 lines
1.4 KiB
Dart
74 lines
1.4 KiB
Dart
import 'dart:ui';
|
|
|
|
import 'package:test/fake.dart';
|
|
|
|
class MockCanvas extends Fake implements Canvas {
|
|
int saveCount = 1;
|
|
List<String> methodCalls = [];
|
|
|
|
@override
|
|
void translate(double dx, double dy) {
|
|
final ddx = _normalize(dx);
|
|
final ddy = _normalize(dy);
|
|
methodCalls.add('translate($ddx, $ddy)');
|
|
}
|
|
|
|
@override
|
|
void scale(double sx, [double sy]) {
|
|
final ssx = _normalize(sx);
|
|
if (sy == null) {
|
|
methodCalls.add('scale($ssx)');
|
|
} else {
|
|
final ssy = _normalize(sy);
|
|
methodCalls.add('scale($ssx, $ssy)');
|
|
}
|
|
}
|
|
|
|
double _normalize(double d) {
|
|
// this prevents it from printing -0 which would be harder to assert in tests
|
|
return _isNegativeZero(d) ? 0.0 : d;
|
|
}
|
|
|
|
bool _isNegativeZero(double d) {
|
|
return d.abs() == 0.0 && d.isNegative;
|
|
}
|
|
|
|
@override
|
|
void rotate(double radians) {
|
|
methodCalls.add('rotate($radians)');
|
|
}
|
|
|
|
@override
|
|
void drawRect(Rect rect, Paint paint) {
|
|
methodCalls.add(
|
|
'drawRect(${rect.left}, ${rect.top}, ${rect.width}, ${rect.height})',
|
|
);
|
|
}
|
|
|
|
@override
|
|
void clipRect(
|
|
Rect rect, {
|
|
ClipOp clipOp = ClipOp.intersect,
|
|
bool doAntiAlias = true,
|
|
}) {
|
|
methodCalls.add(
|
|
'clipRect(${rect.left}, ${rect.top}, ${rect.width}, ${rect.height})',
|
|
);
|
|
}
|
|
|
|
@override
|
|
int getSaveCount() {
|
|
return saveCount;
|
|
}
|
|
|
|
@override
|
|
void restore() {
|
|
saveCount--;
|
|
}
|
|
|
|
@override
|
|
void save() {
|
|
saveCount++;
|
|
}
|
|
}
|