1 /** 2 * potree.js 3 * http://potree.org 4 * 5 * Copyright 2012, Markus Sch�tz 6 * Licensed under the GPL Version 2 or later. 7 * - http://potree.org/wp/?page_id=7 8 * - http://www.gnu.org/licenses/gpl-3.0.html 9 * 10 */ 11 12 /** 13 * 14 * @class 15 */ 16 function MouseListener(){ 17 } 18 19 MouseListener.x = null; 20 MouseListener.y = null; 21 MouseListener.pressedKeys = new Array(); 22 23 MouseListener.listener = new Array(); 24 25 MouseListener.addListener = function(listener){ 26 MouseListener.listener.push(listener); 27 }; 28 29 MouseListener.removeListener = function(listener){ 30 MouseListener.listener.remove(listener); 31 }; 32 33 MouseListener.mouseDown = function(event){ 34 MouseListener.pressedKeys.push(event.button); 35 36 for(var i = 0; i < MouseListener.listener.length; i++){ 37 MouseListener.listener[i].invokeMouseDown(event); 38 } 39 40 return true; 41 }; 42 43 MouseListener.mouseUp = function(event){ 44 MouseListener.pressedKeys.remove(event.button); 45 for(var i = 0; i < MouseListener.listener.length; i++){ 46 MouseListener.listener[i].invokeMouseUp(event); 47 } 48 49 return true; 50 }; 51 52 MouseListener.mouseWheel = function(event){ 53 var evt=window.event || event; //equalize event object 54 var delta=evt.detail? evt.detail*(-120) : evt.wheelDelta; //check for detail first so Opera uses that instead of wheelDelta 55 56 for(var i = 0; i < MouseListener.listener.length; i++){ 57 MouseListener.listener[i].invokeMouseWheel(delta); 58 } 59 }; 60 61 MouseListener.mouseMove = function(event){ 62 if(MouseListener.x == null){ 63 MouseListener.x = event.screenX; 64 MouseListener.y = event.screenY; 65 } 66 67 var diffX = event.screenX - MouseListener.x; 68 var diffY = event.screenY - MouseListener.y; 69 MouseListener.x = event.screenX; 70 MouseListener.y = event.screenY; 71 72 73 74 if(MouseListener.pressedKeys.length > 0){ 75 for(var i = 0; i < MouseListener.listener.length; i++){ 76 MouseListener.listener[i].invokeMouseDrag(event, MouseListener.pressedKeys, diffX, diffY); 77 } 78 }else{ 79 for(var i = 0; i < MouseListener.listener.length; i++){ 80 MouseListener.listener[i].invokeMouseMove(event, diffX, diffY); 81 } 82 } 83 84 return true; 85 86 };