annotate Deprecated/Applications/Generic/GuiAdapter.cpp @ 1436:fb8c36073983

Fix problem where multiple init/exit were not possible when using GuiAdapter
author Benjamin Golinvaux <bgo@osimis.io>
date Tue, 19 May 2020 15:28:15 +0200
parents d0a3de66bb42
children 615035c2f3ba
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
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
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
25 #endif
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
26
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
27 #if ORTHANC_ENABLE_SDL == 1
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
28 # include <SDL_video.h>
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
29 # include <SDL_render.h>
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
30 # include <SDL.h>
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
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
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
41 std::ostream& operator<<(
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
42 std::ostream& os, const GuiAdapterKeyboardEvent& event)
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
43 {
880
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
44 os << "sym: " << event.sym << " (" << (int)(event.sym[0]) << ") ctrl: " << event.ctrlKey << ", " <<
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
45 "shift: " << event.shiftKey << ", " <<
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
46 "alt: " << event.altKey;
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
47 return os;
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
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
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
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
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
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
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
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
8981bfca3457 fix nullptr
Benjamin Golinvaux <bgo@osimis.io>
parents: 1313
diff changeset
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
0290b7060167 Build fix C++03
Benjamin Golinvaux <bgo@osimis.io>
parents: 1317
diff changeset
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
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
780 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
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
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
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
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
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
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
811 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
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
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
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
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
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
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
843 if (windowID == 0)
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
844 {
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
845 LOG(WARNING) << "GuiAdapter::OnMouseEvent -- windowID == 0 and event won't be routed!";
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
846 }
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
847 else
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
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
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
851 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
852
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
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
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
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
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
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
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
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
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
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
d80a3e3cc800 dummy fixes
Benjamin Golinvaux <bgo@osimis.io>
parents: 1338
diff changeset
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
d80a3e3cc800 dummy fixes
Benjamin Golinvaux <bgo@osimis.io>
parents: 1338
diff changeset
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
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
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
0290b7060167 Build fix C++03
Benjamin Golinvaux <bgo@osimis.io>
parents: 1317
diff changeset
1001 for (std::map<Uint32,SDL_Event>::const_iterator it = userEventsMap.begin(); it != userEventsMap.end(); ++it)
0290b7060167 Build fix C++03
Benjamin Golinvaux <bgo@osimis.io>
parents: 1317
diff changeset
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
0290b7060167 Build fix C++03
Benjamin Golinvaux <bgo@osimis.io>
parents: 1317
diff changeset
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
0290b7060167 Build fix C++03
Benjamin Golinvaux <bgo@osimis.io>
parents: 1317
diff changeset
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