Skip to content

Commit a9e3db5

Browse files
committed
Add zoomMax option
1 parent d0aeab3 commit a9e3db5

File tree

8 files changed

+66
-53
lines changed

8 files changed

+66
-53
lines changed

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,14 @@ $("#image1").imgViewer("option", "zoomStep", 0.05);
7575
```javascript
7676
$("#image1").imgViewer("option", "zoom", 3);
7777
```
78+
###zoomMax
79+
* Get/Set the limit on the maximum zoom level of the image - values less than 1 have no affect
80+
* Default: 0 (ie no limit on zoom)
81+
* Example - to restrict zoom to 3x or less:
82+
83+
```javascript
84+
$("#image1").imgViewer("option", "zoomMax", 3);
85+
```
7886
###zoomable
7987
* Controls if image will be zoomable
8088
* Default: true
@@ -189,6 +197,9 @@ This plugin is provided under the [MIT License](http://opensource.org/licenses/M
189197
Copyright (c) 2013 Wayne Mogg.
190198

191199
## Release History
200+
### 0.9.1
201+
- Add zoomMax option to limit maximum possible zoom level
202+
192203
### 0.9.0
193204
- Replace jquery.event.ue with hammer.js and jquery.hammer.js for more flexibility with touch gesture support
194205
- Add dragable option allowing user to disable dragging

demo.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ <h2>Centred in a div - Dynamic Width</h2>
3333
<script type="text/javascript">
3434
;(function($) {
3535
$("#image1").imgViewer({
36+
zoomMax: 4,
3637
onClick: function( e, self ) {
3738
var pos = self.cursorToImg( e.pageX, e.pageY);
38-
$("#position").html(e.pageX + " " + e.pageY + " " + pos.x + " " + pos.y);
39+
$("#position").html(e.pageX + " " + e.pageY + " " + pos.x + " " + pos.y + " zoom: " + self.options.zoom);
3940
}
4041
});
4142
function test(e, self) {

dist/imgViewer.js

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! jQuery imgViewer - v0.9.0 - 2016-08-07
1+
/*! jQuery imgViewer - v0.9.1 - 2016-12-31
22
* https://github.com/waynegm/imgViewer
33
* Copyright (c) 2016 Wayne Mogg; Licensed MIT */
44
/*
@@ -9,6 +9,7 @@
99
options: {
1010
zoomStep: 0.1,
1111
zoom: 1,
12+
zoomMax: 0,
1213
zoomable: true,
1314
dragable: true,
1415
onClick: null,
@@ -35,7 +36,7 @@
3536
// the pixel coordinate of the original image at the center of the viewport
3637
self.vCenter = {};
3738
// a flag used to decide if a mouse click is part of a drag or a proper click
38-
self.dragging = false;
39+
self.drag = false;
3940
self.pinch = false;
4041
// a flag used to check the target image has loaded
4142
self.ready = false;
@@ -211,27 +212,23 @@
211212
self.update();
212213
}
213214
}
214-
215-
$zimg.on( "panstart" , function(ev) {
215+
$zimg.on("pan", function(ev) {
216216
ev.preventDefault();
217-
if (!self.pinch) {
217+
if (!self.drag) {
218+
self.drag = true;
218219
self.dragXorg = self.vCenter.x;
219220
self.dragYorg = self.vCenter.y;
220221
startRenderLoop();
221-
}
222-
});
223-
224-
$zimg.on( "panmove", function(ev) {
225-
ev.preventDefault();
226-
if (!self.pinch) {
222+
} else {
227223
self.vCenter.x = self.dragXorg - ev.gesture.deltaX/self.options.zoom;
228224
self.vCenter.y = self.dragYorg - ev.gesture.deltaY/self.options.zoom;
229225
}
230226
});
231-
227+
232228
$zimg.on( "panend", function(ev) {
233229
ev.preventDefault();
234-
if (!self.pinch) {
230+
if (self.drag) {
231+
self.drag = false;
235232
stopRenderLoop();
236233
self.update();
237234
}
@@ -253,8 +250,7 @@
253250
_unbind_drag_events: function() {
254251
var self = this;
255252
var $zimg = $(self.zimg);
256-
$zimg.off("panstart");
257-
$zimg.off("panmove");
253+
$zimg.off("pan");
258254
$zimg.off("panend");
259255
},
260256

@@ -282,6 +278,11 @@
282278
return;
283279
}
284280
break;
281+
case 'zoomMax':
282+
if (parseFloat(value) < 0 || isNaN(parseFloat(value))) {
283+
return;
284+
}
285+
break;
285286
}
286287
var version = $.ui.version.split('.');
287288
if (version[0] > 1 || version[1] > 8) {
@@ -449,9 +450,14 @@
449450
height = $img.height(),
450451
offset = $img.offset(),
451452
zoom = this.options.zoom,
453+
zoomMax = this.options.zoomMax,
452454
half_width = width/2,
453455
half_height = height/2;
454456

457+
if (zoomMax !==0) {
458+
zoom = Math.min(zoom, zoomMax);
459+
this.options.zoom = zoom;
460+
}
455461
if (zoom <= 1) {
456462
zTop = 0;
457463
zLeft = 0;

dist/imgViewer.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

imgViewer.jquery.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "imgViewer",
33
"title": "jQuery imgViewer",
44
"description": "jQuery plugin to zoom and pan images, even those with a size that is a percentage of their container.",
5-
"version": "0.9.0",
5+
"version": "0.9.1",
66
"homepage": "",
77
"author": {
88
"name": "Wayne Mogg"

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jquery-imgViewer-plugin",
3-
"version": "0.9.0",
3+
"version": "0.9.1",
44
"engines": {
55
"node": ">= 0.8.0"
66
},

src/imgViewer.js

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
options: {
1616
zoomStep: 0.1,
1717
zoom: 1,
18+
zoomMax: 0,
1819
zoomable: true,
1920
dragable: true,
2021
onClick: null,
@@ -219,7 +220,6 @@
219220
}
220221
$zimg.on("pan", function(ev) {
221222
ev.preventDefault();
222-
console.log(ev.type);
223223
if (!self.drag) {
224224
self.drag = true;
225225
self.dragXorg = self.vCenter.x;
@@ -239,36 +239,6 @@
239239
self.update();
240240
}
241241
});
242-
243-
/* $zimg.on( "panstart" , function(ev) {
244-
ev.preventDefault();
245-
if (!self.pinch) {
246-
self.drag = true;
247-
self.dragXorg = self.vCenter.x;
248-
self.dragYorg = self.vCenter.y;
249-
startRenderLoop();
250-
console.log("panstart");
251-
}
252-
});
253-
254-
$zimg.on( "panmove", function(ev) {
255-
ev.preventDefault();
256-
if (!self.pinch) {
257-
self.vCenter.x = self.dragXorg - ev.gesture.deltaX/self.options.zoom;
258-
self.vCenter.y = self.dragYorg - ev.gesture.deltaY/self.options.zoom;
259-
console.log("panmove");
260-
}
261-
});
262-
263-
$zimg.on( "panend", function(ev) {
264-
ev.preventDefault();
265-
if (!self.pinch) {
266-
self.drag = false;
267-
stopRenderLoop();
268-
self.update();
269-
}
270-
});
271-
*/
272242
},
273243
/*
274244
* Unbind events
@@ -314,6 +284,11 @@
314284
return;
315285
}
316286
break;
287+
case 'zoomMax':
288+
if (parseFloat(value) < 0 || isNaN(parseFloat(value))) {
289+
return;
290+
}
291+
break;
317292
}
318293
var version = $.ui.version.split('.');
319294
if (version[0] > 1 || version[1] > 8) {
@@ -481,9 +456,14 @@
481456
height = $img.height(),
482457
offset = $img.offset(),
483458
zoom = this.options.zoom,
459+
zoomMax = this.options.zoomMax,
484460
half_width = width/2,
485461
half_height = height/2;
486462

463+
if (zoomMax !==0) {
464+
zoom = Math.min(zoom, zoomMax);
465+
this.options.zoom = zoom;
466+
}
487467
if (zoom <= 1) {
488468
zTop = 0;
489469
zLeft = 0;

0 commit comments

Comments
 (0)