Zoom-Prozent relativ zum angewandten Massstab statt zur Einpassung

Die Zoom-Anzeige band 100% bisher an die eingepasste Default-Ansicht, nicht
an den angewandten Papier-Massstab — der Wert driftete willkürlich. Er wird
jetzt in App.tsx aus angewandtem Nenner und Live-Nenner abgeleitet
(scaleDenominator / liveScale * 100): im angewandten Massstab exakt 100%,
hineinzoomen >100%, herauszoomen <100%. Die fit-basierte onZoom-Meldekette
aus PlanView entfällt (Single Source).
This commit is contained in:
2026-07-04 00:02:50 +02:00
parent 5d99701024
commit 989e61c261
2 changed files with 9 additions and 26 deletions
-12
View File
@@ -210,11 +210,6 @@ export interface PlanViewProps {
* verhält sich die Ansicht wie zuvor.
*/
onCursor?: (model: Vec2 | null) => void;
/**
* Meldet den aktuellen Zoom in Prozent relativ zur eingepassten Ansicht
* (100 % = eingepasst). Optional.
*/
onZoom?: (percent: number) => void;
/**
* Meldet den LIVE Papier-Massstab als Nenner N (1:N), berechnet aus dem
* aktuellen Ausschnitt + Canvas-Größe + dpi (docs/design/plans-output.md §3).
@@ -351,7 +346,6 @@ export const PlanView = forwardRef<PlanViewHandle, PlanViewProps>(
plan,
resetKey,
onCursor,
onZoom,
onScale,
onSelect,
onMarquee,
@@ -554,12 +548,6 @@ export const PlanView = forwardRef<PlanViewHandle, PlanViewProps>(
};
}, []);
// Zoom in Prozent (eingepasst = 100 %) nach oben melden: kleinere viewBox-
// Breite = stärker hineingezoomt. Reiner Bericht; ändert die Ansicht nicht.
useEffect(() => {
onZoom?.((defaultView.w / view.w) * 100);
}, [onZoom, defaultView.w, view.w]);
// LIVE Papier-Massstab (1:N) nach oben melden. Berechnung aus der effektiven
// meet-Skala (Bildschirm-px je viewBox-Einheit) → px je Meter → mm je Meter,
// verglichen mit der Papier-Abbildung. Aktualisiert bei Ausschnitts-/Größen-