task(G2): layout bar UI + viewport minimap widget, zoomPan setView, canvas layout bridge
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user