Mercurial > hg > orthanc-stone
annotate Deprecated/Applications/Generic/GuiAdapter.cpp @ 1437:297e57d3508c
Moved two WARNING log entries to INFO. These weren't warnings.
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Tue, 19 May 2020 15:28:55 +0200 |
parents | fb8c36073983 |
children | 615035c2f3ba |
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 |
1436
fb8c36073983
Fix problem where multiple init/exit were not possible when using GuiAdapter
Benjamin Golinvaux <bgo@osimis.io>
parents:
1435
diff
changeset
|
59 int GuiAdapter::s_instanceCount = 0; |
fb8c36073983
Fix problem where multiple init/exit were not possible when using GuiAdapter
Benjamin Golinvaux <bgo@osimis.io>
parents:
1435
diff
changeset
|
60 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
61 #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
|
62 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
|
63 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
64 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
65 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
66 void ConvertFromPlatform( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
67 GuiAdapterUiEvent& dest, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
68 int eventType, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
69 const EmscriptenUiEvent& src) |
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 // no data for now |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
72 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
73 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
74 void ConvertFromPlatform( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
75 GuiAdapterMouseEvent& dest, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
76 int eventType, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
77 const EmscriptenMouseEvent& src) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
78 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
79 memset(&dest, 0, sizeof(GuiAdapterMouseEvent)); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
80 switch (eventType) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
81 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
82 case EMSCRIPTEN_EVENT_CLICK: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
83 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
|
84 ORTHANC_ASSERT(false, "Not supported"); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
85 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
86 case EMSCRIPTEN_EVENT_MOUSEDOWN: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
87 dest.type = GUIADAPTER_EVENT_MOUSEDOWN; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
88 break; |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
89 case EMSCRIPTEN_EVENT_DBLCLICK: |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
90 dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK; |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
91 break; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
92 case EMSCRIPTEN_EVENT_MOUSEMOVE: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
93 dest.type = GUIADAPTER_EVENT_MOUSEMOVE; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
94 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
95 case EMSCRIPTEN_EVENT_MOUSEUP: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
96 dest.type = GUIADAPTER_EVENT_MOUSEUP; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
97 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
98 case EMSCRIPTEN_EVENT_WHEEL: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
99 dest.type = GUIADAPTER_EVENT_WHEEL; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
100 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
101 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
102 default: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
103 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
|
104 ORTHANC_ASSERT(false, "Not supported"); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
105 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
106 //dest.timestamp = src.timestamp; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
107 //dest.screenX = src.screenX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
108 //dest.screenY = src.screenY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
109 //dest.clientX = src.clientX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
110 //dest.clientY = src.clientY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
111 dest.ctrlKey = src.ctrlKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
112 dest.shiftKey = src.shiftKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
113 dest.altKey = src.altKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
114 //dest.metaKey = src.metaKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
115 dest.button = src.button; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
116 //dest.buttons = src.buttons; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
117 //dest.movementX = src.movementX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
118 //dest.movementY = src.movementY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
119 dest.targetX = src.targetX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
120 dest.targetY = src.targetY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
121 //dest.canvasX = src.canvasX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
122 //dest.canvasY = src.canvasY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
123 //dest.padding = src.padding; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
124 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
125 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
126 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
|
127 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
128 ConvertFromPlatform(dest.mouse, eventType, src.mouse); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
129 dest.deltaX = src.deltaX; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
130 dest.deltaY = src.deltaY; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
131 switch (src.deltaMode) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
132 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
133 case DOM_DELTA_PIXEL: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
134 dest.deltaMode = GUIADAPTER_DELTA_PIXEL; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
135 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
136 case DOM_DELTA_LINE: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
137 dest.deltaMode = GUIADAPTER_DELTA_LINE; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
138 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
139 case DOM_DELTA_PAGE: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
140 dest.deltaMode = GUIADAPTER_DELTA_PAGE; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
141 break; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
142 default: |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
143 ORTHANC_ASSERT(false, "Unknown deltaMode: " << src.deltaMode << |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
144 " in wheel event..."); |
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 dest.deltaMode = src.deltaMode; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
147 } |
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 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
|
150 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
151 dest.sym[0] = src.key[0]; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
152 dest.sym[1] = 0; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
153 dest.ctrlKey = src.ctrlKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
154 dest.shiftKey = src.shiftKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
155 dest.altKey = src.altKey; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
156 } |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
157 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
158 template<typename GenericFunc> |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
159 struct FuncAdapterPayload |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
160 { |
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
|
161 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
|
162 void* userData; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
163 GenericFunc callback; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
164 }; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
165 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
166 template<typename GenericFunc, |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
167 typename GuiAdapterEvent, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
168 typename EmscriptenEvent> |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
169 EM_BOOL OnEventAdapterFunc( |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
170 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
|
171 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
172 // userData is OnMouseWheelFuncAdapterPayload |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
173 FuncAdapterPayload<GenericFunc>* payload = |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
174 reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
175 // LOG(INFO) << "OnEventAdapterFunc"; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
176 // LOG(INFO) << "------------------"; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
177 // LOG(INFO) << "eventType: " << eventType << " wheelEvent: " << |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
178 // (int)wheelEvent << " userData: " << userData << |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
179 // " payload->userData: " << payload->userData; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
180 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
181 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
|
182 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
|
183 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
|
184 return static_cast<EM_BOOL>(ret); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
185 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
186 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
187 template<typename GenericFunc, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
188 typename GuiAdapterEvent, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
189 typename EmscriptenEvent> |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
190 EM_BOOL OnEventAdapterFunc2( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
191 int /*eventType*/, const EmscriptenEvent* wheelEvent, void* userData) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
192 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
193 // userData is OnMouseWheelFuncAdapterPayload |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
194 FuncAdapterPayload<GenericFunc>* payload = |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
195 reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData); |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
196 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
197 GuiAdapterEvent guiEvent; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
198 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
|
199 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
|
200 return static_cast<EM_BOOL>(ret); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
201 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
202 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
203 template<typename GenericFunc> |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
204 EM_BOOL OnEventAdapterFunc3( |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
205 double time, void* userData) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
206 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
207 // userData is OnMouseWheelFuncAdapterPayload |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
208 FuncAdapterPayload<GenericFunc>* payload = |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
209 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
|
210 //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
|
211 bool ret = (*(payload->callback))(time, payload->userData); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
212 return static_cast<EM_BOOL>(ret); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
213 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
214 |
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
|
215 /* |
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 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
|
218 =========== |
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 |
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 - 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
|
221 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
|
222 - 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
|
223 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
|
224 - 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
|
225 - 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
|
226 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
|
227 - 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
|
228 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
|
229 - 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
|
230 "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
|
231 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
|
232 |
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 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
|
234 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
|
235 |
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 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
|
237 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
|
238 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
|
239 |
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 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
|
241 - 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
|
242 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
|
243 |
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 - 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
|
245 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
|
246 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
|
247 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
|
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 */ |
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 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
|
252 { |
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 // 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
|
254 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
|
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 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
|
257 } |
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 #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
|
259 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
|
260 { |
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 // 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
|
262 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
|
263 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
|
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 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
|
266 { |
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 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
|
268 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
|
269 } |
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 #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
|
271 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
|
272 { |
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 // 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
|
274 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
|
275 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
|
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 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
|
278 { |
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 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
|
280 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
|
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 #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
|
283 } |
28eb7106ef44
Changes to GuiAdapter to allow it to work correctly with both new and old
Benjamin Golinvaux <bgo@osimis.io>
parents:
1341
diff
changeset
|
284 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
285 // 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
|
286 template< |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
287 typename GenericFunc, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
288 typename GuiAdapterEvent, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
289 typename EmscriptenEvent, |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
290 typename EmscriptenSetCallbackFunc> |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
291 static void SetCallback( |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
292 EmscriptenSetCallbackFunc emFunc, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
293 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
|
294 { |
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
|
295 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
|
296 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
|
297 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
|
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 // 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
|
300 |
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 // 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
|
302 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
|
303 payload->canvasCssSelector = canvasCssSelector; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
304 payload->callback = func; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
305 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
|
306 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
|
307 |
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 // call the registration function |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
309 (*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
|
310 canvasCssSelectorSz, |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
311 userDataRaw, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
312 static_cast<EM_BOOL>(capture), |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
313 &OnEventAdapterFunc<GenericFunc, GuiAdapterEvent, EmscriptenEvent>, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
314 EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
315 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
316 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
317 template< |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
318 typename GenericFunc, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
319 typename GuiAdapterEvent, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
320 typename EmscriptenEvent, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
321 typename EmscriptenSetCallbackFunc> |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
322 static void SetCallback2( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
323 EmscriptenSetCallbackFunc emFunc, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
324 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
|
325 { |
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
|
326 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
|
327 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
|
328 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
|
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 // 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
|
331 |
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 // 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
|
333 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
|
334 payload->canvasCssSelector = canvasCssSelector; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
335 payload->callback = func; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
336 payload->userData = userData; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
337 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
|
338 |
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 // call the registration function |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
340 (*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
|
341 canvasCssSelectorSz, |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
342 userDataRaw, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
343 static_cast<EM_BOOL>(capture), |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
344 &OnEventAdapterFunc2<GenericFunc, GuiAdapterEvent, EmscriptenEvent>, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
345 EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
346 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
347 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
348 template< |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
349 typename GenericFunc, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
350 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
|
351 static void SetAnimationFrameCallback( |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
352 EmscriptenSetCallbackFunc emFunc, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
353 void* userData, GenericFunc func) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
354 { |
1298
8a0a62189f46
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1290
diff
changeset
|
355 std::unique_ptr<FuncAdapterPayload<GenericFunc> > payload( |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
356 new FuncAdapterPayload<GenericFunc>() |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
357 ); |
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
|
358 payload->canvasCssSelector = "UNDEFINED"; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
359 payload->callback = func; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
360 payload->userData = userData; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
361 void* userDataRaw = reinterpret_cast<void*>(payload.release()); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
362 (*emFunc)( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
363 &OnEventAdapterFunc3<GenericFunc>, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
364 userDataRaw); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
365 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
366 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
367 void GuiAdapter::SetWheelCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
368 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
|
369 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
370 SetCallback<OnMouseWheelFunc, GuiAdapterWheelEvent, EmscriptenWheelEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
371 &emscripten_set_wheel_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
372 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
373 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
374 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
375 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
376 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
377 |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
378 |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
379 void GuiAdapter::SetMouseDblClickCallback( |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
380 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
|
381 { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
382 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>( |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
383 &emscripten_set_dblclick_callback_on_thread, |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
384 canvasId, |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
385 userData, |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
386 capture, |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
387 func); |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
388 } |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
389 |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
390 |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
391 void GuiAdapter::SetMouseDownCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
392 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
|
393 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
394 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
395 &emscripten_set_mousedown_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
396 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
397 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
398 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
399 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
400 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
401 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
402 void GuiAdapter::SetMouseMoveCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
403 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
|
404 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
405 // LOG(INFO) << "SetMouseMoveCallback -- " << "supplied userData: " << |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
406 // userData; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
407 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
408 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
409 &emscripten_set_mousemove_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
410 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
411 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
412 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
413 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
414 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
415 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
416 void GuiAdapter::SetMouseUpCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
417 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
|
418 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
419 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
420 &emscripten_set_mouseup_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
421 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
422 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
423 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
424 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
425 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
426 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
427 void GuiAdapter::SetKeyDownCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
428 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
|
429 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
430 SetCallback2<OnKeyDownFunc, GuiAdapterKeyboardEvent, EmscriptenKeyboardEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
431 &emscripten_set_keydown_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
432 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
433 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
434 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
435 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
436 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
437 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
438 void GuiAdapter::SetKeyUpCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
439 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
|
440 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
441 SetCallback2<OnKeyUpFunc, GuiAdapterKeyboardEvent, EmscriptenKeyboardEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
442 &emscripten_set_keyup_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
443 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
444 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
445 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
446 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
447 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
448 |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
449 #if 0 |
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
450 // 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
|
451 void GuiAdapter::SetResizeCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
452 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
|
453 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
454 SetCallback<OnWindowResizeFunc, GuiAdapterUiEvent, EmscriptenUiEvent>( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
455 &emscripten_set_resize_callback_on_thread, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
456 canvasId, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
457 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
458 capture, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
459 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
460 } |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
461 #endif |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
462 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
463 void GuiAdapter::RequestAnimationFrame( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
464 OnAnimationFrameFunc func, void* userData) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
465 { |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
466 SetAnimationFrameCallback<OnAnimationFrameFunc>( |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
467 &emscripten_request_animation_frame_loop, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
468 userData, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
469 func); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
470 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
471 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
472 #if 0 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
473 void GuiAdapter::SetKeyDownCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
474 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
|
475 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
476 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
|
477 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
478 void GuiAdapter::SetKeyUpCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
479 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
|
480 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
481 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
|
482 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
483 |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
484 // handled from within WebAssemblyViewport |
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
485 //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
|
486 //{ |
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
487 // 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
|
488 //} |
843
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 void GuiAdapter::RequestAnimationFrame(OnAnimationFrameFunc func, void* 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 emscripten_request_animation_frame_loop(func, userData); |
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 #endif |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
495 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
496 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
497 #else |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
498 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
499 // SDL ONLY |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
500 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
|
501 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
502 memset(&dest, 0, sizeof(GuiAdapterMouseEvent)); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
503 switch (source.type) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
504 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
505 case SDL_MOUSEBUTTONDOWN: |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
506 if (source.button.clicks == 1) { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
507 dest.type = GUIADAPTER_EVENT_MOUSEDOWN; |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
508 } else if (source.button.clicks == 2) { |
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 } else { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
511 dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK; |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
512 LOG(WARNING) << "Multiple-click ignored."; |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
513 } |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
514 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
515 case SDL_MOUSEMOTION: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
516 dest.type = GUIADAPTER_EVENT_MOUSEMOVE; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
517 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
518 case SDL_MOUSEBUTTONUP: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
519 dest.type = GUIADAPTER_EVENT_MOUSEUP; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
520 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
521 case SDL_MOUSEWHEEL: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
522 dest.type = GUIADAPTER_EVENT_WHEEL; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
523 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
524 default: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
525 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
|
526 ORTHANC_ASSERT(false, "Not supported"); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
527 } |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
528 //dest.timestamp = src.timestamp; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
529 //dest.screenX = src.screenX; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
530 //dest.screenY = src.screenY; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
531 //dest.clientX = src.clientX; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
532 //dest.clientY = src.clientY; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
533 dest.ctrlKey = ctrlPressed; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
534 dest.shiftKey = shiftPressed; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
535 dest.altKey = altPressed; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
536 //dest.metaKey = src.metaKey; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
537 switch (source.button.button) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
538 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
539 case SDL_BUTTON_MIDDLE: |
880 | 540 dest.button =GUIADAPTER_MOUSEBUTTON_MIDDLE; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
541 break; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
542 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
543 case SDL_BUTTON_RIGHT: |
880 | 544 dest.button = GUIADAPTER_MOUSEBUTTON_RIGHT; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
545 break; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
546 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
547 case SDL_BUTTON_LEFT: |
880 | 548 dest.button = GUIADAPTER_MOUSEBUTTON_LEFT; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
549 break; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
550 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
551 default: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
552 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
553 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
554 //dest.buttons = src.buttons; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
555 //dest.movementX = src.movementX; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
556 //dest.movementY = src.movementY; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
557 dest.targetX = source.button.x; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
558 dest.targetY = source.button.y; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
559 //dest.canvasX = src.canvasX; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
560 //dest.canvasY = src.canvasY; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
561 //dest.padding = src.padding; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
562 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
563 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
564 void ConvertFromPlatform( |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
565 GuiAdapterWheelEvent& dest, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
566 bool ctrlPressed, bool shiftPressed, bool altPressed, |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
567 const SDL_Event& source) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
568 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
569 ConvertFromPlatform(dest.mouse, ctrlPressed, shiftPressed, altPressed, source); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
570 dest.deltaX = source.wheel.x; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
571 dest.deltaY = source.wheel.y; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
572 } |
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 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
|
575 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
576 memset(&dest, 0, sizeof(GuiAdapterMouseEvent)); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
577 switch (src.type) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
578 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
579 case SDL_KEYDOWN: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
580 dest.type = GUIADAPTER_EVENT_KEYDOWN; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
581 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
582 case SDL_KEYUP: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
583 dest.type = GUIADAPTER_EVENT_KEYUP; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
584 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
585 default: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
586 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
|
587 ORTHANC_ASSERT(false, "Not supported"); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
588 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
589 dest.sym[0] = src.key.keysym.sym; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
590 dest.sym[1] = 0; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
591 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
592 if (src.key.keysym.mod & KMOD_CTRL) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
593 dest.ctrlKey = true; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
594 else |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
595 dest.ctrlKey = false; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
596 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
597 if (src.key.keysym.mod & KMOD_SHIFT) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
598 dest.shiftKey = true; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
599 else |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
600 dest.shiftKey = false; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
601 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
602 if (src.key.keysym.mod & KMOD_ALT) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
603 dest.altKey = true; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
604 else |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
605 dest.altKey = false; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
606 } |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
607 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
608 // SDL ONLY |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
609 void GuiAdapter::SetSdlResizeCallback( |
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
610 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
|
611 { |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
612 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
|
613 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
614 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
615 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
616 void GuiAdapter::SetMouseDownCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
617 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
|
618 { |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
619 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
|
620 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
621 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
622 // SDL ONLY |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
623 void GuiAdapter::SetMouseDblClickCallback( |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
624 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
|
625 { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
626 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
|
627 } |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
628 |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
629 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
630 void GuiAdapter::SetMouseMoveCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
631 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
|
632 { |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
633 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
|
634 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
635 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
636 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
637 void GuiAdapter::SetMouseUpCallback( |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
638 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
|
639 { |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
640 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
|
641 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
642 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
643 // SDL ONLY |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
644 void GuiAdapter::SetWheelCallback( |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
645 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
|
646 { |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
647 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
|
648 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
649 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
650 // SDL ONLY |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
651 void GuiAdapter::SetKeyDownCallback( |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
652 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
|
653 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
654 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
|
655 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
656 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
657 // SDL ONLY |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
658 void GuiAdapter::SetKeyUpCallback( |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
659 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
|
660 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
661 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
|
662 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
663 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
664 // SDL ONLY |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
665 void GuiAdapter::SetGenericSdlEventCallback( |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
666 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
|
667 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
668 sdlEventHandlers_.push_back(EventHandlerData<OnSdlEventCallback>(canvasId, func, userData)); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
669 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
670 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
671 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
672 void GuiAdapter::OnAnimationFrame() |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
673 { |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
674 std::vector<size_t> disabledAnimationHandlers; |
845
cdba0dbb4682
removed some c++11 for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
843
diff
changeset
|
675 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
|
676 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
677 // 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
|
678 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
|
679 |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
680 // 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
|
681 // 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
|
682 if (!goOn) |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
683 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
|
684 } |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
685 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
|
686 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
687 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
|
688 animationFrameHandlers_.erase(animationFrameHandlers_.begin() + disabledAnimationHandlers[i]); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
689 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
690 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
691 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
692 // SDL ONLY |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
693 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
|
694 { |
845
cdba0dbb4682
removed some c++11 for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
843
diff
changeset
|
695 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
|
696 { |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
697 (*(resizeHandlers_[i].func))( |
1317 | 698 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
|
699 } |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
700 } |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
701 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
702 |
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 void GuiAdapter::OnSdlGenericEvent(const SDL_Event& sdlEvent) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
705 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
706 // 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
|
707 // 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
|
708 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
709 /* |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
710 SDL_WindowEvent SDL_WINDOWEVENT |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
711 SDL_KeyboardEvent SDL_KEYDOWN |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
712 SDL_KEYUP |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
713 SDL_TextEditingEvent SDL_TEXTEDITING |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
714 SDL_TextInputEvent SDL_TEXTINPUT |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
715 SDL_MouseMotionEvent SDL_MOUSEMOTION |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
716 SDL_MouseButtonEvent SDL_MOUSEBUTTONDOWN |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
717 SDL_MOUSEBUTTONUP |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
718 SDL_MouseWheelEvent SDL_MOUSEWHEEL |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
719 SDL_UserEvent SDL_USEREVENT through ::SDL_LASTEVENT-1 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
720 */ |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
721 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
722 // 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
|
723 // all widgets. |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
724 // otherwise, it contains the originating message window title |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
725 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
726 std::string windowTitle; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
727 uint32_t windowId = 0; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
728 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
729 if (sdlEvent.type == SDL_WINDOWEVENT) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
730 windowId = sdlEvent.window.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
731 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
|
732 windowId = sdlEvent.key.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
733 else if (sdlEvent.type == SDL_TEXTEDITING) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
734 windowId = sdlEvent.edit.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
735 else if (sdlEvent.type == SDL_TEXTINPUT) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
736 windowId = sdlEvent.text.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
737 else if (sdlEvent.type == SDL_MOUSEMOTION) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
738 windowId = sdlEvent.motion.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
739 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
|
740 windowId = sdlEvent.button.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
741 else if (sdlEvent.type == SDL_MOUSEWHEEL) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
742 windowId = sdlEvent.wheel.windowID; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
743 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
|
744 windowId = sdlEvent.user.windowID; |
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 if (windowId != 0) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
747 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
748 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowId); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
749 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
|
750 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
751 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
|
752 windowTitle = windowTitleSz; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
753 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
|
754 } |
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 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
|
757 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
758 // 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
|
759 // 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
|
760 std::string& canvasName = sdlEventHandlers_[i].canvasName; |
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 bool sendEvent = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
763 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
764 if (windowTitle != "" && (canvasName != windowTitle)) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
765 sendEvent = false; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
766 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
767 if (sendEvent) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
768 { |
1319 | 769 OnSdlEventCallback func = sdlEventHandlers_[i].func; |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
770 (*func)(canvasName, sdlEvent, sdlEventHandlers_[i].userData); |
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 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
773 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
774 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
775 // SDL ONLY |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
776 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
|
777 { |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
778 // 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
|
779 // is designed for Wasm |
879 | 780 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID); |
781 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
|
782 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
783 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow); |
879 | 784 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
|
785 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
786 std::string windowTitle(windowTitleSz); |
879 | 787 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
|
788 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
789 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
|
790 { |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
791 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
|
792 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
|
793 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
794 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
|
795 (*(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
|
796 } |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
797 break; |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
798 default: |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
799 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
|
800 break; |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
801 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
802 } |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
803 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
804 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
805 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
|
806 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
807 // 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
|
808 ORTHANC_ASSERT(event.sym[0] != 0); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
809 ORTHANC_ASSERT(event.sym[1] == 0); |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
810 |
879 | 811 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID); |
812 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
|
813 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
814 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow); |
879 | 815 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
|
816 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
817 std::string windowTitle(windowTitleSz); |
879 | 818 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
|
819 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
820 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
|
821 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
822 case GUIADAPTER_EVENT_KEYDOWN: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
823 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
|
824 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
825 (*(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
|
826 } |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
827 break; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
828 case GUIADAPTER_EVENT_KEYUP: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
829 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
|
830 { |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
831 (*(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
|
832 } |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
833 break; |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
834 default: |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
835 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
|
836 break; |
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 } |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
839 |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
840 // SDL ONLY |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
841 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
|
842 { |
880 | 843 if (windowID == 0) |
844 { | |
845 LOG(WARNING) << "GuiAdapter::OnMouseEvent -- windowID == 0 and event won't be routed!"; | |
846 } | |
847 else | |
848 { | |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
849 // 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
|
850 // is designed for Wasm |
880 | 851 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID); |
852 | |
853 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
|
854 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
855 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow); |
880 | 856 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
|
857 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
858 std::string windowTitle(windowTitleSz); |
880 | 859 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
|
860 |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
861 switch (event.type) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
862 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
863 case GUIADAPTER_EVENT_MOUSEDOWN: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
864 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
|
865 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
866 if (mouseDownHandlers_[i].canvasName == windowTitle) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
867 (*(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
|
868 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
869 break; |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
870 case GUIADAPTER_EVENT_MOUSEDBLCLICK: |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
871 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
|
872 { |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
873 if (mouseDblCickHandlers_[i].canvasName == windowTitle) |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
874 (*(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
|
875 } |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
947
diff
changeset
|
876 break; |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
877 case GUIADAPTER_EVENT_MOUSEMOVE: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
878 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
|
879 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
880 if (mouseMoveHandlers_[i].canvasName == windowTitle) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
881 (*(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
|
882 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
883 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
884 case GUIADAPTER_EVENT_MOUSEUP: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
885 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
|
886 { |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
887 if (mouseUpHandlers_[i].canvasName == windowTitle) |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
888 (*(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
|
889 } |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
890 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
891 default: |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
892 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
|
893 break; |
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
894 } |
880 | 895 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
896 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
897 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
898 |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
937
diff
changeset
|
899 // 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
|
900 // 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
|
901 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
902 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
903 void GuiAdapter::RequestAnimationFrame(OnAnimationFrameFunc func, void* 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 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
|
906 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
907 |
853 | 908 # 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
|
909 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
910 // SDL ONLY |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
911 static void GLAPIENTRY |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
912 OpenGLMessageCallback(GLenum source, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
913 GLenum type, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
914 GLuint id, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
915 GLenum severity, |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
916 GLsizei length, |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
917 const GLchar * message, |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
918 const void* userParam) |
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 if (severity != GL_DEBUG_SEVERITY_NOTIFICATION) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
921 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
922 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
|
923 (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""), |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
924 type, severity, message); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
925 } |
861
f0bf971a1e31
Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
926 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
927 # endif |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
928 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
929 #if 0 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
930 // TODO: remove this when generic sdl event handlers are implemented in |
1341 | 931 // the DoseView |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
932 // SDL ONLY |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
933 bool GuiAdapter::IsSdlViewPortRefreshEvent(const SDL_Event& event) const |
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 SDL_Window* sdlWindow = SDL_GetWindowFromID(event.window.windowID); |
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 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
|
938 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
939 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
940 |
1341 | 941 // 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
|
942 // (and retrieve the SdlViewport) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
943 boost::shared_ptr<IGuiAdapterWidget> foundWidget; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
944 VisitWidgets([&foundWidget, windowTitleSz](auto widget) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
945 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
946 if (widget->GetCanvasIdentifier() == std::string(windowTitleSz)) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
947 foundWidget = widget; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
948 }); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
949 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
|
950 return foundWidget->GetSdlViewport().IsRefreshEvent(event); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
951 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
952 #endif |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
953 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
954 // 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
|
955 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
|
956 { |
913
2b4b6b86520a
Re-enabled gl debug output in GuiAdapter +
Benjamin Golinvaux <bgo@osimis.io>
parents:
906
diff
changeset
|
957 #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
|
958 // TODO: MAKE THIS DYNAMIC !!! See SdlOpenGLViewport vs Cairo in ViewportWrapper |
853 | 959 # 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
|
960 glEnable(GL_DEBUG_OUTPUT); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
961 glDebugMessageCallback(OpenGLMessageCallback, 0); |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
962 # 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
|
963 #endif |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
964 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
965 // Uint32 SDL_GetWindowID(SDL_Window* window) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
966 // 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
|
967 |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
968 bool stop = false; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
969 while (!stop) |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
970 { |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
971 { |
1312
4f8c9065ee52
coping with both viewport and loader changes
Benjamin Golinvaux <bgo@osimis.io>
parents:
1300
diff
changeset
|
972 // 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
|
973 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
|
974 (*func)(cookie); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
975 OnAnimationFrame(); // in SDL we must call it |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
976 } |
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 while (!stop) |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
979 { |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
980 std::vector<SDL_Event> sdlEvents; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
981 std::map<Uint32,SDL_Event> userEventsMap; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
982 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
983 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
|
984 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
985 // FIRST: collect all pending events |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
986 while (SDL_PollEvent(&sdlEvent) != 0) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
987 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
988 if ( (sdlEvent.type >= SDL_USEREVENT) && |
1435
d0a3de66bb42
Small fix for refresh events.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1410
diff
changeset
|
989 (sdlEvent.type < SDL_LASTEVENT) ) |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
990 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
991 // 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
|
992 userEventsMap[sdlEvent.type] = sdlEvent; |
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 else |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
995 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
996 sdlEvents.push_back(sdlEvent); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
997 } |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
853
diff
changeset
|
998 } |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
999 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1000 // SECOND: collect all user events |
1319 | 1001 for (std::map<Uint32,SDL_Event>::const_iterator it = userEventsMap.begin(); it != userEventsMap.end(); ++it) |
1002 sdlEvents.push_back(it->second); | |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1003 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1004 // now process the events |
1319 | 1005 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
|
1006 { |
1319 | 1007 const SDL_Event& sdlEvent = *it; |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1008 // 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
|
1009 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1010 if (sdlEvent.type == SDL_QUIT) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1011 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1012 // TODO: call exit callbacks here |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1013 stop = true; |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1014 break; |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1015 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1016 else if ((sdlEvent.type == SDL_MOUSEMOTION) || |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1017 (sdlEvent.type == SDL_MOUSEBUTTONDOWN) || |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1018 (sdlEvent.type == SDL_MOUSEBUTTONUP)) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1019 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1020 int scancodeCount = 0; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1021 const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1022 bool ctrlPressed(false); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1023 bool shiftPressed(false); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1024 bool altPressed(false); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1025 |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1026 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
|
1027 ctrlPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1028 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
|
1029 ctrlPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1030 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
|
1031 shiftPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1032 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
|
1033 shiftPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1034 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
|
1035 altPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1036 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1037 GuiAdapterMouseEvent dest; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1038 ConvertFromPlatform(dest, ctrlPressed, shiftPressed, altPressed, sdlEvent); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1039 OnMouseEvent(sdlEvent.window.windowID, dest); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1040 #if 0 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1041 // for reference, how to create trackers |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1042 if (tracker) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1043 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1044 PointerEvent e; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1045 e.AddPosition(compositor.GetPixelCenterCoordinates( |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1046 sdlEvent.button.x, sdlEvent.button.y)); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1047 tracker->PointerMove(e); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1048 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1049 #endif |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1050 } |
1313
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1051 else if (sdlEvent.type == SDL_MOUSEWHEEL) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1052 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1053 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1054 int scancodeCount = 0; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1055 const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1056 bool ctrlPressed(false); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1057 bool shiftPressed(false); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1058 bool altPressed(false); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1059 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1060 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
|
1061 ctrlPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1062 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
|
1063 ctrlPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1064 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
|
1065 shiftPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1066 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
|
1067 shiftPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1068 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
|
1069 altPressed = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1070 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1071 GuiAdapterWheelEvent dest; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1072 ConvertFromPlatform(dest, ctrlPressed, shiftPressed, altPressed, sdlEvent); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1073 OnMouseWheelEvent(sdlEvent.window.windowID, dest); |
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 //KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1076 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1077 //int x, y; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1078 //SDL_GetMouseState(&x, &y); |
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 //if (sdlEvent.wheel.y > 0) |
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 // locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Up, x, y, modifiers); |
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 //else if (sdlEvent.wheel.y < 0) |
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 // locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Down, x, y, modifiers); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1087 //} |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1088 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1089 else if (sdlEvent.type == SDL_WINDOWEVENT && |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1090 (sdlEvent.window.event == SDL_WINDOWEVENT_RESIZED || |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1091 sdlEvent.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1092 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1093 #if 0 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1094 tracker.reset(); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1095 #endif |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1096 OnResize(sdlEvent.window.data1, sdlEvent.window.data2); |
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 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
|
1099 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1100 switch (sdlEvent.key.keysym.sym) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1101 { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1102 case SDLK_f: |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1103 // window.GetWindow().ToggleMaximize(); //TODO: move to particular handler |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1104 break; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1105 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1106 // 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
|
1107 // loss/restoring code (2019-08-10) |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1108 // case SDLK_k: |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1109 // { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1110 // SDL_Window* window = SDL_GetWindowFromID(sdlEvent.window.windowID); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1111 // std::string windowTitle(SDL_GetWindowTitle(window)); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1112 // Debug_SetContextToBeKilled(windowTitle); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1113 // } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1114 // break; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1115 // case SDLK_l: |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1116 // { |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1117 // SDL_Window* window = SDL_GetWindowFromID(sdlEvent.window.windowID); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1118 // std::string windowTitle(SDL_GetWindowTitle(window)); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1119 // Debug_SetContextToBeRestored(windowTitle); |
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 // break; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1122 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1123 case SDLK_q: |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1124 stop = true; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1125 break; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1126 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1127 default: |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1128 GuiAdapterKeyboardEvent dest; |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1129 ConvertFromPlatform(dest, sdlEvent); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1130 OnKeyboardEvent(sdlEvent.window.windowID, dest); |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1131 break; |
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 } |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1134 |
f30905f5d246
Added support for OnGenericSdlEvent to GuiAdapter.
Benjamin Golinvaux <bgo@osimis.io>
parents:
1312
diff
changeset
|
1135 OnSdlGenericEvent(sdlEvent); |
843
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1136 } |
1436
fb8c36073983
Fix problem where multiple init/exit were not possible when using GuiAdapter
Benjamin Golinvaux <bgo@osimis.io>
parents:
1435
diff
changeset
|
1137 SDL_Delay(1); |
843
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 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1141 #endif |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1142 } |
67f9c27214c5
Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1143 |