diff --git a/src/lab.tsx b/src/lab.tsx index e2f322c4d9a2178b4ddd3fcd43ccd0c2e5decbea..3b30ebac641bb1e3382acf614f9db37df109e4cc 100644 --- a/src/lab.tsx +++ b/src/lab.tsx @@ -115,6 +115,12 @@ export class Lab extends React.Component<{}> { } } + // Prise en compte du redimensionnement navigateur (ou agrandissement/retrécissement de la vue) + paper.view.onResize = (event) => { + if(this.raster != null) { + paper.view.center = this.raster.position; + } + } // this.canvas.width = this.canvas.offsetWidth; // this.canvas.height = this.canvas.offsetHeight; @@ -214,6 +220,8 @@ export class Lab extends React.Component<{}> { this.zoom(1.10, target); } + // Zooms par delta + /** * Moins de zoom */ @@ -236,7 +244,7 @@ export class Lab extends React.Component<{}> { let oldZoom = paper.view.zoom; let newZoom = oldZoom * zoomFactor; - if(typeof target !== "undefined") { + if(target != undefined) { // let viewPosition = paper.view.viewToProject(target); let viewPosition = target; let mpos = viewPosition; @@ -247,7 +255,17 @@ export class Lab extends React.Component<{}> { paper.view.center = paper.view.center.add(offset); } - paper.view.zoom = newZoom; + + // On borne les zooms pour ne pas que ça parte partout + // Zoom minimum = zoom fit + let minZoom = 0; + if(this.data != null) { + let xZoomFactor = Math.min(1, this.canvas.width / this.data.pictureSize.width) + let yZoomFactor = Math.min(1, this.canvas.height / this.data.pictureSize.height); + minZoom = Math.min(xZoomFactor, yZoomFactor) / paper.view.pixelRatio; + } + let maxZoom = 10; + paper.view.zoom = Math.min(maxZoom, Math.max(newZoom, minZoom)); this.onZoomChanged(); }