# Pinch Zoom Canvas Strongly inspired by [img-touch-canvas](https://github.com/rombdn/img-touch-canvas). It's a simple library for pinch to zoom an image based on a canvas element for smooth rendering. The library use a Impetus for adding a momentus on move the image zoomed. Impetus is not required but recommended. #### Features: - Momentum for move the image zoomed - Pintch to zoom and center between the touches - Double tap to zoom - Stopping the event when the element is inactive This plugin is written in **Vanilla JS**. #### Tested on: - iOS Safari (8.x, 9.x) - Android Google Chrome - Cordova App - Google Chrome #### Demo [Open this link into mobile device](https://vash15.github.io/pinch-zoom-canvas/demo/) ## Install #### bower ``` $ bower install --save pinch-zoom-canvas ``` #### npm ``` $ npm install --save pinch-zoom-canvas ``` #### browser ```html ``` ## Options - `canvas` mandatory. It is a DOM element where the image is rendered. - `path` mandatory. It is a path url of image. - `doubletap` optional (default `true`). Double tap for zooming. - `momentum` optional (defalut `false`). Set a momentum when the image is dragged. This parameter require [Impetus](https://github.com/SonoIo/impetus) library. - `maxZoom` optional (default `2`). It is the zoom max. - `onZoomEnd` optional (default `null`). It is a callback function called when the pinch ended. - `onZoom` optional (default `null`). It is a callback function called when zooming. - `threshold` optional (default `40`). Area (in px) of the screen to release touch events. ## API ### pause() Stop the render canvas. ### resume() Resume the render canvas. ### calculateOffset() Update the canvas offset. ### isZommed() Return a boolean value for the image state of zoomed. ### destroy() Stop all events and render canvas. ## Usage ```html ``` ```js var pinchZoom = new PinchZoomCanvas({ canvas: document.getElementById('mycanvas'), path: "your image url", momentum: true, zoomMax: 2, doubletap: true, onZoomEnd: function (zoom, zoomed) { console.log("---> is zoomed: %s", zoomed); console.log("---> zoom end at %s", zoom); }, onZoom: function (zoom) { console.log("---> zoom is %s", zoom); } }); ``` ## Licence ------------ See the [LICENSE](LICENSE.txt) file.