diff options
| -rw-r--r-- | assets/javascripts/rectangles/clipper.js | 3 | ||||
| -rw-r--r-- | assets/javascripts/rectangles/wheel.js | 59 |
2 files changed, 62 insertions, 0 deletions
diff --git a/assets/javascripts/rectangles/clipper.js b/assets/javascripts/rectangles/clipper.js index bd0c521..6e5b93c 100644 --- a/assets/javascripts/rectangles/clipper.js +++ b/assets/javascripts/rectangles/clipper.js @@ -37,6 +37,7 @@ var clipper = new function(){ function bind(){ canvas.addEventListener("mousedown", function(e){ + e.stopPropagation() var x = e.pageX, y = e.pageY mouse = new rect (x,y) if (e.shiftKey) { @@ -57,6 +58,7 @@ var clipper = new function(){ } }) canvas.addEventListener("mousemove", function(e){ + e.stopPropagation() var x, y if (e.shiftKey) { x = quantize( e.pageX, 10 ) @@ -84,6 +86,7 @@ var clipper = new function(){ } }) document.addEventListener("mouseup", function(e){ + e.stopPropagation() if (clipper.creating) { if (mouse.height() != 0 && mouse.width() != 0) { rects.push(mouse.translate()) diff --git a/assets/javascripts/rectangles/wheel.js b/assets/javascripts/rectangles/wheel.js new file mode 100644 index 0000000..9773a8c --- /dev/null +++ b/assets/javascripts/rectangles/wheel.js @@ -0,0 +1,59 @@ +/* + usage: + + base.wheel = new wheel({ + el: document.querySelector("#map"), + update: function(val, delta){ + // do something with val + }, + }) + +*/ + +function wheel (opt) { + opt = defaults(opt, { + propagate: false, + locked: false, + ratio: 0.02, + val: 0, + min: -Infinity, + max: Infinity, + el: document, + fn: function(){} + }) + + el.addEventListener('mousewheel', onMouseWheel, false); + el.addEventListener('DOMMouseScroll', onMouseWheel, false); + function onMouseWheel (e) { + if (opt.locked) { + return + } + if (! opt.propagate) { + e.stopPropagation() + e.preventDefault() + } + + var delta = 0; + + // WebKit + if ( event.wheelDeltaY ) { + delta -= event.wheelDeltaY * opt.ratio + } + // Opera / Explorer 9 + else if ( event.wheelDelta ) { + delta -= event.wheelDelta * opt.ratio + } + // Firefox + else if ( event.detail ) { + delta += event.detail * 2 + } + if (! opt.reversible && delta < 0) return; + + opt.val = clamp(opt.val + delta, opt.min, opt.max) + + opt.update(opt.val, delta) + } + + return opt +} + |
