Mercurial > hg > orthanc-stone
annotate Deprecated/Applications/Generic/GuiAdapter.cpp @ 1434:c6bfcc105414
Rewrite of the event loop to compact all refresh events. HUGE speedup when using the trackers, especially in Debug mode.
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Tue, 19 May 2020 13:24:04 +0200 |
parents | b2b0fc4a5596 |
children | d0a3de66bb42 |
rev | line source |
---|---|
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1 /** |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
2 * Stone of Orthanc |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
1270
2d8ab34c8c91
upgrade to year 2020
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1020
diff
changeset
|
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
6 * |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
7 * This program is free software: you can redistribute it and/or |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
8 * modify it under the terms of the GNU Affero General Public License |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
9 * as published by the Free Software Foundation, either version 3 of |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
10 * the License, or (at your option) any later version. |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
11 * |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, but |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
15 * Affero General Public License for more details. |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
16 * |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
17 * You should have received a copy of the GNU Affero General Public License |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
19 **/ |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
20 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
21 #include "GuiAdapter.h" |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
22 |
853 | 23 #if ORTHANC_ENABLE_OPENGL == 1 |
1410
b2b0fc4a5596
Added ENABLE_GUIADAPTER option + fixed include paths in GuiAdapter
Benjamin Golinvaux <bgo@osimis.io>
parents:
1399
diff
changeset
|
24 # include "../../../Framework/OpenGL/OpenGLIncludes.h" |
853 | 25 #endif |
26 | |
27 #if ORTHANC_ENABLE_SDL == 1 | |
28 # include <SDL_video.h> | |
29 # include <SDL_render.h> | |
30 # include <SDL.h> | |
31 #endif | |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
32 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
33 #if ORTHANC_ENABLE_THREADS == 1 |
1410
b2b0fc4a5596
Added ENABLE_GUIADAPTER option + fixed include paths in GuiAdapter
Benjamin Golinvaux <bgo@osimis.io>
parents:
1399
diff
changeset
|
34 # include "../../../Framework/Deprecated/Messages/LockingEmitter.h" |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
35 #endif |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
36 |
1298
8a0a62189f46
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1290
diff
changeset
|
37 #include <Core/Compatibility.h> |
8a0a62189f46
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1290
diff
changeset
|
38 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
39 namespace OrthancStone |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
40 { |
879 | 41 std::ostream& operator<<( |
42 std::ostream& os, const GuiAdapterKeyboardEvent& event) | |
43 { | |
880 | 44 os << "sym: " << event.sym << " (" << (int)(event.sym[0]) << ") ctrl: " << event.ctrlKey << ", " << |
879 | 45 "shift: " << event.shiftKey << ", " << |
46 "alt: " << event.altKey; | |
47 return os; | |
48 } | |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
49 |
1371
f15529add7b0
operator << for GuiAdapterMouseEvent
Benjamin Golinvaux <bgo@osimis.io>
parents:
1370
diff
changeset
|
50 std::ostream& operator<<( |
f15529add7b0
operator << for GuiAdapterMouseEvent
Benjamin Golinvaux <bgo@osimis.io>
parents:
1370
diff
changeset
|
51 std::ostream& os, const GuiAdapterMouseEvent& event) |
f15529add7b0
operator << for GuiAdapterMouseEvent
Benjamin Golinvaux <bgo@osimis.io>
parents:
1370
diff
changeset
|
52 { |
f15529add7b0
operator << for GuiAdapterMouseEvent
Benjamin Golinvaux <bgo@osimis.io>
parents:
1370
diff
changeset
|
53 os << "targetX: " << event.targetX << " targetY: " << event.targetY << " button: " << event.button |
f15529add7b0
operator << for GuiAdapterMouseEvent
Benjamin Golinvaux <bgo@osimis.io>
parents:
1370
diff
changeset
|
54 << "ctrlKey: " << event.ctrlKey << "shiftKey: " << event.shiftKey << "altKey: " << event.altKey; |
f15529add7b0
operator << for GuiAdapterMouseEvent
Benjamin Golinvaux <bgo@osimis.io>
parents:
1370
diff
changeset
|
55 |
f15529add7b0
operator << for GuiAdapterMouseEvent
Benjamin Golinvaux <bgo@osimis.io>
parents:
1370
diff
changeset
|
56 return os; |
f15529add7b0
operator << for GuiAdapterMouseEvent
Benjamin Golinvaux <bgo@osimis.io>
parents:
1370
diff
changeset
|
57 } |
f15529add7b0
operator << for GuiAdapterMouseEvent
Benjamin Golinvaux <bgo@osimis.io>
parents:
1370
diff
changeset
|
58 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
59 #if ORTHANC_ENABLE_WASM == 1 |
937
86ac61a040c9
Added getters and notifications to allow clients of the loaders (DicomStructureSetLoader, OrthancSeriesVolumeProgressiveLoader and OrthancMultiframeVolumeLoader) to know when the loading is finished + added ability for SDL event loop to execute a callback repeatedly (used to check the view loading state)
Benjamin Golinvaux <bgo@osimis.io>
parents:
915
diff
changeset
|
60 void GuiAdapter::Run(GuiAdapterRunFunc /*func*/, void* /*cookie*/) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
61 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
62 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
63 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
64 void ConvertFromPlatform( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
65 GuiAdapterUiEvent& dest, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
66 int eventType, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
67 const EmscriptenUiEvent& src) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
68 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
69 // no data for now |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
70 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
71 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
72 void ConvertFromPlatform( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
73 GuiAdapterMouseEvent& dest, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
74 int eventType, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
75 const EmscriptenMouseEvent& src) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
76 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
77 memset(&dest, 0, sizeof(GuiAdapterMouseEvent)); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
78 switch (eventType) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
79 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
80 case EMSCRIPTEN_EVENT_CLICK: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
81 LOG(ERROR) << "Emscripten EMSCRIPTEN_EVENT_CLICK is not supported"; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
82 ORTHANC_ASSERT(false, "Not supported"); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
83 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
84 case EMSCRIPTEN_EVENT_MOUSEDOWN: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
85 dest.type = GUIADAPTER_EVENT_MOUSEDOWN; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
86 break; |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
87 case EMSCRIPTEN_EVENT_DBLCLICK: |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
88 dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK; |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
89 break; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
90 case EMSCRIPTEN_EVENT_MOUSEMOVE: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
91 dest.type = GUIADAPTER_EVENT_MOUSEMOVE; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
92 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
93 case EMSCRIPTEN_EVENT_MOUSEUP: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
94 dest.type = GUIADAPTER_EVENT_MOUSEUP; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
95 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
96 case EMSCRIPTEN_EVENT_WHEEL: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
97 dest.type = GUIADAPTER_EVENT_WHEEL; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
98 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
99 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
100 default: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
101 LOG(ERROR) << "Emscripten event: " << eventType << " is not supported"; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
102 ORTHANC_ASSERT(false, "Not supported"); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
103 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
104 //dest.timestamp = src.timestamp; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
105 //dest.screenX = src.screenX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
106 //dest.screenY = src.screenY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
107 //dest.clientX = src.clientX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
108 //dest.clientY = src.clientY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
109 dest.ctrlKey = src.ctrlKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
110 dest.shiftKey = src.shiftKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
111 dest.altKey = src.altKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
112 //dest.metaKey = src.metaKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
113 dest.button = src.button; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
114 //dest.buttons = src.buttons; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
115 //dest.movementX = src.movementX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
116 //dest.movementY = src.movementY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
117 dest.targetX = src.targetX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
118 dest.targetY = src.targetY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
119 //dest.canvasX = src.canvasX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
120 //dest.canvasY = src.canvasY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
121 //dest.padding = src.padding; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
122 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
123 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
124 void ConvertFromPlatform( GuiAdapterWheelEvent& dest, int eventType, const EmscriptenWheelEvent& src) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
125 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
126 ConvertFromPlatform(dest.mouse, eventType, src.mouse); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
127 dest.deltaX = src.deltaX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
128 dest.deltaY = src.deltaY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
129 switch (src.deltaMode) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
130 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
131 case DOM_DELTA_PIXEL: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
132 dest.deltaMode = GUIADAPTER_DELTA_PIXEL; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
133 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
134 case DOM_DELTA_LINE: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
135 dest.deltaMode = GUIADAPTER_DELTA_LINE; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
136 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
137 case DOM_DELTA_PAGE: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
138 dest.deltaMode = GUIADAPTER_DELTA_PAGE; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
139 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
140 default: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
141 ORTHANC_ASSERT(false, "Unknown deltaMode: " << src.deltaMode << |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
142 " in wheel event..."); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
143 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
144 dest.deltaMode = src.deltaMode; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
145 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
146 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
147 void ConvertFromPlatform(GuiAdapterKeyboardEvent& dest, const EmscriptenKeyboardEvent& src) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
148 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
149 dest.sym[0] = src.key[0]; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
150 dest.sym[1] = 0; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
151 dest.ctrlKey = src.ctrlKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
152 dest.shiftKey = src.shiftKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
153 dest.altKey = src.altKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
154 } |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
155 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
156 template<typename GenericFunc> |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
157 struct FuncAdapterPayload |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
158 { |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
159 std::string canvasCssSelector; |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
160 void* userData; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
161 GenericFunc callback; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
162 }; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
163 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
164 template<typename GenericFunc, |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
165 typename GuiAdapterEvent, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
166 typename EmscriptenEvent> |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
167 EM_BOOL OnEventAdapterFunc( |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
168 int eventType, const EmscriptenEvent* emEvent, void* userData) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
169 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
170 // userData is OnMouseWheelFuncAdapterPayload |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
171 FuncAdapterPayload<GenericFunc>* payload = |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
172 reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
173 // LOG(INFO) << "OnEventAdapterFunc"; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
174 // LOG(INFO) << "------------------"; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
175 // LOG(INFO) << "eventType: " << eventType << " wheelEvent: " << |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
176 // (int)wheelEvent << " userData: " << userData << |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
177 // " payload->userData: " << payload->userData; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
178 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
179 GuiAdapterEvent guiEvent; |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
180 ConvertFromPlatform(guiEvent, eventType, *emEvent); |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
181 bool ret = (*(payload->callback))(payload->canvasCssSelector, &guiEvent, payload->userData); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
182 return static_cast<EM_BOOL>(ret); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
183 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
184 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
185 template<typename GenericFunc, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
186 typename GuiAdapterEvent, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
187 typename EmscriptenEvent> |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
188 EM_BOOL OnEventAdapterFunc2( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
189 int /*eventType*/, const EmscriptenEvent* wheelEvent, void* userData) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
190 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
191 // userData is OnMouseWheelFuncAdapterPayload |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
192 FuncAdapterPayload<GenericFunc>* payload = |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
193 reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData); |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
194 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
195 GuiAdapterEvent guiEvent; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
196 ConvertFromPlatform(guiEvent, *wheelEvent); |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
197 bool ret = (*(payload->callback))(payload->canvasCssSelector, &guiEvent, payload->userData); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
198 return static_cast<EM_BOOL>(ret); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
199 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
200 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
201 template<typename GenericFunc> |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
202 EM_BOOL OnEventAdapterFunc3( |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
203 double time, void* userData) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
204 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
205 // userData is OnMouseWheelFuncAdapterPayload |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
206 FuncAdapterPayload<GenericFunc>* payload = |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
207 reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData); |
1298
8a0a62189f46
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1290
diff
changeset
|
208 //std::unique_ptr< FuncAdapterPayload<GenericFunc> > deleter(payload); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
209 bool ret = (*(payload->callback))(time, payload->userData); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
210 return static_cast<EM_BOOL>(ret); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
211 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
212 |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
213 /* |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
214 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
215 Explanation |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
216 =========== |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
217 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
218 - in "older" Emscripten, where DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR doesn't exist or is set to 0, |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
219 the following strings need to be used to register events: |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
220 - for canvas, the canvas DOM id. In case of <canvas id="mycanvas1" width='640' ...></canvas>", the string needs |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
221 to be "mycanvas" |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
222 - for the window (for key events), the string needs to be "#window" |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
223 - in newer Emscripten where DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR==1 (or maybe is not there anymore, in the |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
224 future as of 2020-04-20) |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
225 - for canvas, the canvas DOM id. In case of <canvas id="mycanvas1" width='640' ...></canvas>", the string needs |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
226 to be "#mycanvas" (notice the "number sign", aka "hash", NOT AKA "sharp", as can be read on https://en.wikipedia.org/wiki/Number_sign) |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
227 - for the window (for key events), the string needs to be EMSCRIPTEN_EVENT_TARGET_WINDOW. I do not mean |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
228 "EMSCRIPTEN_EVENT_TARGET_WINDOW", but the #define EMSCRIPTEN_EVENT_TARGET_WINDOW ((const char*)2) that |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
229 can be found in emscripten/html5.h |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
230 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
231 The code below converts the input canvasId (as in the old emscripten) to the emscripten-compliant one, with the |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
232 following compile condition : #if DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR == 1 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
233 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
234 If the DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR build parameter disappears, you might want to refactor this code |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
235 or continue to pass the DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR compile macro (which is different from the CMake |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
236 variable) |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
237 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
238 What we are doing below: |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
239 - in older Emscripten, the registration functions will receive "mycanvas" and "#window" and the callbacks will receive |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
240 the same std::string in their payload ("mycanvas" and "#window") |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
241 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
242 - in newer Emscripten, the registration functions will receive "#mycanvas" and EMSCRIPTEN_EVENT_TARGET_WINDOW, but |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
243 the callbacks will receive "#mycanvas" and "#window" (since it is not possible to store the EMSCRIPTEN_EVENT_TARGET_WINDOW |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
244 magic value in an std::string, while we still want the callback to be able to change its behavior according to the |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
245 target element. |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
246 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
247 */ |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
248 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
249 void convertElementTarget(const char*& outCanvasCssSelectorSz, std::string& outCanvasCssSelector, const std::string& canvasId) |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
250 { |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
251 // only "#window" can start with a # |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
252 if (canvasId[0] == '#') |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
253 { |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
254 ORTHANC_ASSERT(canvasId == "#window"); |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
255 } |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
256 #if DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR == 1 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
257 if (canvasId == "#window") |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
258 { |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
259 // we store this in the payload so that the callback can |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
260 outCanvasCssSelector = "#window"; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
261 outCanvasCssSelectorSz = EMSCRIPTEN_EVENT_TARGET_WINDOW; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
262 } |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
263 else |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
264 { |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
265 outCanvasCssSelector = "#" + canvasId; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
266 outCanvasCssSelectorSz = outCanvasCssSelector.c_str(); |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
267 } |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
268 #else |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
269 if (canvasId == "#window") |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
270 { |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
271 // we store this in the payload so that the callback can |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
272 outCanvasCssSelector = "#window"; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
273 outCanvasCssSelectorSz = outCanvasCssSelector.c_str();; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
274 } |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
275 else |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
276 { |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
277 outCanvasCssSelector = canvasId; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
278 outCanvasCssSelectorSz = outCanvasCssSelector.c_str();; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
279 } |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
280 #endif |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
281 } |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
282 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
283 // resize: (const char* target, void* userData, EM_BOOL useCapture, em_ui_callback_func callback) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
284 template< |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
285 typename GenericFunc, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
286 typename GuiAdapterEvent, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
287 typename EmscriptenEvent, |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
288 typename EmscriptenSetCallbackFunc> |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
289 static void SetCallback( |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
290 EmscriptenSetCallbackFunc emFunc, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
291 std::string canvasId, void* userData, bool capture, GenericFunc func) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
292 { |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
293 std::string canvasCssSelector; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
294 const char* canvasCssSelectorSz = NULL; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
295 convertElementTarget(canvasCssSelectorSz, canvasCssSelector, canvasId); |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
296 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
297 // TODO: write RemoveCallback with an int id that gets returned from here |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
298 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
299 // create userdata payload |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
300 std::unique_ptr<FuncAdapterPayload<GenericFunc> > payload(new FuncAdapterPayload<GenericFunc>()); |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
301 payload->canvasCssSelector = canvasCssSelector; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
302 payload->callback = func; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
303 payload->userData = userData; |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
304 void* userDataRaw = reinterpret_cast<void*>(payload.release()); |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
305 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
306 // call the registration function |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
307 (*emFunc)( |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
308 canvasCssSelectorSz, |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
309 userDataRaw, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
310 static_cast<EM_BOOL>(capture), |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
311 &OnEventAdapterFunc<GenericFunc, GuiAdapterEvent, EmscriptenEvent>, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
312 EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
313 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
314 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
315 template< |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
316 typename GenericFunc, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
317 typename GuiAdapterEvent, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
318 typename EmscriptenEvent, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
319 typename EmscriptenSetCallbackFunc> |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
320 static void SetCallback2( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
321 EmscriptenSetCallbackFunc emFunc, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
322 std::string canvasId, void* userData, bool capture, GenericFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
323 { |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
324 std::string canvasCssSelector; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
325 const char* canvasCssSelectorSz = NULL; |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
326 convertElementTarget(canvasCssSelectorSz, canvasCssSelector, canvasId); |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
327 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
328 // TODO: write RemoveCallback with an int id that gets returned from here |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
329 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
330 // create userdata payload |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
331 std::unique_ptr<FuncAdapterPayload<GenericFunc> > payload(new FuncAdapterPayload<GenericFunc>()); |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
332 payload->canvasCssSelector = canvasCssSelector; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
333 payload->callback = func; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
334 payload->userData = userData; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
335 void* userDataRaw = reinterpret_cast<void*>(payload.release()); |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
336 |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
337 // call the registration function |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
338 (*emFunc)( |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
339 canvasCssSelectorSz, |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
340 userDataRaw, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
341 static_cast<EM_BOOL>(capture), |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
342 &OnEventAdapterFunc2<GenericFunc, GuiAdapterEvent, EmscriptenEvent>, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
343 EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
344 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
345 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
346 template< |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
347 typename GenericFunc, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
348 typename EmscriptenSetCallbackFunc> |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
349 static void SetAnimationFrameCallback( |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
350 EmscriptenSetCallbackFunc emFunc, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
351 void* userData, GenericFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
352 { |
1298
8a0a62189f46
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1290
diff
changeset
|
353 std::unique_ptr<FuncAdapterPayload<GenericFunc> > payload( |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
354 new FuncAdapterPayload<GenericFunc>() |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
355 ); |
1370
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
356 payload->canvasCssSelector = "UNDEFINED"; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
357 payload->callback = func; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
358 payload->userData = userData; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
359 void* userDataRaw = reinterpret_cast<void*>(payload.release()); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
360 (*emFunc)( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
361 &OnEventAdapterFunc3<GenericFunc>, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
362 userDataRaw); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
363 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
364 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
365 void GuiAdapter::SetWheelCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
366 std::string canvasId, void* userData, bool capture, OnMouseWheelFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
367 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
368 SetCallback<OnMouseWheelFunc, GuiAdapterWheelEvent, EmscriptenWheelEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
369 &emscripten_set_wheel_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
370 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
371 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
372 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
373 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
374 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
375 |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
376 |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
377 void GuiAdapter::SetMouseDblClickCallback( |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
378 std::string canvasId, void* userData, bool capture, OnMouseEventFunc func) |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
379 { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
380 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>( |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
381 &emscripten_set_dblclick_callback_on_thread, |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
382 canvasId, |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
383 userData, |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
384 capture, |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
385 func); |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
386 } |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
387 |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
388 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
389 void GuiAdapter::SetMouseDownCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
390 std::string canvasId, void* userData, bool capture, OnMouseEventFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
391 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
392 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
393 &emscripten_set_mousedown_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
394 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
395 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
396 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
397 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
398 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
399 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
400 void GuiAdapter::SetMouseMoveCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
401 std::string canvasId, void* userData, bool capture, OnMouseEventFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
402 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
403 // LOG(INFO) << "SetMouseMoveCallback -- " << "supplied userData: " << |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
404 // userData; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
405 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
406 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
407 &emscripten_set_mousemove_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
408 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
409 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
410 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
411 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
412 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
413 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
414 void GuiAdapter::SetMouseUpCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
415 std::string canvasId, void* userData, bool capture, OnMouseEventFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
416 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
417 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
418 &emscripten_set_mouseup_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
419 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
420 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
421 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
422 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
423 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
424 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
425 void GuiAdapter::SetKeyDownCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
426 std::string canvasId, void* userData, bool capture, OnKeyDownFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
427 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
428 SetCallback2<OnKeyDownFunc, GuiAdapterKeyboardEvent, EmscriptenKeyboardEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
429 &emscripten_set_keydown_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
430 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
431 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
432 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
433 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
434 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
435 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
436 void GuiAdapter::SetKeyUpCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
437 std::string canvasId, void* userData, bool capture, OnKeyUpFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
438 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
439 SetCallback2<OnKeyUpFunc, GuiAdapterKeyboardEvent, EmscriptenKeyboardEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
440 &emscripten_set_keyup_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
441 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
442 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
443 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
444 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
445 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
446 |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
447 #if 0 |
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
448 // useless under Wasm where canvas resize is handled automatically |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
449 void GuiAdapter::SetResizeCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
450 std::string canvasId, void* userData, bool capture, OnWindowResizeFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
451 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
452 SetCallback<OnWindowResizeFunc, GuiAdapterUiEvent, EmscriptenUiEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
453 &emscripten_set_resize_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
454 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
455 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
456 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
457 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
458 } |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
459 #endif |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
460 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
461 void GuiAdapter::RequestAnimationFrame( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
462 OnAnimationFrameFunc func, void* userData) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
463 { |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
464 SetAnimationFrameCallback<OnAnimationFrameFunc>( |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
465 &emscripten_request_animation_frame_loop, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
466 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
467 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
468 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
469 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
470 #if 0 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
471 void GuiAdapter::SetKeyDownCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
472 std::string canvasId, void* userData, bool capture, OnKeyDownFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
473 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
474 emscripten_set_keydown_callback(canvasId.c_str(), userData, static_cast<EM_BOOL>(capture), func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
475 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
476 void GuiAdapter::SetKeyUpCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
477 std::string canvasId, void* userData, bool capture, OnKeyUpFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
478 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
479 emscripten_set_keyup_callback(canvasId.c_str(), userData, static_cast<EM_BOOL>(capture), func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
480 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
481 |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
482 // handled from within WebAssemblyViewport |
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
483 //void GuiAdapter::SetResizeCallback(std::string canvasId, void* userData, bool capture, OnWindowResizeFunc func) |
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
484 //{ |
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
485 // emscripten_set_resize_callback(canvasId.c_str(), userData, static_cast<EM_BOOL>(capture), func); |
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
486 //} |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
487 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
488 void GuiAdapter::RequestAnimationFrame(OnAnimationFrameFunc func, void* userData) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
489 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
490 emscripten_request_animation_frame_loop(func, userData); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
491 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
492 #endif |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
493 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
494 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
495 #else |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
496 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
497 // SDL ONLY |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
498 void ConvertFromPlatform(GuiAdapterMouseEvent& dest, bool ctrlPressed, bool shiftPressed, bool altPressed, const SDL_Event& source) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
499 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
500 memset(&dest, 0, sizeof(GuiAdapterMouseEvent)); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
501 switch (source.type) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
502 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
503 case SDL_MOUSEBUTTONDOWN: |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
504 if (source.button.clicks == 1) { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
505 dest.type = GUIADAPTER_EVENT_MOUSEDOWN; |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
506 } else if (source.button.clicks == 2) { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
507 dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK; |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
508 } else { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
509 dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK; |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
510 LOG(WARNING) << "Multiple-click ignored."; |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
511 } |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
512 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
513 case SDL_MOUSEMOTION: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
514 dest.type = GUIADAPTER_EVENT_MOUSEMOVE; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
515 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
516 case SDL_MOUSEBUTTONUP: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
517 dest.type = GUIADAPTER_EVENT_MOUSEUP; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
518 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
519 case SDL_MOUSEWHEEL: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
520 dest.type = GUIADAPTER_EVENT_WHEEL; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
521 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
522 default: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
523 LOG(ERROR) << "SDL event: " << source.type << " is not supported"; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
524 ORTHANC_ASSERT(false, "Not supported"); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
525 } |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
526 //dest.timestamp = src.timestamp; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
527 //dest.screenX = src.screenX; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
528 //dest.screenY = src.screenY; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
529 //dest.clientX = src.clientX; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
530 //dest.clientY = src.clientY; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
531 dest.ctrlKey = ctrlPressed; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
532 dest.shiftKey = shiftPressed; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
533 dest.altKey = altPressed; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
534 //dest.metaKey = src.metaKey; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
535 switch (source.button.button) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
536 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
537 case SDL_BUTTON_MIDDLE: |
880 | 538 dest.button =GUIADAPTER_MOUSEBUTTON_MIDDLE; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
539 break; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
540 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
541 case SDL_BUTTON_RIGHT: |
880 | 542 dest.button = GUIADAPTER_MOUSEBUTTON_RIGHT; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
543 break; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
544 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
545 case SDL_BUTTON_LEFT: |
880 | 546 dest.button = GUIADAPTER_MOUSEBUTTON_LEFT; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
547 break; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
548 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
549 default: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
550 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
551 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
552 //dest.buttons = src.buttons; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
553 //dest.movementX = src.movementX; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
554 //dest.movementY = src.movementY; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
555 dest.targetX = source.button.x; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
556 dest.targetY = source.button.y; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
557 //dest.canvasX = src.canvasX; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
558 //dest.canvasY = src.canvasY; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
559 //dest.padding = src.padding; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
560 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
561 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
562 void ConvertFromPlatform( |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
563 GuiAdapterWheelEvent& dest, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
564 bool ctrlPressed, bool shiftPressed, bool altPressed, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
565 const SDL_Event& source) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
566 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
567 ConvertFromPlatform(dest.mouse, ctrlPressed, shiftPressed, altPressed, source); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
568 dest.deltaX = source.wheel.x; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
569 dest.deltaY = source.wheel.y; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
570 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
571 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
572 void ConvertFromPlatform(GuiAdapterKeyboardEvent& dest, const SDL_Event& src) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
573 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
574 memset(&dest, 0, sizeof(GuiAdapterMouseEvent)); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
575 switch (src.type) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
576 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
577 case SDL_KEYDOWN: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
578 dest.type = GUIADAPTER_EVENT_KEYDOWN; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
579 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
580 case SDL_KEYUP: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
581 dest.type = GUIADAPTER_EVENT_KEYUP; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
582 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
583 default: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
584 LOG(ERROR) << "SDL event: " << src.type << " is not supported"; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
585 ORTHANC_ASSERT(false, "Not supported"); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
586 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
587 dest.sym[0] = src.key.keysym.sym; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
588 dest.sym[1] = 0; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
589 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
590 if (src.key.keysym.mod & KMOD_CTRL) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
591 dest.ctrlKey = true; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
592 else |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
593 dest.ctrlKey = false; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
594 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
595 if (src.key.keysym.mod & KMOD_SHIFT) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
596 dest.shiftKey = true; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
597 else |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
598 dest.shiftKey = false; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
599 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
600 if (src.key.keysym.mod & KMOD_ALT) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
601 dest.altKey = true; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
602 else |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
603 dest.altKey = false; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
604 } |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
605 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
606 // SDL ONLY |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
607 void GuiAdapter::SetSdlResizeCallback( |
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
608 std::string canvasId, void* userData, bool capture, OnSdlWindowResizeFunc func) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
609 { |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
610 resizeHandlers_.push_back(EventHandlerData<OnSdlWindowResizeFunc>(canvasId, func, userData)); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
611 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
612 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
613 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
614 void GuiAdapter::SetMouseDownCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
615 std::string canvasId, void* userData, bool capture, OnMouseEventFunc func) |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
616 { |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
617 mouseDownHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData)); |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
618 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
619 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
620 // SDL ONLY |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
621 void GuiAdapter::SetMouseDblClickCallback( |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
622 std::string canvasId, void* userData, bool capture, OnMouseEventFunc func) |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
623 { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
624 mouseDblCickHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData)); |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
625 } |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
626 |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
627 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
628 void GuiAdapter::SetMouseMoveCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
629 std::string canvasId, void* userData, bool capture, OnMouseEventFunc func) |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
630 { |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
631 mouseMoveHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData)); |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
632 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
633 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
634 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
635 void GuiAdapter::SetMouseUpCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
636 std::string canvasId, void* userData, bool capture, OnMouseEventFunc func) |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
637 { |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
638 mouseUpHandlers_.push_back(EventHandlerData<OnMouseEventFunc>(canvasId, func, userData)); |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
639 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
640 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
641 // SDL ONLY |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
642 void GuiAdapter::SetWheelCallback( |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
643 std::string canvasId, void* userData, bool capture, OnMouseWheelFunc func) |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
644 { |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
645 mouseWheelHandlers_.push_back(EventHandlerData<OnMouseWheelFunc>(canvasId, func, userData)); |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
646 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
647 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
648 // SDL ONLY |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
649 void GuiAdapter::SetKeyDownCallback( |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
650 std::string canvasId, void* userData, bool capture, OnKeyDownFunc func) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
651 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
652 keyDownHandlers_.push_back(EventHandlerData<OnKeyDownFunc>(canvasId, func, userData)); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
653 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
654 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
655 // SDL ONLY |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
656 void GuiAdapter::SetKeyUpCallback( |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
657 std::string canvasId, void* userData, bool capture, OnKeyUpFunc func) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
658 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
659 keyUpHandlers_.push_back(EventHandlerData<OnKeyUpFunc>(canvasId, func, userData)); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
660 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
661 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
662 // SDL ONLY |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
663 void GuiAdapter::SetGenericSdlEventCallback( |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
664 std::string canvasId, void* userData, bool capture, OnSdlEventCallback func) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
665 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
666 sdlEventHandlers_.push_back(EventHandlerData<OnSdlEventCallback>(canvasId, func, userData)); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
667 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
668 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
669 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
670 void GuiAdapter::OnAnimationFrame() |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
671 { |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
672 std::vector<size_t> disabledAnimationHandlers; |
845
cdba0dbb4682
removed some c++11 for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
843
diff
changeset
|
673 for (size_t i = 0; i < animationFrameHandlers_.size(); i++) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
674 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
675 // TODO: fix time |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
676 bool goOn = (*(animationFrameHandlers_[i].first))(0, animationFrameHandlers_[i].second); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
677 |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
678 // If the function returns false, we need to emulate what happens in Web |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
679 // and remove the function from the handlers... |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
680 if (!goOn) |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
681 disabledAnimationHandlers.push_back(i); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
682 } |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
683 for (size_t i = 0; i < disabledAnimationHandlers.size(); i++) |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
684 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
685 ORTHANC_ASSERT(animationFrameHandlers_.begin() + disabledAnimationHandlers[i] < animationFrameHandlers_.end()); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
686 animationFrameHandlers_.erase(animationFrameHandlers_.begin() + disabledAnimationHandlers[i]); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
687 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
688 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
689 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
690 // SDL ONLY |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
691 void GuiAdapter::OnResize(unsigned int width, unsigned int height) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
692 { |
845
cdba0dbb4682
removed some c++11 for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
843
diff
changeset
|
693 for (size_t i = 0; i < resizeHandlers_.size(); i++) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
694 { |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
695 (*(resizeHandlers_[i].func))( |
1317 | 696 resizeHandlers_[i].canvasName, NULL, width, height, resizeHandlers_[i].userData); |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
697 } |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
698 } |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
699 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
700 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
701 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
702 void GuiAdapter::OnSdlGenericEvent(const SDL_Event& sdlEvent) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
703 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
704 // Events related to a window are only sent to the related canvas |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
705 // User events are sent to everyone (we can't filter them here) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
706 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
707 /* |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
708 SDL_WindowEvent SDL_WINDOWEVENT |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
709 SDL_KeyboardEvent SDL_KEYDOWN |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
710 SDL_KEYUP |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
711 SDL_TextEditingEvent SDL_TEXTEDITING |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
712 SDL_TextInputEvent SDL_TEXTINPUT |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
713 SDL_MouseMotionEvent SDL_MOUSEMOTION |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
714 SDL_MouseButtonEvent SDL_MOUSEBUTTONDOWN |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
715 SDL_MOUSEBUTTONUP |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
716 SDL_MouseWheelEvent SDL_MOUSEWHEEL |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
717 SDL_UserEvent SDL_USEREVENT through ::SDL_LASTEVENT-1 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
718 */ |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
719 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
720 // if this string is left empty, it means the message will be sent to |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
721 // all widgets. |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
722 // otherwise, it contains the originating message window title |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
723 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
724 std::string windowTitle; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
725 uint32_t windowId = 0; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
726 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
727 if (sdlEvent.type == SDL_WINDOWEVENT) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
728 windowId = sdlEvent.window.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
729 else if (sdlEvent.type == SDL_KEYDOWN || sdlEvent.type == SDL_KEYUP) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
730 windowId = sdlEvent.key.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
731 else if (sdlEvent.type == SDL_TEXTEDITING) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
732 windowId = sdlEvent.edit.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
733 else if (sdlEvent.type == SDL_TEXTINPUT) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
734 windowId = sdlEvent.text.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
735 else if (sdlEvent.type == SDL_MOUSEMOTION) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
736 windowId = sdlEvent.motion.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
737 else if (sdlEvent.type == SDL_MOUSEBUTTONDOWN || sdlEvent.type == SDL_MOUSEBUTTONUP) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
738 windowId = sdlEvent.button.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
739 else if (sdlEvent.type == SDL_MOUSEWHEEL) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
740 windowId = sdlEvent.wheel.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
741 else if (sdlEvent.type >= SDL_USEREVENT && sdlEvent.type <= (SDL_LASTEVENT-1)) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
742 windowId = sdlEvent.user.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
743 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
744 if (windowId != 0) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
745 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
746 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowId); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
747 ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowId << "\" is not a valid SDL window ID!"); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
748 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
749 ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowId << "\" has a NULL window title!"); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
750 windowTitle = windowTitleSz; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
751 ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowId << "\" has an empty window title!"); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
752 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
753 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
754 for (size_t i = 0; i < sdlEventHandlers_.size(); i++) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
755 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
756 // normally, the handlers return a bool indicating whether they |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
757 // have handled the event or not, but we don't really care about this |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
758 std::string& canvasName = sdlEventHandlers_[i].canvasName; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
759 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
760 bool sendEvent = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
761 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
762 if (windowTitle != "" && (canvasName != windowTitle)) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
763 sendEvent = false; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
764 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
765 if (sendEvent) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
766 { |
1319 | 767 OnSdlEventCallback func = sdlEventHandlers_[i].func; |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
768 (*func)(canvasName, sdlEvent, sdlEventHandlers_[i].userData); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
769 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
770 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
771 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
772 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
773 // SDL ONLY |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
774 void GuiAdapter::OnMouseWheelEvent(uint32_t windowID, const GuiAdapterWheelEvent& event) |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
775 { |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
776 // the SDL window name IS the canvas name ("canvas" is used because this lib |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
777 // is designed for Wasm |
879 | 778 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID); |
779 ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowID << "\" is not a valid SDL window ID!"); | |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
780 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
781 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow); |
879 | 782 ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowID << "\" has a NULL window title!"); |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
783 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
784 std::string windowTitle(windowTitleSz); |
879 | 785 ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowID << "\" has an empty window title!"); |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
786 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
787 switch (event.mouse.type) |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
788 { |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
789 case GUIADAPTER_EVENT_WHEEL: |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
790 for (size_t i = 0; i < mouseWheelHandlers_.size(); i++) |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
791 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
792 if (mouseWheelHandlers_[i].canvasName == windowTitle) |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
793 (*(mouseWheelHandlers_[i].func))(windowTitle, &event, mouseWheelHandlers_[i].userData); |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
794 } |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
795 break; |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
796 default: |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
797 ORTHANC_ASSERT(false, "Wrong event.type: " << event.mouse.type << " in GuiAdapter::OnMouseWheelEvent(...)"); |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
798 break; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
799 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
800 } |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
801 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
802 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
803 void GuiAdapter::OnKeyboardEvent(uint32_t windowID, const GuiAdapterKeyboardEvent& event) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
804 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
805 // only one-letter (ascii) keyboard events supported for now |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
806 ORTHANC_ASSERT(event.sym[0] != 0); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
807 ORTHANC_ASSERT(event.sym[1] == 0); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
808 |
879 | 809 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID); |
810 ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowID << "\" is not a valid SDL window ID!"); | |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
811 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
812 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow); |
879 | 813 ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowID << "\" has a NULL window title!"); |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
814 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
815 std::string windowTitle(windowTitleSz); |
879 | 816 ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowID << "\" has an empty window title!"); |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
817 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
818 switch (event.type) |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
819 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
820 case GUIADAPTER_EVENT_KEYDOWN: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
821 for (size_t i = 0; i < keyDownHandlers_.size(); i++) |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
822 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
823 (*(keyDownHandlers_[i].func))(windowTitle, &event, keyDownHandlers_[i].userData); |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
824 } |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
825 break; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
826 case GUIADAPTER_EVENT_KEYUP: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
827 for (size_t i = 0; i < keyUpHandlers_.size(); i++) |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
828 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
829 (*(keyUpHandlers_[i].func))(windowTitle, &event, keyUpHandlers_[i].userData); |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
830 } |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
831 break; |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
832 default: |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
833 ORTHANC_ASSERT(false, "Wrong event.type: " << event.type << " in GuiAdapter::OnKeyboardEvent(...)"); |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
834 break; |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
835 } |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
836 } |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
837 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
838 // SDL ONLY |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
839 void GuiAdapter::OnMouseEvent(uint32_t windowID, const GuiAdapterMouseEvent& event) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
840 { |
880 | 841 if (windowID == 0) |
842 { | |
843 LOG(WARNING) << "GuiAdapter::OnMouseEvent -- windowID == 0 and event won't be routed!"; | |
844 } | |
845 else | |
846 { | |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
847 // the SDL window name IS the canvas name ("canvas" is used because this lib |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
848 // is designed for Wasm |
880 | 849 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID); |
850 | |
851 ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << windowID << "\" is not a valid SDL window ID!"); | |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
852 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
853 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow); |
880 | 854 ORTHANC_ASSERT(windowTitleSz != NULL, "Window ID \"" << windowID << "\" has a NULL window title!"); |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
855 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
856 std::string windowTitle(windowTitleSz); |
880 | 857 ORTHANC_ASSERT(windowTitle != "", "Window ID \"" << windowID << "\" has an empty window title!"); |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
858 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
859 switch (event.type) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
860 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
861 case GUIADAPTER_EVENT_MOUSEDOWN: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
862 for (size_t i = 0; i < mouseDownHandlers_.size(); i++) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
863 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
864 if (mouseDownHandlers_[i].canvasName == windowTitle) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
865 (*(mouseDownHandlers_[i].func))(windowTitle, &event, mouseDownHandlers_[i].userData); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
866 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
867 break; |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
868 case GUIADAPTER_EVENT_MOUSEDBLCLICK: |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
869 for (size_t i = 0; i < mouseDblCickHandlers_.size(); i++) |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
870 { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
871 if (mouseDblCickHandlers_[i].canvasName == windowTitle) |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
872 (*(mouseDblCickHandlers_[i].func))(windowTitle, &event, mouseDblCickHandlers_[i].userData); |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
873 } |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
874 break; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
875 case GUIADAPTER_EVENT_MOUSEMOVE: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
876 for (size_t i = 0; i < mouseMoveHandlers_.size(); i++) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
877 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
878 if (mouseMoveHandlers_[i].canvasName == windowTitle) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
879 (*(mouseMoveHandlers_[i].func))(windowTitle, &event, mouseMoveHandlers_[i].userData); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
880 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
881 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
882 case GUIADAPTER_EVENT_MOUSEUP: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
883 for (size_t i = 0; i < mouseUpHandlers_.size(); i++) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
884 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
885 if (mouseUpHandlers_[i].canvasName == windowTitle) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
886 (*(mouseUpHandlers_[i].func))(windowTitle, &event, mouseUpHandlers_[i].userData); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
887 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
888 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
889 default: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
890 ORTHANC_ASSERT(false, "Wrong event.type: " << event.type << " in GuiAdapter::OnMouseEvent(...)"); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
891 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
892 } |
880 | 893 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
894 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
895 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
896 |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
897 // extern void Debug_SetContextToBeKilled(std::string title); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
898 // extern void Debug_SetContextToBeRestored(std::string title); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
899 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
900 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
901 void GuiAdapter::RequestAnimationFrame(OnAnimationFrameFunc func, void* userData) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
902 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
903 animationFrameHandlers_.push_back(std::make_pair(func, userData)); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
904 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
905 |
853 | 906 # if ORTHANC_ENABLE_OPENGL == 1 && !defined(__APPLE__) /* OpenGL debug is not available on OS X */ |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
907 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
908 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
909 static void GLAPIENTRY |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
910 OpenGLMessageCallback(GLenum source, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
911 GLenum type, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
912 GLuint id, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
913 GLenum severity, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
914 GLsizei length, |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
915 const GLchar * message, |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
916 const void* userParam) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
917 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
918 if (severity != GL_DEBUG_SEVERITY_NOTIFICATION) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
919 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
920 fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n", |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
921 (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""), |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
922 type, severity, message); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
923 } |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
924 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
925 # endif |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
926 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
927 #if 0 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
928 // TODO: remove this when generic sdl event handlers are implemented in |
1341 | 929 // the DoseView |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
930 // SDL ONLY |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
931 bool GuiAdapter::IsSdlViewPortRefreshEvent(const SDL_Event& event) const |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
932 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
933 SDL_Window* sdlWindow = SDL_GetWindowFromID(event.window.windowID); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
934 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
935 ORTHANC_ASSERT(sdlWindow != NULL, "Window ID \"" << event.window.windowID << "\" is not a valid SDL window ID!"); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
936 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
937 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
938 |
1341 | 939 // now we need to find the DoseView from from the canvas name! |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
940 // (and retrieve the SdlViewport) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
941 boost::shared_ptr<IGuiAdapterWidget> foundWidget; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
942 VisitWidgets([&foundWidget, windowTitleSz](auto widget) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
943 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
944 if (widget->GetCanvasIdentifier() == std::string(windowTitleSz)) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
945 foundWidget = widget; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
946 }); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
947 ORTHANC_ASSERT(foundWidget, "The window named: \"" << windowTitleSz << "\" was not found in the registered widgets!"); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
948 return foundWidget->GetSdlViewport().IsRefreshEvent(event); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
949 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
950 #endif |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
951 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
952 // SDL ONLY |
937
86ac61a040c9
Added getters and notifications to allow clients of the loaders (DicomStructureSetLoader, OrthancSeriesVolumeProgressiveLoader and OrthancMultiframeVolumeLoader) to know when the loading is finished + added ability for SDL event loop to execute a callback repeatedly (used to check the view loading state)
Benjamin Golinvaux <bgo@osimis.io>
parents:
915
diff
changeset
|
953 void GuiAdapter::Run(GuiAdapterRunFunc func, void* cookie) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
954 { |
913
2b4b6b86520a
Re-enabled gl debug output in GuiAdapter +
Benjamin Golinvaux <bgo@osimis.io>
parents:
906
diff
changeset
|
955 #if 1 |
906
52b1c6ff10c5
Disabled OpenGL in GuiAdapter to allow for Cairo-only workflows (THIS IS A TEMP CHANGE!!!) + disabled outlined text by default (build macro)
Benjamin Golinvaux <bgo@osimis.io>
parents:
869
diff
changeset
|
956 // TODO: MAKE THIS DYNAMIC !!! See SdlOpenGLViewport vs Cairo in ViewportWrapper |
853 | 957 # if ORTHANC_ENABLE_OPENGL == 1 && !defined(__APPLE__) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
958 glEnable(GL_DEBUG_OUTPUT); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
959 glDebugMessageCallback(OpenGLMessageCallback, 0); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
960 # endif |
906
52b1c6ff10c5
Disabled OpenGL in GuiAdapter to allow for Cairo-only workflows (THIS IS A TEMP CHANGE!!!) + disabled outlined text by default (build macro)
Benjamin Golinvaux <bgo@osimis.io>
parents:
869
diff
changeset
|
961 #endif |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
962 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
963 // Uint32 SDL_GetWindowID(SDL_Window* window) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
964 // SDL_Window* SDL_GetWindowFromID(Uint32 id) // may return NULL |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
965 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
966 bool stop = false; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
967 while (!stop) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
968 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
969 { |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
970 // TODO: lock all viewports here! (use a scoped object) |
937
86ac61a040c9
Added getters and notifications to allow clients of the loaders (DicomStructureSetLoader, OrthancSeriesVolumeProgressiveLoader and OrthancMultiframeVolumeLoader) to know when the loading is finished + added ability for SDL event loop to execute a callback repeatedly (used to check the view loading state)
Benjamin Golinvaux <bgo@osimis.io>
parents:
915
diff
changeset
|
971 if(func != NULL) |
86ac61a040c9
Added getters and notifications to allow clients of the loaders (DicomStructureSetLoader, OrthancSeriesVolumeProgressiveLoader and OrthancMultiframeVolumeLoader) to know when the loading is finished + added ability for SDL event loop to execute a callback repeatedly (used to check the view loading state)
Benjamin Golinvaux <bgo@osimis.io>
parents:
915
diff
changeset
|
972 (*func)(cookie); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
973 OnAnimationFrame(); // in SDL we must call it |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
974 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
975 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
976 while (!stop) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
977 { |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
978 std::vector<SDL_Event> sdlEvents; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
979 std::map<Uint32,SDL_Event> userEventsMap; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
980 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
981 SDL_Event sdlEvent; |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
982 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
983 // FIRST: collect all pending events |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
984 while (SDL_PollEvent(&sdlEvent) != 0) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
985 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
986 if ( (sdlEvent.type >= SDL_USEREVENT) && |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
987 (sdlEvent.type <= SDL_USEREVENT) ) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
988 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
989 // we don't want to have multiple events with the same event.type |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
990 userEventsMap[sdlEvent.type] = sdlEvent; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
991 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
992 else |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
993 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
994 sdlEvents.push_back(sdlEvent); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
995 } |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
996 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
997 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
998 // SECOND: collect all user events |
1319 | 999 for (std::map<Uint32,SDL_Event>::const_iterator it = userEventsMap.begin(); it != userEventsMap.end(); ++it) |
1000 sdlEvents.push_back(it->second); | |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1001 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1002 // now process the events |
1319 | 1003 for (std::vector<SDL_Event>::const_iterator it = sdlEvents.begin(); it != sdlEvents.end(); ++it) |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1004 { |
1319 | 1005 const SDL_Event& sdlEvent = *it; |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1006 // TODO: lock all viewports here! (use a scoped object) |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
1007 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1008 if (sdlEvent.type == SDL_QUIT) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1009 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1010 // TODO: call exit callbacks here |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1011 stop = true; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1012 break; |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1013 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1014 else if ((sdlEvent.type == SDL_MOUSEMOTION) || |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1015 (sdlEvent.type == SDL_MOUSEBUTTONDOWN) || |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1016 (sdlEvent.type == SDL_MOUSEBUTTONUP)) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1017 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1018 int scancodeCount = 0; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1019 const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1020 bool ctrlPressed(false); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1021 bool shiftPressed(false); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1022 bool altPressed(false); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1023 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1024 if (SDL_SCANCODE_LCTRL < scancodeCount && keyboardState[SDL_SCANCODE_LCTRL]) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1025 ctrlPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1026 if (SDL_SCANCODE_RCTRL < scancodeCount && keyboardState[SDL_SCANCODE_RCTRL]) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1027 ctrlPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1028 if (SDL_SCANCODE_LSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_LSHIFT]) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1029 shiftPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1030 if (SDL_SCANCODE_RSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_RSHIFT]) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1031 shiftPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1032 if (SDL_SCANCODE_LALT < scancodeCount && keyboardState[SDL_SCANCODE_LALT]) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1033 altPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1034 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1035 GuiAdapterMouseEvent dest; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1036 ConvertFromPlatform(dest, ctrlPressed, shiftPressed, altPressed, sdlEvent); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1037 OnMouseEvent(sdlEvent.window.windowID, dest); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1038 #if 0 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1039 // for reference, how to create trackers |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1040 if (tracker) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1041 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1042 PointerEvent e; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1043 e.AddPosition(compositor.GetPixelCenterCoordinates( |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1044 sdlEvent.button.x, sdlEvent.button.y)); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1045 tracker->PointerMove(e); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1046 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1047 #endif |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1048 } |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1049 else if (sdlEvent.type == SDL_MOUSEWHEEL) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1050 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1051 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1052 int scancodeCount = 0; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1053 const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1054 bool ctrlPressed(false); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1055 bool shiftPressed(false); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1056 bool altPressed(false); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1057 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1058 if (SDL_SCANCODE_LCTRL < scancodeCount && keyboardState[SDL_SCANCODE_LCTRL]) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1059 ctrlPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1060 if (SDL_SCANCODE_RCTRL < scancodeCount && keyboardState[SDL_SCANCODE_RCTRL]) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1061 ctrlPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1062 if (SDL_SCANCODE_LSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_LSHIFT]) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1063 shiftPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1064 if (SDL_SCANCODE_RSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_RSHIFT]) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1065 shiftPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1066 if (SDL_SCANCODE_LALT < scancodeCount && keyboardState[SDL_SCANCODE_LALT]) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1067 altPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1068 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1069 GuiAdapterWheelEvent dest; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1070 ConvertFromPlatform(dest, ctrlPressed, shiftPressed, altPressed, sdlEvent); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1071 OnMouseWheelEvent(sdlEvent.window.windowID, dest); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1072 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1073 //KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1074 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1075 //int x, y; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1076 //SDL_GetMouseState(&x, &y); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1077 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1078 //if (sdlEvent.wheel.y > 0) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1079 //{ |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1080 // locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Up, x, y, modifiers); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1081 //} |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1082 //else if (sdlEvent.wheel.y < 0) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1083 //{ |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1084 // locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Down, x, y, modifiers); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1085 //} |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1086 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1087 else if (sdlEvent.type == SDL_WINDOWEVENT && |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1088 (sdlEvent.window.event == SDL_WINDOWEVENT_RESIZED || |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1089 sdlEvent.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1090 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1091 #if 0 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1092 tracker.reset(); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1093 #endif |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1094 OnResize(sdlEvent.window.data1, sdlEvent.window.data2); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1095 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1096 else if (sdlEvent.type == SDL_KEYDOWN && sdlEvent.key.repeat == 0 /* Ignore key bounce */) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1097 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1098 switch (sdlEvent.key.keysym.sym) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1099 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1100 case SDLK_f: |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1101 // window.GetWindow().ToggleMaximize(); //TODO: move to particular handler |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1102 break; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1103 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1104 // This commented out code was used to debug the context |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1105 // loss/restoring code (2019-08-10) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1106 // case SDLK_k: |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1107 // { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1108 // SDL_Window* window = SDL_GetWindowFromID(sdlEvent.window.windowID); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1109 // std::string windowTitle(SDL_GetWindowTitle(window)); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1110 // Debug_SetContextToBeKilled(windowTitle); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1111 // } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1112 // break; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1113 // case SDLK_l: |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1114 // { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1115 // SDL_Window* window = SDL_GetWindowFromID(sdlEvent.window.windowID); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1116 // std::string windowTitle(SDL_GetWindowTitle(window)); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1117 // Debug_SetContextToBeRestored(windowTitle); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1118 // } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1119 // break; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1120 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1121 case SDLK_q: |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1122 stop = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1123 break; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1124 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1125 default: |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1126 GuiAdapterKeyboardEvent dest; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1127 ConvertFromPlatform(dest, sdlEvent); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1128 OnKeyboardEvent(sdlEvent.window.windowID, dest); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1129 break; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1130 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1131 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1132 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1133 OnSdlGenericEvent(sdlEvent); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1134 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1135 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1136 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1137 SDL_Delay(1); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1138 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1139 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1140 #endif |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1141 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1142 |