Mercurial > hg > orthanc-stone
comparison Applications/Sdl/SdlEngine.cpp @ 327:8716176ff7f0 am-2
added support for arrow keys
author | am@osimis.io |
---|---|
date | Tue, 16 Oct 2018 15:25:21 +0200 |
parents | 017044be141b |
children | 7a364e44fbb4 |
comparison
equal
deleted
inserted
replaced
326:612238b3f3e8 | 327:8716176ff7f0 |
---|---|
11 * | 11 * |
12 * This program is distributed in the hope that it will be useful, but | 12 * This program is distributed in the hope that it will be useful, but |
13 * WITHOUT ANY WARRANTY; without even the implied warranty of | 13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 * Affero General Public License for more details. | 15 * Affero General Public License for more details. |
16 * | 16 * |
17 * You should have received a copy of the GNU Affero General Public License | 17 * You should have received a copy of the GNU Affero General Public License |
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
19 **/ | 19 **/ |
20 | 20 |
21 | 21 |
33 unsigned int height) | 33 unsigned int height) |
34 { | 34 { |
35 context_.GetCentralViewport().SetSize(width, height); | 35 context_.GetCentralViewport().SetSize(width, height); |
36 surface_.SetSize(width, height); | 36 surface_.SetSize(width, height); |
37 } | 37 } |
38 | 38 |
39 | 39 |
40 void SdlEngine::RenderFrame() | 40 void SdlEngine::RenderFrame() |
41 { | 41 { |
42 if (viewportChanged_) | 42 if (viewportChanged_) |
43 { | 43 { |
133 while (!stop && | 133 while (!stop && |
134 SDL_PollEvent(&event)) | 134 SDL_PollEvent(&event)) |
135 { | 135 { |
136 NativeStoneApplicationContext::GlobalMutexLocker locker(context_); | 136 NativeStoneApplicationContext::GlobalMutexLocker locker(context_); |
137 | 137 |
138 if (event.type == SDL_QUIT) | 138 if (event.type == SDL_QUIT) |
139 { | 139 { |
140 stop = true; | 140 stop = true; |
141 break; | 141 break; |
142 } | 142 } |
143 else if (event.type == SDL_MOUSEBUTTONDOWN) | 143 else if (event.type == SDL_MOUSEBUTTONDOWN) |
144 { | 144 { |
145 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); | 145 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); |
146 | 146 |
147 switch (event.button.button) | 147 switch (event.button.button) |
148 { | 148 { |
149 case SDL_BUTTON_LEFT: | 149 case SDL_BUTTON_LEFT: |
150 context_.GetCentralViewport().MouseDown(MouseButton_Left, event.button.x, event.button.y, modifiers); | 150 context_.GetCentralViewport().MouseDown(MouseButton_Left, event.button.x, event.button.y, modifiers); |
151 break; | 151 break; |
152 | 152 |
153 case SDL_BUTTON_RIGHT: | 153 case SDL_BUTTON_RIGHT: |
154 context_.GetCentralViewport().MouseDown(MouseButton_Right, event.button.x, event.button.y, modifiers); | 154 context_.GetCentralViewport().MouseDown(MouseButton_Right, event.button.x, event.button.y, modifiers); |
155 break; | 155 break; |
156 | 156 |
157 case SDL_BUTTON_MIDDLE: | 157 case SDL_BUTTON_MIDDLE: |
158 context_.GetCentralViewport().MouseDown(MouseButton_Middle, event.button.x, event.button.y, modifiers); | 158 context_.GetCentralViewport().MouseDown(MouseButton_Middle, event.button.x, event.button.y, modifiers); |
159 break; | 159 break; |
160 | 160 |
161 default: | 161 default: |
162 break; | 162 break; |
163 } | 163 } |
164 } | 164 } |
165 else if (event.type == SDL_MOUSEMOTION) | 165 else if (event.type == SDL_MOUSEMOTION) |
166 { | 166 { |
167 context_.GetCentralViewport().MouseMove(event.button.x, event.button.y); | 167 context_.GetCentralViewport().MouseMove(event.button.x, event.button.y); |
172 } | 172 } |
173 else if (event.type == SDL_WINDOWEVENT) | 173 else if (event.type == SDL_WINDOWEVENT) |
174 { | 174 { |
175 switch (event.window.event) | 175 switch (event.window.event) |
176 { | 176 { |
177 case SDL_WINDOWEVENT_LEAVE: | 177 case SDL_WINDOWEVENT_LEAVE: |
178 context_.GetCentralViewport().MouseLeave(); | 178 context_.GetCentralViewport().MouseLeave(); |
179 break; | 179 break; |
180 | 180 |
181 case SDL_WINDOWEVENT_ENTER: | 181 case SDL_WINDOWEVENT_ENTER: |
182 context_.GetCentralViewport().MouseEnter(); | 182 context_.GetCentralViewport().MouseEnter(); |
183 break; | 183 break; |
184 | 184 |
185 case SDL_WINDOWEVENT_SIZE_CHANGED: | 185 case SDL_WINDOWEVENT_SIZE_CHANGED: |
186 SetSize(event.window.data1, event.window.data2); | 186 SetSize(event.window.data1, event.window.data2); |
187 break; | 187 break; |
188 | 188 |
189 default: | 189 default: |
190 break; | 190 break; |
191 } | 191 } |
192 } | 192 } |
193 else if (event.type == SDL_MOUSEWHEEL) | 193 else if (event.type == SDL_MOUSEWHEEL) |
194 { | 194 { |
195 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); | 195 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); |
211 { | 211 { |
212 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); | 212 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); |
213 | 213 |
214 switch (event.key.keysym.sym) | 214 switch (event.key.keysym.sym) |
215 { | 215 { |
216 case SDLK_a: context_.GetCentralViewport().KeyPressed('a', modifiers); break; | 216 case SDLK_a: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'a', modifiers); break; |
217 case SDLK_b: context_.GetCentralViewport().KeyPressed('b', modifiers); break; | 217 case SDLK_b: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'b', modifiers); break; |
218 case SDLK_c: context_.GetCentralViewport().KeyPressed('c', modifiers); break; | 218 case SDLK_c: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'c', modifiers); break; |
219 case SDLK_d: context_.GetCentralViewport().KeyPressed('d', modifiers); break; | 219 case SDLK_d: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'd', modifiers); break; |
220 case SDLK_e: context_.GetCentralViewport().KeyPressed('e', modifiers); break; | 220 case SDLK_e: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'e', modifiers); break; |
221 case SDLK_f: window_.ToggleMaximize(); break; | 221 case SDLK_f: window_.ToggleMaximize(); break; |
222 case SDLK_g: context_.GetCentralViewport().KeyPressed('g', modifiers); break; | 222 case SDLK_g: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'g', modifiers); break; |
223 case SDLK_h: context_.GetCentralViewport().KeyPressed('h', modifiers); break; | 223 case SDLK_h: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'h', modifiers); break; |
224 case SDLK_i: context_.GetCentralViewport().KeyPressed('i', modifiers); break; | 224 case SDLK_i: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'i', modifiers); break; |
225 case SDLK_j: context_.GetCentralViewport().KeyPressed('j', modifiers); break; | 225 case SDLK_j: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'j', modifiers); break; |
226 case SDLK_k: context_.GetCentralViewport().KeyPressed('k', modifiers); break; | 226 case SDLK_k: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'k', modifiers); break; |
227 case SDLK_l: context_.GetCentralViewport().KeyPressed('l', modifiers); break; | 227 case SDLK_l: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'l', modifiers); break; |
228 case SDLK_m: context_.GetCentralViewport().KeyPressed('m', modifiers); break; | 228 case SDLK_m: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'm', modifiers); break; |
229 case SDLK_n: context_.GetCentralViewport().KeyPressed('n', modifiers); break; | 229 case SDLK_n: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'n', modifiers); break; |
230 case SDLK_o: context_.GetCentralViewport().KeyPressed('o', modifiers); break; | 230 case SDLK_o: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'o', modifiers); break; |
231 case SDLK_p: context_.GetCentralViewport().KeyPressed('p', modifiers); break; | 231 case SDLK_p: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'p', modifiers); break; |
232 case SDLK_q: stop = true; break; | 232 case SDLK_q: stop = true; break; |
233 case SDLK_r: context_.GetCentralViewport().KeyPressed('r', modifiers); break; | 233 case SDLK_r: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'r', modifiers); break; |
234 case SDLK_s: context_.GetCentralViewport().KeyPressed('s', modifiers); break; | 234 case SDLK_s: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 's', modifiers); break; |
235 case SDLK_t: context_.GetCentralViewport().KeyPressed('t', modifiers); break; | 235 case SDLK_t: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 't', modifiers); break; |
236 case SDLK_u: context_.GetCentralViewport().KeyPressed('u', modifiers); break; | 236 case SDLK_u: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'u', modifiers); break; |
237 case SDLK_v: context_.GetCentralViewport().KeyPressed('v', modifiers); break; | 237 case SDLK_v: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'v', modifiers); break; |
238 case SDLK_w: context_.GetCentralViewport().KeyPressed('w', modifiers); break; | 238 case SDLK_w: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'w', modifiers); break; |
239 case SDLK_x: context_.GetCentralViewport().KeyPressed('x', modifiers); break; | 239 case SDLK_x: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'x', modifiers); break; |
240 case SDLK_y: context_.GetCentralViewport().KeyPressed('y', modifiers); break; | 240 case SDLK_y: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'y', modifiers); break; |
241 case SDLK_z: context_.GetCentralViewport().KeyPressed('z', modifiers); break; | 241 case SDLK_z: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'z', modifiers); break; |
242 case SDLK_KP_0: context_.GetCentralViewport().KeyPressed('0', modifiers); break; | 242 case SDLK_KP_0: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '0', modifiers); break; |
243 case SDLK_KP_1: context_.GetCentralViewport().KeyPressed('1', modifiers); break; | 243 case SDLK_KP_1: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '1', modifiers); break; |
244 case SDLK_KP_2: context_.GetCentralViewport().KeyPressed('2', modifiers); break; | 244 case SDLK_KP_2: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '2', modifiers); break; |
245 case SDLK_KP_3: context_.GetCentralViewport().KeyPressed('3', modifiers); break; | 245 case SDLK_KP_3: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '3', modifiers); break; |
246 case SDLK_KP_4: context_.GetCentralViewport().KeyPressed('4', modifiers); break; | 246 case SDLK_KP_4: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '4', modifiers); break; |
247 case SDLK_KP_5: context_.GetCentralViewport().KeyPressed('5', modifiers); break; | 247 case SDLK_KP_5: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '5', modifiers); break; |
248 case SDLK_KP_6: context_.GetCentralViewport().KeyPressed('6', modifiers); break; | 248 case SDLK_KP_6: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '6', modifiers); break; |
249 case SDLK_KP_7: context_.GetCentralViewport().KeyPressed('7', modifiers); break; | 249 case SDLK_KP_7: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '7', modifiers); break; |
250 case SDLK_KP_8: context_.GetCentralViewport().KeyPressed('8', modifiers); break; | 250 case SDLK_KP_8: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '8', modifiers); break; |
251 case SDLK_KP_9: context_.GetCentralViewport().KeyPressed('9', modifiers); break; | 251 case SDLK_KP_9: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '9', modifiers); break; |
252 | 252 |
253 case SDLK_PLUS: | 253 case SDLK_PLUS: |
254 case SDLK_KP_PLUS: | 254 case SDLK_KP_PLUS: |
255 context_.GetCentralViewport().KeyPressed('+', modifiers); break; | 255 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '+', modifiers); break; |
256 | 256 |
257 case SDLK_MINUS: | 257 case SDLK_MINUS: |
258 case SDLK_KP_MINUS: | 258 case SDLK_KP_MINUS: |
259 context_.GetCentralViewport().KeyPressed('-', modifiers); break; | 259 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '-', modifiers); break; |
260 | 260 |
261 default: | 261 case SDLK_RIGHT: |
262 break; | 262 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Right, 0, modifiers); break; |
263 case SDLK_LEFT: | |
264 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Left, 0, modifiers); break; | |
265 case SDLK_UP: | |
266 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Up, 0, modifiers); break; | |
267 case SDLK_DOWN: | |
268 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Down, 0, modifiers); break; | |
269 default: | |
270 break; | |
263 } | 271 } |
264 } | 272 } |
265 } | 273 } |
266 | 274 |
267 // Small delay to avoid using 100% of CPU | 275 // Small delay to avoid using 100% of CPU |