2022-10-24 00:02:35 +00:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
import 'document_types.dart';
|
|
|
|
|
|
|
|
class MyPainter extends CustomPainter {
|
2022-10-24 14:28:56 +00:00
|
|
|
List<Stroke> strokes;
|
|
|
|
double zoom;
|
|
|
|
Offset offset;
|
2022-10-24 00:02:35 +00:00
|
|
|
|
2022-10-24 14:28:56 +00:00
|
|
|
MyPainter({required this.strokes, required this.zoom, required this.offset});
|
2022-10-24 00:02:35 +00:00
|
|
|
|
|
|
|
@override
|
|
|
|
void paint(Canvas canvas, Size size) {
|
|
|
|
var paint = Paint()
|
|
|
|
..color = Colors.blue
|
|
|
|
..strokeCap = StrokeCap.square;
|
|
|
|
|
2022-10-24 14:28:56 +00:00
|
|
|
|
|
|
|
|
|
|
|
// ..strokeWidth = 3.0;
|
|
|
|
// canvas.scale(zoom);
|
|
|
|
print("zoom: ${zoom}");
|
2022-10-24 10:27:38 +00:00
|
|
|
canvas.drawColor(Color.fromRGBO(255, 255, 255, .1), BlendMode.src);
|
|
|
|
|
2022-10-24 14:28:56 +00:00
|
|
|
final pagewidth = size.width * zoom;
|
|
|
|
|
|
|
|
final sidewidth = (size.width - pagewidth) / 2;
|
|
|
|
canvas.drawLine(Offset(sidewidth, .0), Offset(sidewidth, size.height), paint);
|
|
|
|
canvas.drawLine(Offset(sidewidth + pagewidth, .0), Offset(sidewidth + pagewidth, size.height), paint);
|
|
|
|
|
2022-10-24 00:02:35 +00:00
|
|
|
for(final stroke in strokes){
|
|
|
|
for(int i = 0; i < stroke.points.length -1; i++){
|
|
|
|
final pt1 = stroke.points[i].point;
|
|
|
|
final pt2 = stroke.points[i+1].point;
|
|
|
|
|
|
|
|
// final strokewidth = _calcAngleDependentWidth(pt1, pt2, stroke.points[i].thickness);
|
|
|
|
canvas.drawLine(pt1, pt2, paint..strokeWidth = stroke.points[i].thickness);
|
|
|
|
}
|
|
|
|
}
|
2022-10-24 14:28:56 +00:00
|
|
|
|
|
|
|
|
2022-10-24 00:02:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
bool shouldRepaint(MyPainter oldDelegate) {
|
|
|
|
return oldDelegate.strokes != strokes;
|
|
|
|
}
|
|
|
|
}
|