task(G2): layout bar UI + viewport minimap widget, zoomPan setView, canvas layout bridge

This commit is contained in:
Agent Zero
2026-08-29 02:43:51 +02:00
parent d4e1b781a6
commit 7feed9e9e3
6 changed files with 454 additions and 0 deletions
+11
View File
@@ -60,6 +60,17 @@ export class ZoomPanController {
this.offsetY = -minY * this.scale + padding;
}
/**
* Setzt die Absolute Ansicht: Welt-Punkt `center` landet exakt im
* Canvas-Zentrum bei `scale` (Task G2 — Layout zoom-to).
*/
setView(center: { x: number; y: number }, scale: number): void {
const s = Math.max(0.01, Math.min(100, scale));
this.scale = s;
this.offsetX = this.canvas.width / 2 - center.x * s;
this.offsetY = this.canvas.height / 2 - center.y * s;
}
zoomToRect(rect: { minX: number; minY: number; maxX: number; maxY: number }): void {
const padding = 20;
const w = rect.maxX - rect.minX;