notes/lib/canvas/my_painter.dart

49 lines
1.3 KiB
Dart
Raw Normal View History

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;
}
}