summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/javascripts/rectangles/clipper.js3
-rw-r--r--assets/javascripts/rectangles/wheel.js59
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
+}
+