add scaling with hit test

This commit is contained in:
2025-07-05 16:41:43 +00:00
parent 3d41b56889
commit 7cfb9457a2
6 changed files with 177 additions and 75 deletions
+11 -4
View File
@@ -1,11 +1,18 @@
import 'dart:ui';
/// Convert grid space coordinates to screen space coordinates
Offset gsToSs(Offset gsPosition, Offset gsTopLeft) {
return gsPosition - gsTopLeft;
Offset gsToSs(Offset gsPosition, Offset gsTopLeft, double scale) {
return (gsPosition - gsTopLeft) * scale;
}
/// Convert screen space coordinates to grid space coordinates
Offset ssToGs(Offset ssPosition, Offset gsTopLeft) {
return ssPosition + gsTopLeft;
Offset ssToGs(Offset ssPosition, Offset gsTopLeft, double scale) {
return ssPosition / scale + gsTopLeft;
}
Offset newGsTopLeftOnScaling(Offset gsTopLeft, Offset ssFocalPoint, double oldScale, double newScale) {
// gsFocal remains same
// we change gsTopLeft to keep ssFocalPoint same as well
Offset gsFocalPoint = ssToGs(ssFocalPoint, gsTopLeft, oldScale);
return gsFocalPoint - ssFocalPoint / newScale;
}