annotate Applications/Generic/GuiAdapter.cpp @ 1289:343aa1dfaa90 bugs/2020-02-invisible-slice

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