UNPKG

cdf

Version:

A library for creating oldschool demo-like animations with JavaScript

86 lines (71 loc) 2.46 kB
(function (global) { var lib = global.cdf || {}; var MouseTracker = lib.MouseTracker = function () { this.canvas_list = []; }; var outState = function(){return { x:-1, y:-1, button: 0, buttons: 0 }}; var mouseObj = function(mouse){ return { x:mouse.x, y:mouse.y, button:mouse.button, buttons:mouse.buttons } }; MouseTracker.prototype = { addMouseTrack: function (canvas, preserveContextMenu, removeDrag) { var instance = this; this.buttons = 0; this.canvas_list.push(canvas); canvas.cursor = {x:0,y:0}; canvas.canvas.mouse = canvas.mouse = canvas.canvas.prevMouse = outState(); var mouseOut = function () { this.prevMouse = this.mouse; this.mouse = outState(); }; var mouseDown = function (ev) { this.mouse.button = ev.which; this.mouse.buttons = ev.buttons; if(removeDrag){ ev.preventDefault(); return false; } }; var mouseUp = function(ev){ this.mouse.button = 0; this.mouse.buttons = ev.buttons; }; var mouseMove = function (ev) { var rect = this.getBoundingClientRect(); this.mouse.x = Math.round(ev.clientX - rect.left); this.mouse.y = Math.round(ev.clientY - rect.top) }; canvas.canvas.addEventListener('mouseout', mouseOut , false); canvas.canvas.addEventListener('mousedown', mouseDown, false); canvas.canvas.addEventListener('mouseup', mouseUp, false); canvas.canvas.addEventListener('mousemove', mouseMove, false); if (!preserveContextMenu) canvas.canvas.addEventListener('contextmenu', function (e) { if (e.button === 2) { e.preventDefault(); return false; } }, false); if(removeDrag){ canvas.canvas.setAttribute('draggable','false'); canvas.canvas.style['user-drag'] = 'none'; canvas.canvas.style['-webkit-user-drag'] = 'none'; canvas.canvas.style['-moz-user-drag'] = 'none'; canvas.canvas.style['-ms-user-drag'] = 'none'; } return this; }, update: function () { this.canvas_list.forEach(function(c){ var prevMouse = mouseObj(c.mouse); c.mouse = mouseObj(c.element.mouse);; c.mouse.prev = prevMouse; }); } }; if(typeof module!=='undefined'&& module.exports){module.exports=lib;}else{global.cdf=lib;} })(window);