Mercurial > hg > orthanc-stone
annotate Applications/Sdl/SdlEngine.cpp @ 874:debb70fa10b5 am-dev
correct handling of deleted observers in OrthancApiClient
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Wed, 03 Jul 2019 10:11:22 +0200 |
parents | 4f2416d519b4 |
children | b537002f83a9 922d2e61aa5d |
rev | line source |
---|---|
0 | 1 /** |
2 * Stone of Orthanc | |
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | |
4 * Department, University Hospital of Liege, Belgium | |
439 | 5 * Copyright (C) 2017-2019 Osimis S.A., Belgium |
0 | 6 * |
7 * This program is free software: you can redistribute it and/or | |
47 | 8 * modify it under the terms of the GNU Affero General Public License |
9 * as published by the Free Software Foundation, either version 3 of | |
10 * the License, or (at your option) any later version. | |
0 | 11 * |
12 * This program is distributed in the hope that it will be useful, but | |
13 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
47 | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 * Affero General Public License for more details. | |
327 | 16 * |
47 | 17 * You should have received a copy of the GNU Affero General Public License |
0 | 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
19 **/ | |
20 | |
21 | |
22 #include "SdlEngine.h" | |
23 | |
24 #if ORTHANC_ENABLE_SDL == 1 | |
25 | |
212
5412adf19980
resort to OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
201
diff
changeset
|
26 #include <Core/Logging.h> |
201
e9c7a78a3e77
removed absolute paths
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
196
diff
changeset
|
27 |
0 | 28 #include <SDL.h> |
29 | |
30 namespace OrthancStone | |
31 { | |
271
46c5296d867e
OracleWebService and BasicSdlApplicationContext using the same global mutex
am@osimis.io
parents:
222
diff
changeset
|
32 void SdlEngine::SetSize(unsigned int width, |
56
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
33 unsigned int height) |
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
34 { |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
35 NativeStoneApplicationContext::GlobalMutexLocker locker(context_); |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
36 locker.GetCentralViewport().SetSize(width, height); |
56
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
37 surface_.SetSize(width, height); |
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
38 } |
327 | 39 |
56
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
40 |
0 | 41 void SdlEngine::RenderFrame() |
42 { | |
56
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
43 if (viewportChanged_) |
0 | 44 { |
293 | 45 NativeStoneApplicationContext::GlobalMutexLocker locker(context_); |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
46 surface_.Render(locker.GetCentralViewport()); |
53
c2dc924f1a63
removing threading out of the framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
51
diff
changeset
|
47 |
56
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
48 viewportChanged_ = false; |
0 | 49 } |
50 } | |
51 | |
52 | |
53 KeyboardModifiers SdlEngine::GetKeyboardModifiers(const uint8_t* keyboardState, | |
54 const int scancodeCount) | |
55 { | |
56 int result = KeyboardModifiers_None; | |
57 | |
58 if (keyboardState != NULL) | |
59 { | |
60 if (SDL_SCANCODE_LSHIFT < scancodeCount && | |
61 keyboardState[SDL_SCANCODE_LSHIFT]) | |
62 { | |
63 result |= KeyboardModifiers_Shift; | |
64 } | |
65 | |
66 if (SDL_SCANCODE_RSHIFT < scancodeCount && | |
67 keyboardState[SDL_SCANCODE_RSHIFT]) | |
68 { | |
69 result |= KeyboardModifiers_Shift; | |
70 } | |
71 | |
72 if (SDL_SCANCODE_LCTRL < scancodeCount && | |
73 keyboardState[SDL_SCANCODE_LCTRL]) | |
74 { | |
75 result |= KeyboardModifiers_Control; | |
76 } | |
77 | |
78 if (SDL_SCANCODE_RCTRL < scancodeCount && | |
79 keyboardState[SDL_SCANCODE_RCTRL]) | |
80 { | |
81 result |= KeyboardModifiers_Control; | |
82 } | |
83 | |
84 if (SDL_SCANCODE_LALT < scancodeCount && | |
85 keyboardState[SDL_SCANCODE_LALT]) | |
86 { | |
87 result |= KeyboardModifiers_Alt; | |
88 } | |
89 | |
90 if (SDL_SCANCODE_RALT < scancodeCount && | |
91 keyboardState[SDL_SCANCODE_RALT]) | |
92 { | |
93 result |= KeyboardModifiers_Alt; | |
94 } | |
95 } | |
96 | |
97 return static_cast<KeyboardModifiers>(result); | |
98 } | |
99 | |
100 | |
101 SdlEngine::SdlEngine(SdlWindow& window, | |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
102 NativeStoneApplicationContext& context, |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
103 MessageBroker& broker) : |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
104 IObserver(broker), |
0 | 105 window_(window), |
53
c2dc924f1a63
removing threading out of the framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
51
diff
changeset
|
106 context_(context), |
56
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
107 surface_(window), |
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
108 viewportChanged_(true) |
0 | 109 { |
110 } | |
111 | |
112 | |
113 void SdlEngine::Run() | |
114 { | |
115 int scancodeCount = 0; | |
116 const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount); | |
117 | |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
118 SetSize(window_.GetWidth(), window_.GetHeight()); |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
119 |
61
ca644004d2ee
MAJOR - removal of Start/Stop and observers in IWidget
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
56
diff
changeset
|
120 { |
293 | 121 NativeStoneApplicationContext::GlobalMutexLocker locker(context_); |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
122 locker.GetCentralViewport().FitContent(); |
61
ca644004d2ee
MAJOR - removal of Start/Stop and observers in IWidget
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
56
diff
changeset
|
123 } |
ca644004d2ee
MAJOR - removal of Start/Stop and observers in IWidget
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
56
diff
changeset
|
124 |
0 | 125 bool stop = false; |
126 while (!stop) | |
127 { | |
56
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
128 RenderFrame(); |
0 | 129 |
130 SDL_Event event; | |
131 | |
56
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
132 while (!stop && |
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
133 SDL_PollEvent(&event)) |
0 | 134 { |
293 | 135 NativeStoneApplicationContext::GlobalMutexLocker locker(context_); |
53
c2dc924f1a63
removing threading out of the framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
51
diff
changeset
|
136 |
327 | 137 if (event.type == SDL_QUIT) |
0 | 138 { |
139 stop = true; | |
140 break; | |
141 } | |
142 else if (event.type == SDL_MOUSEBUTTONDOWN) | |
143 { | |
144 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); | |
145 | |
146 switch (event.button.button) | |
147 { | |
327 | 148 case SDL_BUTTON_LEFT: |
726
4f2416d519b4
moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
467
diff
changeset
|
149 locker.GetCentralViewport().MouseDown(MouseButton_Left, event.button.x, event.button.y, modifiers, std::vector<Deprecated::Touch>()); |
327 | 150 break; |
0 | 151 |
327 | 152 case SDL_BUTTON_RIGHT: |
726
4f2416d519b4
moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
467
diff
changeset
|
153 locker.GetCentralViewport().MouseDown(MouseButton_Right, event.button.x, event.button.y, modifiers, std::vector<Deprecated::Touch>()); |
327 | 154 break; |
0 | 155 |
327 | 156 case SDL_BUTTON_MIDDLE: |
726
4f2416d519b4
moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
467
diff
changeset
|
157 locker.GetCentralViewport().MouseDown(MouseButton_Middle, event.button.x, event.button.y, modifiers, std::vector<Deprecated::Touch>()); |
327 | 158 break; |
0 | 159 |
327 | 160 default: |
161 break; | |
0 | 162 } |
163 } | |
164 else if (event.type == SDL_MOUSEMOTION) | |
165 { | |
726
4f2416d519b4
moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
467
diff
changeset
|
166 locker.GetCentralViewport().MouseMove(event.button.x, event.button.y, std::vector<Deprecated::Touch>()); |
0 | 167 } |
168 else if (event.type == SDL_MOUSEBUTTONUP) | |
169 { | |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
170 locker.GetCentralViewport().MouseUp(); |
0 | 171 } |
172 else if (event.type == SDL_WINDOWEVENT) | |
173 { | |
174 switch (event.window.event) | |
175 { | |
327 | 176 case SDL_WINDOWEVENT_LEAVE: |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
177 locker.GetCentralViewport().MouseLeave(); |
327 | 178 break; |
0 | 179 |
327 | 180 case SDL_WINDOWEVENT_ENTER: |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
181 locker.GetCentralViewport().MouseEnter(); |
327 | 182 break; |
0 | 183 |
327 | 184 case SDL_WINDOWEVENT_SIZE_CHANGED: |
185 SetSize(event.window.data1, event.window.data2); | |
186 break; | |
0 | 187 |
327 | 188 default: |
189 break; | |
0 | 190 } |
191 } | |
192 else if (event.type == SDL_MOUSEWHEEL) | |
193 { | |
194 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); | |
195 | |
196 int x, y; | |
197 SDL_GetMouseState(&x, &y); | |
198 | |
199 if (event.wheel.y > 0) | |
200 { | |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
201 locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Up, x, y, modifiers); |
0 | 202 } |
203 else if (event.wheel.y < 0) | |
204 { | |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
205 locker.GetCentralViewport().MouseWheel(MouseWheelDirection_Down, x, y, modifiers); |
0 | 206 } |
207 } | |
56
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
208 else if (event.type == SDL_KEYDOWN && |
9e3c2e75b870
extremely simplified SDL engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
53
diff
changeset
|
209 event.key.repeat == 0 /* Ignore key bounce */) |
0 | 210 { |
211 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); | |
212 | |
213 switch (event.key.keysym.sym) | |
214 { | |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
215 case SDLK_a: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'a', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
216 case SDLK_b: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'b', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
217 case SDLK_c: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'c', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
218 case SDLK_d: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'd', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
219 case SDLK_e: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'e', modifiers); break; |
327 | 220 case SDLK_f: window_.ToggleMaximize(); break; |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
221 case SDLK_g: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'g', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
222 case SDLK_h: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'h', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
223 case SDLK_i: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'i', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
224 case SDLK_j: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'j', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
225 case SDLK_k: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'k', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
226 case SDLK_l: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'l', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
227 case SDLK_m: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'm', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
228 case SDLK_n: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'n', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
229 case SDLK_o: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'o', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
230 case SDLK_p: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'p', modifiers); break; |
327 | 231 case SDLK_q: stop = true; break; |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
232 case SDLK_r: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'r', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
233 case SDLK_s: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 's', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
234 case SDLK_t: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 't', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
235 case SDLK_u: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'u', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
236 case SDLK_v: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'v', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
237 case SDLK_w: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'w', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
238 case SDLK_x: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'x', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
239 case SDLK_y: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'y', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
240 case SDLK_z: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'z', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
241 case SDLK_KP_0: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '0', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
242 case SDLK_KP_1: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '1', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
243 case SDLK_KP_2: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '2', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
244 case SDLK_KP_3: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '3', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
245 case SDLK_KP_4: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '4', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
246 case SDLK_KP_5: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '5', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
247 case SDLK_KP_6: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '6', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
248 case SDLK_KP_7: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '7', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
249 case SDLK_KP_8: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '8', modifiers); break; |
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
250 case SDLK_KP_9: locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '9', modifiers); break; |
0 | 251 |
327 | 252 case SDLK_PLUS: |
253 case SDLK_KP_PLUS: | |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
254 locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '+', modifiers); break; |
327 | 255 |
256 case SDLK_MINUS: | |
257 case SDLK_KP_MINUS: | |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
258 locker.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '-', modifiers); break; |
170
0261909fa6f0
add support for plus/minus in SDL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
167
diff
changeset
|
259 |
327 | 260 case SDLK_RIGHT: |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
261 locker.GetCentralViewport().KeyPressed(KeyboardKeys_Right, 0, modifiers); break; |
327 | 262 case SDLK_LEFT: |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
263 locker.GetCentralViewport().KeyPressed(KeyboardKeys_Left, 0, modifiers); break; |
327 | 264 case SDLK_UP: |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
265 locker.GetCentralViewport().KeyPressed(KeyboardKeys_Up, 0, modifiers); break; |
327 | 266 case SDLK_DOWN: |
385
6cc3ce74dc05
using message broker in widgets
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
330
diff
changeset
|
267 locker.GetCentralViewport().KeyPressed(KeyboardKeys_Down, 0, modifiers); break; |
327 | 268 default: |
269 break; | |
0 | 270 } |
271 } | |
272 } | |
273 | |
98
a33abae66344
scrolling over series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
63
diff
changeset
|
274 // Small delay to avoid using 100% of CPU |
a33abae66344
scrolling over series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
63
diff
changeset
|
275 SDL_Delay(1); |
0 | 276 } |
277 } | |
278 } | |
279 | |
280 #endif |