c37533110b
_fitCanvasToImage() prima scalava solo canvas e sfondo: gli oggetti già piazzati restavano alle vecchie coordinate pixel, e un salvataggio subito dopo scriveva il nuovo imageScale accanto a posizioni mai spostate - markers/frecce/aree finivano fuori posto anche nel viewer dell'operatore. Ora, quando la scala cambia (f = newScale/oldScale, conservata in this._currentScale), ogni oggetto viene ricalcolato coerentemente con getAnnotationsJson/loadAnnotationsJson (il riferimento): - left/top sempre *= f - area (fabric.Rect): width/height *= f, non scaleX/scaleY - è quello che getAnnotationsJson legge e loadAnnotationsJson ricostruisce - text (IText): fontSize *= f, stesso motivo - marker/arrow (Group): scaleX/scaleY *= f, il loro width/height non viene mai riletto al caricamento - arrow: arrowX1/Y1/X2/Y2 *= f, sono nello stesso spazio di left/top (li aggiorna anche object:modified con un delta) e finiscono nel JSON Aggiunta guardia beforeunload quando isDirty (annotazioni non salvate). Test in tests/js/test_annotation_editor_resize.js (node, senza Fabric.js reale: richiede jsdom non installato e il progetto non ha npm deps - canvas stand-in minimale che copre solo la superficie usata da _fitCanvasToImage). annotation-viewer.js non toccato. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>