Visualization Library 2.1.0

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
Qt6Widget.cpp
Go to the documentation of this file.
1 /**************************************************************************************/
2 /* */
3 /* Visualization Library */
4 /* http://visualizationlibrary.org */
5 /* */
6 /* Copyright (c) 2005-2020, Michele Bosi */
7 /* All rights reserved. */
8 /* */
9 /* Redistribution and use in source and binary forms, with or without modification, */
10 /* are permitted provided that the following conditions are met: */
11 /* */
12 /* - Redistributions of source code must retain the above copyright notice, this */
13 /* list of conditions and the following disclaimer. */
14 /* */
15 /* - Redistributions in binary form must reproduce the above copyright notice, this */
16 /* list of conditions and the following disclaimer in the documentation and/or */
17 /* other materials provided with the distribution. */
18 /* */
19 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND */
20 /* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */
21 /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
22 /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR */
23 /* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
24 /* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */
25 /* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
26 /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
27 /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
28 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
29 /* */
30 /**************************************************************************************/
31 
32 #include <vlQt6/Qt6Widget.hpp>
33 //#include <vlCore/Log.hpp>
34 
35 using namespace vl;
36 using namespace vlQt6;
37 
38 void Qt6Widget::translateKeyEvent(QKeyEvent *ev, unsigned short &unicode_out, EKey &key_out)
39 {
40  // translate non unicode characters
41  key_out = Key_None;
42  unicode_out = 0;
43 
44  switch (ev->key())
45  {
46  case Qt::Key_Clear:
47  key_out = Key_Clear;
48  break;
49  case Qt::Key_Control:
50  key_out = Key_Ctrl;
51  break;
52  // case Qt::Key_LCONTROL: key_out = Key_LeftCtrl; break;
53  // case Qt::Key_RCONTROL: key_out = Key_RightCtrl; break;
54  case Qt::Key_Alt:
55  key_out = Key_Alt;
56  break;
57  // case Qt::Key_LMENU: key_out = Key_LeftAlt; break;
58  // case Qt::Key_RMENU: key_out = Key_RightAlt; break;
59  case Qt::Key_Shift:
60  key_out = Key_Shift;
61  break;
62  // case Qt::Key_LSHIFT: key_out = Key_LeftShift; break;
63  // case Qt::Key_RSHIFT: key_out = Key_RightShift; break;
64  case Qt::Key_Insert:
65  key_out = Key_Insert;
66  break;
67  case Qt::Key_Delete:
68  key_out = Key_Delete;
69  break;
70  case Qt::Key_Home:
71  key_out = Key_Home;
72  break;
73  case Qt::Key_End:
74  key_out = Key_End;
75  break;
76  case Qt::Key_Print:
77  key_out = Key_Print;
78  break;
79  case Qt::Key_Pause:
80  key_out = Key_Pause;
81  break;
82  case Qt::Key_PageUp:
83  key_out = Key_PageUp;
84  break;
85  case Qt::Key_PageDown:
86  key_out = Key_PageDown;
87  break;
88  case Qt::Key_Left:
89  key_out = Key_Left;
90  break;
91  case Qt::Key_Right:
92  key_out = Key_Right;
93  break;
94  case Qt::Key_Up:
95  key_out = Key_Up;
96  break;
97  case Qt::Key_Down:
98  key_out = Key_Down;
99  break;
100  case Qt::Key_F1:
101  key_out = Key_F1;
102  break;
103  case Qt::Key_F2:
104  key_out = Key_F2;
105  break;
106  case Qt::Key_F3:
107  key_out = Key_F3;
108  break;
109  case Qt::Key_F4:
110  key_out = Key_F4;
111  break;
112  case Qt::Key_F5:
113  key_out = Key_F5;
114  break;
115  case Qt::Key_F6:
116  key_out = Key_F6;
117  break;
118  case Qt::Key_F7:
119  key_out = Key_F7;
120  break;
121  case Qt::Key_F8:
122  key_out = Key_F8;
123  break;
124  case Qt::Key_F9:
125  key_out = Key_F9;
126  break;
127  case Qt::Key_F10:
128  key_out = Key_F10;
129  break;
130  case Qt::Key_F11:
131  key_out = Key_F11;
132  break;
133  case Qt::Key_F12:
134  key_out = Key_F12;
135  break;
136 
137  case Qt::Key_0:
138  key_out = Key_0;
139  break;
140  case Qt::Key_1:
141  key_out = Key_1;
142  break;
143  case Qt::Key_2:
144  key_out = Key_2;
145  break;
146  case Qt::Key_3:
147  key_out = Key_3;
148  break;
149  case Qt::Key_4:
150  key_out = Key_4;
151  break;
152  case Qt::Key_5:
153  key_out = Key_5;
154  break;
155  case Qt::Key_6:
156  key_out = Key_6;
157  break;
158  case Qt::Key_7:
159  key_out = Key_7;
160  break;
161  case Qt::Key_8:
162  key_out = Key_8;
163  break;
164  case Qt::Key_9:
165  key_out = Key_9;
166  break;
167 
168  case Qt::Key_A:
169  key_out = Key_A;
170  break;
171  case Qt::Key_B:
172  key_out = Key_B;
173  break;
174  case Qt::Key_C:
175  key_out = Key_C;
176  break;
177  case Qt::Key_D:
178  key_out = Key_D;
179  break;
180  case Qt::Key_E:
181  key_out = Key_E;
182  break;
183  case Qt::Key_F:
184  key_out = Key_F;
185  break;
186  case Qt::Key_G:
187  key_out = Key_G;
188  break;
189  case Qt::Key_H:
190  key_out = Key_H;
191  break;
192  case Qt::Key_I:
193  key_out = Key_I;
194  break;
195  case Qt::Key_J:
196  key_out = Key_J;
197  break;
198  case Qt::Key_K:
199  key_out = Key_K;
200  break;
201  case Qt::Key_L:
202  key_out = Key_L;
203  break;
204  case Qt::Key_M:
205  key_out = Key_M;
206  break;
207  case Qt::Key_N:
208  key_out = Key_N;
209  break;
210  case Qt::Key_O:
211  key_out = Key_O;
212  break;
213  case Qt::Key_P:
214  key_out = Key_P;
215  break;
216  case Qt::Key_Q:
217  key_out = Key_Q;
218  break;
219  case Qt::Key_R:
220  key_out = Key_R;
221  break;
222  case Qt::Key_S:
223  key_out = Key_S;
224  break;
225  case Qt::Key_T:
226  key_out = Key_T;
227  break;
228  case Qt::Key_U:
229  key_out = Key_U;
230  break;
231  case Qt::Key_V:
232  key_out = Key_V;
233  break;
234  case Qt::Key_W:
235  key_out = Key_W;
236  break;
237  case Qt::Key_X:
238  key_out = Key_X;
239  break;
240  case Qt::Key_Y:
241  key_out = Key_Y;
242  break;
243  case Qt::Key_Z:
244  key_out = Key_Z;
245  break;
246  }
247 
248  // fill unicode
249  QString ustring = ev->text();
250  if (ustring.length() == 1)
251  {
252  unicode_out = ustring[0].unicode();
253 
254  // fill key
255  switch (unicode_out)
256  {
257  case L'0':
258  key_out = Key_0;
259  break;
260  case L'1':
261  key_out = Key_1;
262  break;
263  case L'2':
264  key_out = Key_2;
265  break;
266  case L'3':
267  key_out = Key_3;
268  break;
269  case L'4':
270  key_out = Key_4;
271  break;
272  case L'5':
273  key_out = Key_5;
274  break;
275  case L'6':
276  key_out = Key_6;
277  break;
278  case L'7':
279  key_out = Key_7;
280  break;
281  case L'8':
282  key_out = Key_8;
283  break;
284  case L'9':
285  key_out = Key_9;
286  break;
287 
288  case L'A':
289  key_out = Key_A;
290  break;
291  case L'B':
292  key_out = Key_B;
293  break;
294  case L'C':
295  key_out = Key_C;
296  break;
297  case L'D':
298  key_out = Key_D;
299  break;
300  case L'E':
301  key_out = Key_E;
302  break;
303  case L'F':
304  key_out = Key_F;
305  break;
306  case L'G':
307  key_out = Key_G;
308  break;
309  case L'H':
310  key_out = Key_H;
311  break;
312  case L'I':
313  key_out = Key_I;
314  break;
315  case L'J':
316  key_out = Key_J;
317  break;
318  case L'K':
319  key_out = Key_K;
320  break;
321  case L'L':
322  key_out = Key_L;
323  break;
324  case L'M':
325  key_out = Key_M;
326  break;
327  case L'N':
328  key_out = Key_N;
329  break;
330  case L'O':
331  key_out = Key_O;
332  break;
333  case L'P':
334  key_out = Key_P;
335  break;
336  case L'Q':
337  key_out = Key_Q;
338  break;
339  case L'R':
340  key_out = Key_R;
341  break;
342  case L'S':
343  key_out = Key_S;
344  break;
345  case L'T':
346  key_out = Key_T;
347  break;
348  case L'U':
349  key_out = Key_U;
350  break;
351  case L'V':
352  key_out = Key_V;
353  break;
354  case L'W':
355  key_out = Key_W;
356  break;
357  case L'X':
358  key_out = Key_X;
359  break;
360  case L'Y':
361  key_out = Key_Y;
362  break;
363  case L'Z':
364  key_out = Key_Z;
365  break;
366 
367  case L'a':
368  key_out = Key_A;
369  break;
370  case L'b':
371  key_out = Key_B;
372  break;
373  case L'c':
374  key_out = Key_C;
375  break;
376  case L'd':
377  key_out = Key_D;
378  break;
379  case L'e':
380  key_out = Key_E;
381  break;
382  case L'f':
383  key_out = Key_F;
384  break;
385  case L'g':
386  key_out = Key_G;
387  break;
388  case L'h':
389  key_out = Key_H;
390  break;
391  case L'i':
392  key_out = Key_I;
393  break;
394  case L'j':
395  key_out = Key_J;
396  break;
397  case L'k':
398  key_out = Key_K;
399  break;
400  case L'l':
401  key_out = Key_L;
402  break;
403  case L'm':
404  key_out = Key_M;
405  break;
406  case L'n':
407  key_out = Key_N;
408  break;
409  case L'o':
410  key_out = Key_O;
411  break;
412  case L'p':
413  key_out = Key_P;
414  break;
415  case L'q':
416  key_out = Key_Q;
417  break;
418  case L'r':
419  key_out = Key_R;
420  break;
421  case L's':
422  key_out = Key_S;
423  break;
424  case L't':
425  key_out = Key_T;
426  break;
427  case L'u':
428  key_out = Key_U;
429  break;
430  case L'v':
431  key_out = Key_V;
432  break;
433  case L'w':
434  key_out = Key_W;
435  break;
436  case L'x':
437  key_out = Key_X;
438  break;
439  case L'y':
440  key_out = Key_Y;
441  break;
442  case L'z':
443  key_out = Key_Z;
444  break;
445 
446  case 13:
447  key_out = Key_Return;
448  break;
449  case 8:
450  key_out = Key_BackSpace;
451  break;
452  case 9:
453  key_out = Key_Tab;
454  break;
455  case L' ':
456  key_out = Key_Space;
457  break;
458 
459  case 27:
460  key_out = Key_Escape;
461  break;
462  case L'!':
463  key_out = Key_Exclam;
464  break;
465  case L'"':
466  key_out = Key_QuoteDbl;
467  break;
468  case L'#':
469  key_out = Key_Hash;
470  break;
471  case L'$':
472  key_out = Key_Dollar;
473  break;
474  case L'&':
475  key_out = Key_Ampersand;
476  break;
477  case L'\'':
478  key_out = Key_Quote;
479  break;
480  case L'(':
481  key_out = Key_LeftParen;
482  break;
483  case L')':
484  key_out = Key_RightParen;
485  break;
486  case L'*':
487  key_out = Key_Asterisk;
488  break;
489  case L'+':
490  key_out = Key_Plus;
491  break;
492  case L',':
493  key_out = Key_Comma;
494  break;
495  case L'-':
496  key_out = Key_Minus;
497  break;
498  case L'.':
499  key_out = Key_Period;
500  break;
501  case L'\\':
502  key_out = Key_BackSlash;
503  break;
504  case L':':
505  key_out = Key_Colon;
506  break;
507  case L';':
508  key_out = Key_Semicolon;
509  break;
510  case L'<':
511  key_out = Key_Less;
512  break;
513  case L'=':
514  key_out = Key_Equal;
515  break;
516  case L'>':
517  key_out = Key_Greater;
518  break;
519  case L'?':
520  key_out = Key_Question;
521  break;
522  case L'@':
523  key_out = Key_At;
524  break;
525  case L'[':
526  key_out = Key_LeftBracket;
527  break;
528  case L'/':
529  key_out = Key_Slash;
530  break;
531  case L']':
532  key_out = Key_RightBracket;
533  break;
534  case L'|':
535  key_out = Key_Caret;
536  break;
537  case L'_':
538  key_out = Key_Underscore;
539  break;
540  case L'`':
541  key_out = Key_QuoteLeft;
542  break;
543  }
544  }
545 }
546 //-----------------------------------------------------------------------------
Visualization Library main namespace.
VLEGL_EXPORT void translateKeyEvent(WPARAM wParam, LPARAM lParam, unsigned short &unicode_out, vl::EKey &key_out)
Definition: EGLWindow.cpp:584