annotate Applications/Generic/GuiAdapter.cpp @ 1297:6ab03e429f06 broker

integration mainline->broker
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sun, 23 Feb 2020 15:32:24 +0100
parents 7ec8fea061b9 7def6ab2929f
children c38c89684d83
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
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
24 # include "../../Framework/OpenGL/OpenGLIncludes.h"
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
1226
05d05cba0f4f explicitely tagging LockingEmitter as deprecated
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1097
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
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
37 namespace OrthancStone
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
38 {
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
39 std::ostream& operator<<(
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
40 std::ostream& os, const GuiAdapterKeyboardEvent& event)
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
41 {
880
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
42 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
43 "shift: " << event.shiftKey << ", " <<
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
44 "alt: " << event.altKey;
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
45 return os;
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
46 }
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
47
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
48 #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
49 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
50 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
51 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
52
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
53 void ConvertFromPlatform(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
54 GuiAdapterUiEvent& dest,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
55 int eventType,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
56 const EmscriptenUiEvent& src)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
57 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
58 // no data for now
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
59 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
60
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
61 void ConvertFromPlatform(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
62 GuiAdapterMouseEvent& dest,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
63 int eventType,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
64 const EmscriptenMouseEvent& src)
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 memset(&dest, 0, sizeof(GuiAdapterMouseEvent));
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
67 switch (eventType)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
68 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
69 case EMSCRIPTEN_EVENT_CLICK:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
70 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
71 ORTHANC_ASSERT(false, "Not supported");
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
72 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
73 case EMSCRIPTEN_EVENT_MOUSEDOWN:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
74 dest.type = GUIADAPTER_EVENT_MOUSEDOWN;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
75 break;
1020
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
76 case EMSCRIPTEN_EVENT_DBLCLICK:
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
77 dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK;
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
78 break;
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
79 case EMSCRIPTEN_EVENT_MOUSEMOVE:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
80 dest.type = GUIADAPTER_EVENT_MOUSEMOVE;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
81 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
82 case EMSCRIPTEN_EVENT_MOUSEUP:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
83 dest.type = GUIADAPTER_EVENT_MOUSEUP;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
84 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
85 case EMSCRIPTEN_EVENT_WHEEL:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
86 dest.type = GUIADAPTER_EVENT_WHEEL;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
87 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
88
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
89 default:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
90 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
91 ORTHANC_ASSERT(false, "Not supported");
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
92 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
93 //dest.timestamp = src.timestamp;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
94 //dest.screenX = src.screenX;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
95 //dest.screenY = src.screenY;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
96 //dest.clientX = src.clientX;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
97 //dest.clientY = src.clientY;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
98 dest.ctrlKey = src.ctrlKey;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
99 dest.shiftKey = src.shiftKey;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
100 dest.altKey = src.altKey;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
101 //dest.metaKey = src.metaKey;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
102 dest.button = src.button;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
103 //dest.buttons = src.buttons;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
104 //dest.movementX = src.movementX;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
105 //dest.movementY = src.movementY;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
106 dest.targetX = src.targetX;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
107 dest.targetY = src.targetY;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
108 //dest.canvasX = src.canvasX;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
109 //dest.canvasY = src.canvasY;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
110 //dest.padding = src.padding;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
111 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
112
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
113 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
114 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
115 ConvertFromPlatform(dest.mouse, eventType, src.mouse);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
116 dest.deltaX = src.deltaX;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
117 dest.deltaY = src.deltaY;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
118 switch (src.deltaMode)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
119 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
120 case DOM_DELTA_PIXEL:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
121 dest.deltaMode = GUIADAPTER_DELTA_PIXEL;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
122 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
123 case DOM_DELTA_LINE:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
124 dest.deltaMode = GUIADAPTER_DELTA_LINE;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
125 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
126 case DOM_DELTA_PAGE:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
127 dest.deltaMode = GUIADAPTER_DELTA_PAGE;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
128 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
129 default:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
130 ORTHANC_ASSERT(false, "Unknown deltaMode: " << src.deltaMode <<
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
131 " in wheel event...");
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 dest.deltaMode = src.deltaMode;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
134 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
135
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
136 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
137 {
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
138 dest.sym[0] = src.key[0];
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
139 dest.sym[1] = 0;
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
140 dest.ctrlKey = src.ctrlKey;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
141 dest.shiftKey = src.shiftKey;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
142 dest.altKey = src.altKey;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
143 }
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
144
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
145 template<typename GenericFunc>
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
146 struct FuncAdapterPayload
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
147 {
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
148 std::string canvasId;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
149 void* userData;
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
150 GenericFunc callback;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
151 };
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
152
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
153 template<typename GenericFunc,
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
154 typename GuiAdapterEvent,
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
155 typename EmscriptenEvent>
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
156 EM_BOOL OnEventAdapterFunc(
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
157 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
158 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
159
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
160 // userData is OnMouseWheelFuncAdapterPayload
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
161 FuncAdapterPayload<GenericFunc>* payload =
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
162 reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
163 // LOG(INFO) << "OnEventAdapterFunc";
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
164 // LOG(INFO) << "------------------";
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
165 // LOG(INFO) << "eventType: " << eventType << " wheelEvent: " <<
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
166 // (int)wheelEvent << " userData: " << userData <<
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
167 // " payload->userData: " << payload->userData;
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
168
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
169 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
170 ConvertFromPlatform(guiEvent, eventType, *emEvent);
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
171 bool ret = (*(payload->callback))(payload->canvasId, &guiEvent, payload->userData);
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
172 return static_cast<EM_BOOL>(ret);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
173 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
174
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
175 template<typename GenericFunc,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
176 typename GuiAdapterEvent,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
177 typename EmscriptenEvent>
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
178 EM_BOOL OnEventAdapterFunc2(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
179 int /*eventType*/, const EmscriptenEvent* wheelEvent, void* userData)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
180 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
181 // userData is OnMouseWheelFuncAdapterPayload
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
182 FuncAdapterPayload<GenericFunc>* payload =
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
183 reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData);
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
184
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
185 GuiAdapterEvent guiEvent;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
186 ConvertFromPlatform(guiEvent, *wheelEvent);
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
187 bool ret = (*(payload->callback))(payload->canvasId, &guiEvent, payload->userData);
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
188 return static_cast<EM_BOOL>(ret);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
189 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
190
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
191 template<typename GenericFunc>
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
192 EM_BOOL OnEventAdapterFunc3(
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
193 double time, void* userData)
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
194 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
195 // userData is OnMouseWheelFuncAdapterPayload
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
196 FuncAdapterPayload<GenericFunc>* payload =
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
197 reinterpret_cast<FuncAdapterPayload<GenericFunc>*>(userData);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
198 //std::auto_ptr< FuncAdapterPayload<GenericFunc> > deleter(payload);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
199 bool ret = (*(payload->callback))(time, payload->userData);
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 // 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
204 template<
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
205 typename GenericFunc,
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
206 typename GuiAdapterEvent,
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
207 typename EmscriptenEvent,
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
208 typename EmscriptenSetCallbackFunc>
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
209 static void SetCallback(
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
210 EmscriptenSetCallbackFunc emFunc,
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
211 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
212 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
213 // TODO: write RemoveCallback with an int id that gets returned from
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
214 // here
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
215 FuncAdapterPayload<GenericFunc>* payload =
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
216 new FuncAdapterPayload<GenericFunc>();
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
217 std::auto_ptr<FuncAdapterPayload<GenericFunc> > payloadP(payload);
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
218 payload->canvasId = canvasId;
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
219 payload->callback = func;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
220 payload->userData = userData;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
221 void* userDataRaw = reinterpret_cast<void*>(payload);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
222 // LOG(INFO) << "SetCallback -- userDataRaw: " << userDataRaw <<
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
223 // " payload: " << payload << " payload->userData: " << payload->userData;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
224 (*emFunc)(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
225 canvasId.c_str(),
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
226 userDataRaw,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
227 static_cast<EM_BOOL>(capture),
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
228 &OnEventAdapterFunc<GenericFunc, GuiAdapterEvent, EmscriptenEvent>,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
229 EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
230 payloadP.release();
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
231 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
232
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
233 template<
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
234 typename GenericFunc,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
235 typename GuiAdapterEvent,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
236 typename EmscriptenEvent,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
237 typename EmscriptenSetCallbackFunc>
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
238 static void SetCallback2(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
239 EmscriptenSetCallbackFunc emFunc,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
240 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
241 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
242 std::auto_ptr<FuncAdapterPayload<GenericFunc> > payload(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
243 new FuncAdapterPayload<GenericFunc>()
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
244 );
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
245 payload->canvasId = canvasId;
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
246 payload->callback = func;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
247 payload->userData = userData;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
248 void* userDataRaw = reinterpret_cast<void*>(payload.release());
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
249 (*emFunc)(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
250 canvasId.c_str(),
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
251 userDataRaw,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
252 static_cast<EM_BOOL>(capture),
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
253 &OnEventAdapterFunc2<GenericFunc, GuiAdapterEvent, EmscriptenEvent>,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
254 EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
255 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
256
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
257 template<
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
258 typename GenericFunc,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
259 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
260 static void SetAnimationFrameCallback(
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
261 EmscriptenSetCallbackFunc emFunc,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
262 void* userData, GenericFunc func)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
263 {
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
264 // LOG(ERROR) << "SetAnimationFrameCallback !!!!!! (RequestAnimationFrame)";
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
265 std::auto_ptr<FuncAdapterPayload<GenericFunc> > payload(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
266 new FuncAdapterPayload<GenericFunc>()
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
267 );
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
268 payload->canvasId = "UNDEFINED";
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
269 payload->callback = func;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
270 payload->userData = userData;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
271 void* userDataRaw = reinterpret_cast<void*>(payload.release());
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
272 (*emFunc)(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
273 &OnEventAdapterFunc3<GenericFunc>,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
274 userDataRaw);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
275 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
276
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
277 void GuiAdapter::SetWheelCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
278 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
279 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
280 SetCallback<OnMouseWheelFunc, GuiAdapterWheelEvent, EmscriptenWheelEvent>(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
281 &emscripten_set_wheel_callback_on_thread,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
282 canvasId,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
283 userData,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
284 capture,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
285 func);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
286 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
287
1020
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
288
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
289 void GuiAdapter::SetMouseDblClickCallback(
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
290 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
291 {
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
292 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
293 &emscripten_set_dblclick_callback_on_thread,
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
294 canvasId,
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
295 userData,
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
296 capture,
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
297 func);
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
298 }
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
299
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
300
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
301 void GuiAdapter::SetMouseDownCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
302 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
303 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
304 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
305 &emscripten_set_mousedown_callback_on_thread,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
306 canvasId,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
307 userData,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
308 capture,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
309 func);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
310 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
311
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
312 void GuiAdapter::SetMouseMoveCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
313 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
314 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
315 // LOG(INFO) << "SetMouseMoveCallback -- " << "supplied userData: " <<
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
316 // userData;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
317
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
318 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
319 &emscripten_set_mousemove_callback_on_thread,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
320 canvasId,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
321 userData,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
322 capture,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
323 func);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
324 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
325
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
326 void GuiAdapter::SetMouseUpCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
327 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
328 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
329 SetCallback<OnMouseEventFunc, GuiAdapterMouseEvent, EmscriptenMouseEvent>(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
330 &emscripten_set_mouseup_callback_on_thread,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
331 canvasId,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
332 userData,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
333 capture,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
334 func);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
335 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
336
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
337 void GuiAdapter::SetKeyDownCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
338 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
339 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
340 SetCallback2<OnKeyDownFunc, GuiAdapterKeyboardEvent, EmscriptenKeyboardEvent>(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
341 &emscripten_set_keydown_callback_on_thread,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
342 canvasId,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
343 userData,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
344 capture,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
345 func);
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 void GuiAdapter::SetKeyUpCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
349 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
350 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
351 SetCallback2<OnKeyUpFunc, GuiAdapterKeyboardEvent, EmscriptenKeyboardEvent>(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
352 &emscripten_set_keyup_callback_on_thread,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
353 canvasId,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
354 userData,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
355 capture,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
356 func);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
357 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
358
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
359 void GuiAdapter::SetResizeCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
360 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
361 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
362 SetCallback<OnWindowResizeFunc, GuiAdapterUiEvent, EmscriptenUiEvent>(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
363 &emscripten_set_resize_callback_on_thread,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
364 canvasId,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
365 userData,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
366 capture,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
367 func);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
368 }
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 void GuiAdapter::RequestAnimationFrame(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
371 OnAnimationFrameFunc func, void* userData)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
372 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
373 // LOG(ERROR) << "-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+";
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
374 // LOG(ERROR) << "RequestAnimationFrame";
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
375 // LOG(ERROR) << "-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+";
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
376 SetAnimationFrameCallback<OnAnimationFrameFunc>(
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
377 &emscripten_request_animation_frame_loop,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
378 userData,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
379 func);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
380 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
381
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
382 #if 0
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
383 void GuiAdapter::SetKeyDownCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
384 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
385 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
386 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
387 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
388 void GuiAdapter::SetKeyUpCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
389 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
390 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
391 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
392 }
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 void GuiAdapter::SetResizeCallback(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
395 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
396 emscripten_set_resize_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
397 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
398
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
399 void GuiAdapter::RequestAnimationFrame(OnAnimationFrameFunc func, void* userData)
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 emscripten_request_animation_frame_loop(func, userData);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
402 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
403 #endif
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
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
406 #else
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
407
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
408 // SDL ONLY
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
409 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
410 {
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
411 memset(&dest, 0, sizeof(GuiAdapterMouseEvent));
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
412 switch (source.type)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
413 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
414 case SDL_MOUSEBUTTONDOWN:
1020
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
415 if (source.button.clicks == 1) {
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
416 dest.type = GUIADAPTER_EVENT_MOUSEDOWN;
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
417 } else if (source.button.clicks == 2) {
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
418 dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK;
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
419 } else {
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
420 dest.type = GUIADAPTER_EVENT_MOUSEDBLCLICK;
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
421 LOG(WARNING) << "Multiple-click ignored.";
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
422 }
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
423 break;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
424 case SDL_MOUSEMOTION:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
425 dest.type = GUIADAPTER_EVENT_MOUSEMOVE;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
426 break;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
427 case SDL_MOUSEBUTTONUP:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
428 dest.type = GUIADAPTER_EVENT_MOUSEUP;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
429 break;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
430 case SDL_MOUSEWHEEL:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
431 dest.type = GUIADAPTER_EVENT_WHEEL;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
432 break;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
433 default:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
434 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
435 ORTHANC_ASSERT(false, "Not supported");
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
436 }
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
437 //dest.timestamp = src.timestamp;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
438 //dest.screenX = src.screenX;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
439 //dest.screenY = src.screenY;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
440 //dest.clientX = src.clientX;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
441 //dest.clientY = src.clientY;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
442 dest.ctrlKey = ctrlPressed;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
443 dest.shiftKey = shiftPressed;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
444 dest.altKey = altPressed;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
445 //dest.metaKey = src.metaKey;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
446 switch (source.button.button)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
447 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
448 case SDL_BUTTON_MIDDLE:
880
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
449 dest.button =GUIADAPTER_MOUSEBUTTON_MIDDLE;
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
450 break;
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
451
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
452 case SDL_BUTTON_RIGHT:
880
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
453 dest.button = GUIADAPTER_MOUSEBUTTON_RIGHT;
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
454 break;
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
455
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
456 case SDL_BUTTON_LEFT:
880
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
457 dest.button = GUIADAPTER_MOUSEBUTTON_LEFT;
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
458 break;
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
459
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
460 default:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
461 break;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
462 }
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
463 //dest.buttons = src.buttons;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
464 //dest.movementX = src.movementX;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
465 //dest.movementY = src.movementY;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
466 dest.targetX = source.button.x;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
467 dest.targetY = source.button.y;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
468 //dest.canvasX = src.canvasX;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
469 //dest.canvasY = src.canvasY;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
470 //dest.padding = src.padding;
843
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
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
473 void ConvertFromPlatform(
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
474 GuiAdapterWheelEvent& dest,
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
475 bool ctrlPressed, bool shiftPressed, bool altPressed,
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
476 const SDL_Event& source)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
477 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
478 ConvertFromPlatform(dest.mouse, ctrlPressed, shiftPressed, altPressed, source);
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
479 dest.deltaX = source.wheel.x;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
480 dest.deltaY = source.wheel.y;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
481 }
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
482
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
483 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
484 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
485 memset(&dest, 0, sizeof(GuiAdapterMouseEvent));
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
486 switch (src.type)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
487 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
488 case SDL_KEYDOWN:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
489 dest.type = GUIADAPTER_EVENT_KEYDOWN;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
490 break;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
491 case SDL_KEYUP:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
492 dest.type = GUIADAPTER_EVENT_KEYUP;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
493 break;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
494 default:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
495 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
496 ORTHANC_ASSERT(false, "Not supported");
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
497 }
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
498 dest.sym[0] = src.key.keysym.sym;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
499 dest.sym[1] = 0;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
500
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
501 if (src.key.keysym.mod & KMOD_CTRL)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
502 dest.ctrlKey = true;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
503 else
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
504 dest.ctrlKey = false;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
505
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
506 if (src.key.keysym.mod & KMOD_SHIFT)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
507 dest.shiftKey = true;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
508 else
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
509 dest.shiftKey = false;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
510
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
511 if (src.key.keysym.mod & KMOD_ALT)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
512 dest.altKey = true;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
513 else
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
514 dest.altKey = false;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
515 }
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
516
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
517
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
518
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
519 // SDL ONLY
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
520 void GuiAdapter::SetResizeCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
521 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
522 {
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
523 resizeHandlers_.push_back(EventHandlerData<OnWindowResizeFunc>(canvasId, func, userData));
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
524 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
525
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
526 // SDL ONLY
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
527 void GuiAdapter::SetMouseDownCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
528 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
529 {
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
530 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
531 }
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
532
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
533 // SDL ONLY
1020
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
534 void GuiAdapter::SetMouseDblClickCallback(
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
535 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
536 {
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
537 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
538 }
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
539
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
540 // SDL ONLY
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
541 void GuiAdapter::SetMouseMoveCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
542 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
543 {
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
544 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
545 }
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
546
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
547 // SDL ONLY
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
548 void GuiAdapter::SetMouseUpCallback(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
549 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
550 {
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
551 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
552 }
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
553
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
554 // SDL ONLY
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
555 void GuiAdapter::SetWheelCallback(
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
556 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
557 {
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
558 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
559 }
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
560
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
561 // SDL ONLY
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
562 void GuiAdapter::SetKeyDownCallback(
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
563 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
564 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
565 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
566 }
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
567
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
568 // SDL ONLY
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
569 void GuiAdapter::SetKeyUpCallback(
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
570 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
571 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
572 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
573 }
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
574
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
575 // SDL ONLY
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
576 void GuiAdapter::OnAnimationFrame()
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
577 {
947
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
578 std::vector<size_t> disabledAnimationHandlers;
845
cdba0dbb4682 removed some c++11 for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 843
diff changeset
579 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
580 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
581 // 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
582 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
583
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
584 // 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
585 // 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
586 if (!goOn)
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
587 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
588 }
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
589 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
590 {
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
591 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
592 animationFrameHandlers_.erase(animationFrameHandlers_.begin() + disabledAnimationHandlers[i]);
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
593 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
594 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
595
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
596 // SDL ONLY
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
597 void GuiAdapter::OnResize()
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
598 {
845
cdba0dbb4682 removed some c++11 for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 843
diff changeset
599 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
600 {
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
601 (*(resizeHandlers_[i].func))(
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
602 resizeHandlers_[i].canvasName, 0, resizeHandlers_[i].userData);
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
603 }
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
604 }
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
605
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
606 // SDL ONLY
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
607 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
608 {
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
609
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
610 // 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
611 // is designed for Wasm
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
612 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
613 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
614
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
615 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
616 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
617
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
618 std::string windowTitle(windowTitleSz);
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
619 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
620
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
621 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
622 {
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
623 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
624 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
625 {
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
626 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
627 (*(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
628 }
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
629 break;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
630 default:
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
631 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
632 break;
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
633 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
634 }
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
635
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
636
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
637 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
638 {
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
639 // 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
640 ORTHANC_ASSERT(event.sym[0] != 0);
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
641 ORTHANC_ASSERT(event.sym[1] == 0);
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
642
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
643 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
644 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
645
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
646 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
647 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
648
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
649 std::string windowTitle(windowTitleSz);
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
650 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
651
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
652 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
653 {
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
654 case GUIADAPTER_EVENT_KEYDOWN:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
655 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
656 {
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
657 (*(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
658 }
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
659 break;
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
660 case GUIADAPTER_EVENT_KEYUP:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
661 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
662 {
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
663 (*(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
664 }
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
665 break;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
666 default:
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
667 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
668 break;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
669 }
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
670 }
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
671
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
672 // SDL ONLY
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
673 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
674 {
880
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
675 if (windowID == 0)
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
676 {
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
677 LOG(WARNING) << "GuiAdapter::OnMouseEvent -- windowID == 0 and event won't be routed!";
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
678 }
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
679 else
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
680 {
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
681 // 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
682 // is designed for Wasm
880
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
683 SDL_Window* sdlWindow = SDL_GetWindowFromID(windowID);
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
684
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
685 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
686
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
687 const char* windowTitleSz = SDL_GetWindowTitle(sdlWindow);
880
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
688 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
689
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
690 std::string windowTitle(windowTitleSz);
880
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
691 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
692
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
693 switch (event.type)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
694 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
695 case GUIADAPTER_EVENT_MOUSEDOWN:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
696 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
697 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
698 if (mouseDownHandlers_[i].canvasName == windowTitle)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
699 (*(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
700 }
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
701 break;
1020
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
702 case GUIADAPTER_EVENT_MOUSEDBLCLICK:
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
703 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
704 {
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
705 if (mouseDblCickHandlers_[i].canvasName == windowTitle)
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
706 (*(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
707 }
ac88989817e3 TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents: 947
diff changeset
708 break;
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
709 case GUIADAPTER_EVENT_MOUSEMOVE:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
710 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
711 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
712 if (mouseMoveHandlers_[i].canvasName == windowTitle)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
713 (*(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
714 }
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
715 break;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
716 case GUIADAPTER_EVENT_MOUSEUP:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
717 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
718 {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
719 if (mouseUpHandlers_[i].canvasName == windowTitle)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
720 (*(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
721 }
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
722 break;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
723 default:
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
724 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
725 break;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
726 }
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
727
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
728 ////boost::shared_ptr<IGuiAdapterWidget> GetWidgetFromWindowId();
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
729 //boost::shared_ptr<IGuiAdapterWidget> foundWidget;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
730 //VisitWidgets([foundWidget, windowID](auto widget)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
731 // {
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
732 // if (widget->GetSdlWindowID() == windowID)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
733 // foundWidget = widget;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
734 // });
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
735 //ORTHANC_ASSERT(foundWidget, "WindowID " << windowID << " was not found in the registered widgets!");
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
736 //if(foundWidget)
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
737 // foundWidget->
880
Alain Mazy <alain@mazy.be>
parents: 879 869
diff changeset
738 }
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
739 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
740
947
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
741
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
742 // 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
743 // 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
744
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
745 // SDL ONLY
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
746 void GuiAdapter::RequestAnimationFrame(OnAnimationFrameFunc func, void* userData)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
747 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
748 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
749 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
750
853
bb88686acecc fix OS X build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 845
diff changeset
751 # 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
752
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
753 // SDL ONLY
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
754 static void GLAPIENTRY
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
755 OpenGLMessageCallback(GLenum source,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
756 GLenum type,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
757 GLuint id,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
758 GLenum severity,
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
759 GLsizei length,
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
760 const GLchar * message,
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
761 const void* userParam)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
762 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
763 if (severity != GL_DEBUG_SEVERITY_NOTIFICATION)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
764 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
765 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
766 (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""),
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
767 type, severity, message);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
768 }
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
769 }
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
770 # endif
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
771
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
772 // 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
773 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
774 {
913
2b4b6b86520a Re-enabled gl debug output in GuiAdapter +
Benjamin Golinvaux <bgo@osimis.io>
parents: 906
diff changeset
775 #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
776 // 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
777 # 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
778 glEnable(GL_DEBUG_OUTPUT);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
779 glDebugMessageCallback(OpenGLMessageCallback, 0);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
780 # 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
781 #endif
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
782
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
783 // Uint32 SDL_GetWindowID(SDL_Window* window)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
784 // 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
785
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
786 bool stop = false;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
787 while (!stop)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
788 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
789 {
1097
4383382db01d deprecating LockingEmitter
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1020
diff changeset
790 Deprecated::LockingEmitter::WriterLock lock(lockingEmitter_);
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
791 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
792 (*func)(cookie);
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
793 OnAnimationFrame(); // in SDL we must call it
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
794 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
795
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
796 SDL_Event event;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
797
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
798 while (!stop && SDL_PollEvent(&event))
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
799 {
1097
4383382db01d deprecating LockingEmitter
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1020
diff changeset
800 Deprecated::LockingEmitter::WriterLock lock(lockingEmitter_);
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 if (event.type == SDL_QUIT)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
803 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
804 // TODO: call exit callbacks here
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
805 stop = true;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
806 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
807 }
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
808 else if ((event.type == SDL_MOUSEMOTION) ||
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
809 (event.type == SDL_MOUSEBUTTONDOWN) ||
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
810 (event.type == SDL_MOUSEBUTTONUP))
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
811 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
812 int scancodeCount = 0;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
813 const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
814 bool ctrlPressed(false);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
815 bool shiftPressed(false);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
816 bool altPressed(false);
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
817
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
818 if (SDL_SCANCODE_LCTRL < scancodeCount && keyboardState[SDL_SCANCODE_LCTRL])
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
819 ctrlPressed = true;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
820 if (SDL_SCANCODE_RCTRL < scancodeCount && keyboardState[SDL_SCANCODE_RCTRL])
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
821 ctrlPressed = true;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
822 if (SDL_SCANCODE_LSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_LSHIFT])
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
823 shiftPressed = true;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
824 if (SDL_SCANCODE_RSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_RSHIFT])
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
825 shiftPressed = true;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
826 if (SDL_SCANCODE_LALT < scancodeCount && keyboardState[SDL_SCANCODE_LALT])
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
827 altPressed = true;
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
828
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
829 GuiAdapterMouseEvent dest;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
830 ConvertFromPlatform(dest, ctrlPressed, shiftPressed, altPressed, event);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
831 OnMouseEvent(event.window.windowID, dest);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
832 #if 0
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
833 // for reference, how to create trackers
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
834 if (tracker)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
835 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
836 PointerEvent e;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
837 e.AddPosition(compositor.GetPixelCenterCoordinates(
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
838 event.button.x, event.button.y));
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
839 tracker->PointerMove(e);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
840 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
841 #endif
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
842 }
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
843 else if (event.type == SDL_MOUSEWHEEL)
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
844 {
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
845
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
846 int scancodeCount = 0;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
847 const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount);
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
848 bool ctrlPressed(false);
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
849 bool shiftPressed(false);
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
850 bool altPressed(false);
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
851
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
852 if (SDL_SCANCODE_LCTRL < scancodeCount && keyboardState[SDL_SCANCODE_LCTRL])
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
853 ctrlPressed = true;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
854 if (SDL_SCANCODE_RCTRL < scancodeCount && keyboardState[SDL_SCANCODE_RCTRL])
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
855 ctrlPressed = true;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
856 if (SDL_SCANCODE_LSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_LSHIFT])
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
857 shiftPressed = true;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
858 if (SDL_SCANCODE_RSHIFT < scancodeCount && keyboardState[SDL_SCANCODE_RSHIFT])
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
859 shiftPressed = true;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
860 if (SDL_SCANCODE_LALT < scancodeCount && keyboardState[SDL_SCANCODE_LALT])
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
861 altPressed = true;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
862
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
863 GuiAdapterWheelEvent dest;
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
864 ConvertFromPlatform(dest, ctrlPressed, shiftPressed, altPressed, event);
879
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
865 OnMouseWheelEvent(event.window.windowID, dest);
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
866
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
867 //KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
868
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
869 //int x, y;
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
870 //SDL_GetMouseState(&x, &y);
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
871
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
872 //if (event.wheel.y > 0)
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
873 //{
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
874 // locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Up, x, y, modifiers);
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
875 //}
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
876 //else if (event.wheel.y < 0)
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
877 //{
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
878 // locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Down, x, y, modifiers);
12b591d5d63c some Qt integration (wip)
Alain Mazy <alain@mazy.be>
parents: 858
diff changeset
879 //}
858
e3c56d4f863f GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents: 853
diff changeset
880 }
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
881 else if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
882 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
883 #if 0
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
884 tracker.reset();
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
885 #endif
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
886 OnResize();
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
887 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
888 else if (event.type == SDL_KEYDOWN && event.key.repeat == 0 /* Ignore key bounce */)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
889 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
890 switch (event.key.keysym.sym)
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
891 {
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
892 case SDLK_f:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
893 // window.GetWindow().ToggleMaximize(); //TODO: move to particular handler
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
894 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
895
947
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
896 // This commented out code was used to debug the context
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
897 // loss/restoring code (2019-08-10)
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
898 // case SDLK_k:
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
899 // {
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
900 // SDL_Window* window = SDL_GetWindowFromID(event.window.windowID);
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
901 // std::string windowTitle(SDL_GetWindowTitle(window));
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
902 // Debug_SetContextToBeKilled(windowTitle);
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
903 // }
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
904 // break;
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
905 // case SDLK_l:
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
906 // {
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
907 // SDL_Window* window = SDL_GetWindowFromID(event.window.windowID);
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
908 // std::string windowTitle(SDL_GetWindowTitle(window));
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
909 // Debug_SetContextToBeRestored(windowTitle);
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
910 // }
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
911 // break;
1091b2adeb5a Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents: 937
diff changeset
912
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
913 case SDLK_q:
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
914 stop = true;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
915 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
916
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
917 default:
861
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
918 GuiAdapterKeyboardEvent dest;
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
919 ConvertFromPlatform(dest, event);
f0bf971a1e31 Keyboard event routing (handling done in app)
Benjamin Golinvaux <bgo@osimis.io>
parents: 858
diff changeset
920 OnKeyboardEvent(event.window.windowID, dest);
843
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
921 break;
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
922 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
923 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
924 // HandleApplicationEvent(controller, compositor, event, tracker);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
925 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
926
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
927 SDL_Delay(1);
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
928 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
929 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
930 #endif
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
931 }
67f9c27214c5 Removed extra logging + doc + added GuiAdapter and LockingEmitter
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff changeset
932