Mercurial > hg > orthanc-stone
comparison Platforms/Wasm/wasm-viewport.ts @ 506:801d2697a1b1 bgo-commands-codegen
Merge with am-touch-events
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Tue, 26 Feb 2019 21:33:16 +0100 |
parents | 7cdb4634846c 3b4df9925db6 |
children | 548eed46f535 |
comparison
equal
deleted
inserted
replaced
505:4cc7bb55bd49 | 506:801d2697a1b1 |
---|---|
63 private ViewportMouseUp : Function; | 63 private ViewportMouseUp : Function; |
64 private ViewportMouseEnter : Function; | 64 private ViewportMouseEnter : Function; |
65 private ViewportMouseLeave : Function; | 65 private ViewportMouseLeave : Function; |
66 private ViewportMouseWheel : Function; | 66 private ViewportMouseWheel : Function; |
67 private ViewportKeyPressed : Function; | 67 private ViewportKeyPressed : Function; |
68 private ViewportTouchStart : Function; | |
69 private ViewportTouchMove : Function; | |
70 private ViewportTouchEnd : Function; | |
68 | 71 |
69 private pimpl_ : any; // Private pointer to the underlying WebAssembly C++ object | 72 private pimpl_ : any; // Private pointer to the underlying WebAssembly C++ object |
70 | 73 |
71 public constructor(module: any, canvasId: string, cppViewport: any) { | 74 public constructor(module: any, canvasId: string, cppViewport: any) { |
72 | 75 |
89 this.ViewportMouseUp = this.module_.cwrap('ViewportMouseUp', null, [ 'number' ]); | 92 this.ViewportMouseUp = this.module_.cwrap('ViewportMouseUp', null, [ 'number' ]); |
90 this.ViewportMouseEnter = this.module_.cwrap('ViewportMouseEnter', null, [ 'number' ]); | 93 this.ViewportMouseEnter = this.module_.cwrap('ViewportMouseEnter', null, [ 'number' ]); |
91 this.ViewportMouseLeave = this.module_.cwrap('ViewportMouseLeave', null, [ 'number' ]); | 94 this.ViewportMouseLeave = this.module_.cwrap('ViewportMouseLeave', null, [ 'number' ]); |
92 this.ViewportMouseWheel = this.module_.cwrap('ViewportMouseWheel', null, [ 'number', 'number', 'number', 'number', 'number' ]); | 95 this.ViewportMouseWheel = this.module_.cwrap('ViewportMouseWheel', null, [ 'number', 'number', 'number', 'number', 'number' ]); |
93 this.ViewportKeyPressed = this.module_.cwrap('ViewportKeyPressed', null, [ 'number', 'number', 'string', 'number', 'number' ]); | 96 this.ViewportKeyPressed = this.module_.cwrap('ViewportKeyPressed', null, [ 'number', 'number', 'string', 'number', 'number' ]); |
97 this.ViewportTouchStart = this.module_.cwrap('ViewportTouchStart', null, [ 'number', 'number', 'number', 'number', 'number', 'number', 'number' ]); | |
98 this.ViewportTouchMove = this.module_.cwrap('ViewportTouchMove', null, [ 'number', 'number', 'number', 'number', 'number', 'number', 'number' ]); | |
99 this.ViewportTouchEnd = this.module_.cwrap('ViewportTouchEnd', null, [ 'number', 'number', 'number', 'number', 'number', 'number', 'number' ]); | |
94 } | 100 } |
95 | 101 |
96 public GetCppViewport() : number { | 102 public GetCppViewport() : number { |
97 return this.pimpl_; | 103 return this.pimpl_; |
98 } | 104 } |
195 }); | 201 }); |
196 | 202 |
197 this.htmlCanvas_.addEventListener('mousedown', function(event) { | 203 this.htmlCanvas_.addEventListener('mousedown', function(event) { |
198 var x = event.pageX - this.offsetLeft; | 204 var x = event.pageX - this.offsetLeft; |
199 var y = event.pageY - this.offsetTop; | 205 var y = event.pageY - this.offsetTop; |
200 that.ViewportMouseDown(that.pimpl_, event.button, x, y, 0 /* TODO detect modifier keys*/); | 206 |
207 that.ViewportMouseDown(that.pimpl_, event.button, x, y, 0 /* TODO detect modifier keys*/); | |
201 }); | 208 }); |
202 | 209 |
203 this.htmlCanvas_.addEventListener('mousemove', function(event) { | 210 this.htmlCanvas_.addEventListener('mousemove', function(event) { |
204 var x = event.pageX - this.offsetLeft; | 211 var x = event.pageX - this.offsetLeft; |
205 var y = event.pageY - this.offsetTop; | 212 var y = event.pageY - this.offsetTop; |
227 var y = event.pageY - this.offsetTop; | 234 var y = event.pageY - this.offsetTop; |
228 that.ViewportMouseWheel(that.pimpl_, event.deltaY, x, y, event.ctrlKey); | 235 that.ViewportMouseWheel(that.pimpl_, event.deltaY, x, y, event.ctrlKey); |
229 event.preventDefault(); | 236 event.preventDefault(); |
230 }); | 237 }); |
231 | 238 |
232 this.htmlCanvas_.addEventListener('touchstart', function(event) { | 239 this.htmlCanvas_.addEventListener('touchstart', function(event: TouchEvent) { |
233 // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport) | 240 // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport) |
234 event.preventDefault(); | 241 event.preventDefault(); |
235 event.stopPropagation(); | 242 event.stopPropagation(); |
236 | 243 |
237 that.ResetTouch(); | 244 // TODO: find a way to pass the coordinates as an array between JS and C++ |
245 var x0 = 0; | |
246 var y0 = 0; | |
247 var x1 = 0; | |
248 var y1 = 0; | |
249 var x2 = 0; | |
250 var y2 = 0; | |
251 if (event.targetTouches.length > 0) { | |
252 x0 = event.targetTouches[0].pageX; | |
253 y0 = event.targetTouches[0].pageY; | |
254 } | |
255 if (event.targetTouches.length > 1) { | |
256 x1 = event.targetTouches[1].pageX; | |
257 y1 = event.targetTouches[1].pageY; | |
258 } | |
259 if (event.targetTouches.length > 2) { | |
260 x2 = event.targetTouches[2].pageX; | |
261 y2 = event.targetTouches[2].pageY; | |
262 } | |
263 | |
264 that.ViewportTouchStart(that.pimpl_, event.targetTouches.length, x0, y0, x1, y1, x2, y2); | |
238 }); | 265 }); |
239 | 266 |
240 this.htmlCanvas_.addEventListener('touchend', function(event) { | 267 this.htmlCanvas_.addEventListener('touchend', function(event) { |
241 // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport) | 268 // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport) |
242 event.preventDefault(); | 269 event.preventDefault(); |
243 event.stopPropagation(); | 270 event.stopPropagation(); |
244 | 271 |
245 that.ResetTouch(); | 272 // TODO: find a way to pass the coordinates as an array between JS and C++ |
273 var x0 = 0; | |
274 var y0 = 0; | |
275 var x1 = 0; | |
276 var y1 = 0; | |
277 var x2 = 0; | |
278 var y2 = 0; | |
279 if (event.targetTouches.length > 0) { | |
280 x0 = event.targetTouches[0].pageX; | |
281 y0 = event.targetTouches[0].pageY; | |
282 } | |
283 if (event.targetTouches.length > 1) { | |
284 x1 = event.targetTouches[1].pageX; | |
285 y1 = event.targetTouches[1].pageY; | |
286 } | |
287 if (event.targetTouches.length > 2) { | |
288 x2 = event.targetTouches[2].pageX; | |
289 y2 = event.targetTouches[2].pageY; | |
290 } | |
291 | |
292 that.ViewportTouchEnd(that.pimpl_, event.targetTouches.length, x0, y0, x1, y1, x2, y2); | |
246 }); | 293 }); |
247 | 294 |
248 this.htmlCanvas_.addEventListener('touchmove', function(event: TouchEvent) { | 295 this.htmlCanvas_.addEventListener('touchmove', function(event: TouchEvent) { |
249 | 296 |
250 // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport) | 297 // don't propagate events to the whole body (this could zoom the entire page instead of zooming the viewport) |
251 event.preventDefault(); | 298 event.preventDefault(); |
252 event.stopPropagation(); | 299 event.stopPropagation(); |
300 | |
301 | |
302 // TODO: find a way to pass the coordinates as an array between JS and C++ | |
303 var x0 = 0; | |
304 var y0 = 0; | |
305 var x1 = 0; | |
306 var y1 = 0; | |
307 var x2 = 0; | |
308 var y2 = 0; | |
309 if (event.targetTouches.length > 0) { | |
310 x0 = event.targetTouches[0].pageX; | |
311 y0 = event.targetTouches[0].pageY; | |
312 } | |
313 if (event.targetTouches.length > 1) { | |
314 x1 = event.targetTouches[1].pageX; | |
315 y1 = event.targetTouches[1].pageY; | |
316 } | |
317 if (event.targetTouches.length > 2) { | |
318 x2 = event.targetTouches[2].pageX; | |
319 y2 = event.targetTouches[2].pageY; | |
320 } | |
321 | |
322 that.ViewportTouchMove(that.pimpl_, event.targetTouches.length, x0, y0, x1, y1, x2, y2); | |
323 return; | |
253 | 324 |
254 // if (!that.touchGestureInProgress_) { | 325 // if (!that.touchGestureInProgress_) { |
255 // // starting a new gesture | 326 // // starting a new gesture |
256 // that.touchCount_ = event.targetTouches.length; | 327 // that.touchCount_ = event.targetTouches.length; |
257 // for (var t = 0; t < event.targetTouches.length; t++) { | 328 // for (var t = 0; t < event.targetTouches.length; t++) { |