@@ -12,7 +12,11 @@ $(function(){
12
12
optionTabOpen = true ;
13
13
settingsTabOpen = false ;
14
14
setColor = '#000' ;
15
- defaultName = "Guest" ;
15
+ defaultName = "Guest" ,
16
+ draggingTool = false ,
17
+ dragging = false ;
18
+
19
+ var pastDragX = 0 , pastDragY = 0 ;
16
20
17
21
// Generate an unique ID
18
22
var id = Math . round ( $ . now ( ) * Math . random ( ) ) ;
@@ -99,41 +103,85 @@ $(function(){
99
103
100
104
canvas . on ( 'mousedown' , function ( e ) {
101
105
e . preventDefault ( ) ;
102
- drawing = true ;
103
- prev . x = e . pageX ;
104
- prev . y = e . pageY ;
106
+ if ( ! draggingTool ) {
107
+ drawing = true ;
108
+ prev . x = e . pageX ;
109
+ prev . y = e . pageY ;
110
+ // Hide the instructions
111
+ instructions . fadeOut ( ) ;
112
+ } else {
113
+ //we're dragging the page around
114
+ dragging = true ;
115
+ }
116
+ pastDragX = e . pageX ;
117
+ pastDragY = e . pageY ;
105
118
106
- // Hide the instructions
107
- instructions . fadeOut ( ) ;
108
119
} ) ;
109
120
110
121
doc . bind ( 'mouseup mouseleave' , function ( ) {
111
122
drawing = false ;
123
+ dragging = false ;
112
124
} ) ;
113
125
114
126
var lastEmit = $ . now ( ) ;
115
127
116
128
doc . on ( 'mousemove' , function ( e ) {
117
- if ( $ . now ( ) - lastEmit > 10 ) {
118
- socket . emit ( 'mousemove' , {
119
- 'x' : e . pageX ,
120
- 'y' : e . pageY ,
121
- 'drawing' : drawing ,
122
- 'id' : id ,
123
- 'color' : setColor
124
- } ) ;
125
- lastEmit = $ . now ( ) ;
126
- }
127
-
128
- // Draw a line for the current user's movement, as it is
129
- // not received in the socket.on('moving') event above
130
-
131
- if ( drawing ) {
129
+ if ( ! draggingTool ) {
130
+ if ( $ . now ( ) - lastEmit > 10 ) {
131
+ socket . emit ( 'mousemove' , {
132
+ 'x' : e . pageX ,
133
+ 'y' : e . pageY ,
134
+ 'drawing' : drawing ,
135
+ 'id' : id ,
136
+ 'color' : setColor
137
+ } ) ;
138
+ lastEmit = $ . now ( ) ;
139
+ }
132
140
133
- drawLine ( prev . x , prev . y , e . pageX , e . pageY , setColor ) ;
141
+ // Draw a line for the current user's movement, as it is
142
+ // not received in the socket.on('moving') event above
134
143
135
- prev . x = e . pageX ;
136
- prev . y = e . pageY ;
144
+ if ( drawing ) {
145
+
146
+ drawLine ( prev . x , prev . y , e . pageX , e . pageY , setColor ) ;
147
+
148
+ prev . x = e . pageX ;
149
+ prev . y = e . pageY ;
150
+ }
151
+ } else {
152
+ //we're dragging!
153
+ if ( dragging ) {
154
+ /*
155
+ //get the current (top, left) for canvas element
156
+
157
+ var dX, dY;
158
+ //get the difference between now and then
159
+ dX = e.pageX - pastDragX;
160
+ dY = e.pageY - pastDragY;
161
+
162
+ //we need to find out the relative x,y inside the canvas element
163
+ var relX = e.pageX - curX;
164
+ var relY = e.pageY - curY;
165
+
166
+ var cOriginX = e.pageX - relX;
167
+ var cOriginY = e.pageY - relY;
168
+
169
+ //console.log("dX " + dX + " dY " + dY + " css curX " + curX + " curY " + curY);
170
+
171
+ //$('#paper').css({top: curY + dY, left: curX + dX});
172
+
173
+ pastDragX = e.pageX;
174
+ pastDragY = e.pageY;
175
+ */
176
+ var curX = parseInt ( $ ( '#paper' ) . css ( 'left' ) , 10 ) ;
177
+ var curY = parseInt ( $ ( '#paper' ) . css ( 'top' ) , 10 ) ;
178
+ var dX = e . pageX - pastDragX ;
179
+ var dY = e . pageY - pastDragY ;
180
+ $ ( '#paper' ) . css ( { top : curY + dY , left : curX + dX } ) ;
181
+ // console.log(dX);
182
+ pastDragX = e . pageX ;
183
+ pastDragY = e . pageY ;
184
+ }
137
185
}
138
186
} ) ;
139
187
@@ -237,4 +285,16 @@ $(function(){
237
285
$ ( '#chatBox' ) . val ( "" ) ;
238
286
}
239
287
288
+ //enable/disable the dragging tool
289
+ $ ( '#handTool' ) . click ( function ( ) {
290
+ draggingTool = ! draggingTool ;
291
+ if ( draggingTool ) {
292
+ $ ( 'canvas' ) . addClass ( "canvas-draggable" ) ;
293
+ $ ( '#handTool' ) . addClass ( 'active' ) ;
294
+ } else {
295
+ $ ( 'canvas' ) . removeClass ( "canvas-draggable" ) ;
296
+ $ ( '#handTool' ) . removeClass ( 'active' ) ;
297
+ }
298
+ } ) ;
299
+
240
300
} ) ;
0 commit comments