Blender  V3.3
GHOST_EventPrinter.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2001-2002 NaN Holding BV. All rights reserved. */
3 
9 #include "GHOST_EventPrinter.h"
10 #include "GHOST_Debug.h"
11 #include "GHOST_EventDragnDrop.h"
12 #include "GHOST_EventKey.h"
13 #include <iostream>
14 
15 #include <cstdio>
16 
18 {
19  bool handled = true;
20 
21  GHOST_ASSERT(event, "event==0");
22 
23  if (event->getType() == GHOST_kEventWindowUpdate) {
24  return false;
25  }
26  std::cout << "GHOST_EventPrinter::processEvent, time: " << (int32_t)event->getTime()
27  << ", type: ";
28  switch (event->getType()) {
30  std::cout << "GHOST_kEventUnknown";
31  handled = false;
32  break;
33 
34  case GHOST_kEventButtonUp: {
35  GHOST_TEventButtonData *buttonData =
36  (GHOST_TEventButtonData *)((GHOST_IEvent *)event)->getData();
37  std::cout << "GHOST_kEventCursorButtonUp, button: " << buttonData->button;
38  } break;
40  GHOST_TEventButtonData *buttonData =
41  (GHOST_TEventButtonData *)((GHOST_IEvent *)event)->getData();
42  std::cout << "GHOST_kEventButtonDown, button: " << buttonData->button;
43  } break;
44 
45  case GHOST_kEventWheel: {
46  GHOST_TEventWheelData *wheelData =
47  (GHOST_TEventWheelData *)((GHOST_IEvent *)event)->getData();
48  std::cout << "GHOST_kEventWheel, z: " << wheelData->z;
49  } break;
50 
52  GHOST_TEventCursorData *cursorData =
53  (GHOST_TEventCursorData *)((GHOST_IEvent *)event)->getData();
54  std::cout << "GHOST_kEventCursorMove, (x,y): (" << cursorData->x << "," << cursorData->y
55  << ")";
56  } break;
57 
58  case GHOST_kEventKeyUp: {
59  GHOST_TEventKeyData *keyData = (GHOST_TEventKeyData *)((GHOST_IEvent *)event)->getData();
60  char str[32] = {'\0'};
61  getKeyString(keyData->key, str);
62  std::cout << "GHOST_kEventKeyUp, key: " << str;
63  } break;
64  case GHOST_kEventKeyDown: {
65  GHOST_TEventKeyData *keyData = (GHOST_TEventKeyData *)((GHOST_IEvent *)event)->getData();
66  char str[32] = {'\0'};
67  getKeyString(keyData->key, str);
68  std::cout << "GHOST_kEventKeyDown, key: " << str;
69  } break;
70 
72  GHOST_TEventDragnDropData *dragnDropData =
73  (GHOST_TEventDragnDropData *)((GHOST_IEvent *)event)->getData();
74  std::cout << "GHOST_kEventDraggingEntered, dragged object type : "
75  << dragnDropData->dataType;
76  std::cout << " mouse at x=" << dragnDropData->x << " y=" << dragnDropData->y;
77  } break;
78 
80  GHOST_TEventDragnDropData *dragnDropData =
81  (GHOST_TEventDragnDropData *)((GHOST_IEvent *)event)->getData();
82  std::cout << "GHOST_kEventDraggingUpdated, dragged object type : "
83  << dragnDropData->dataType;
84  std::cout << " mouse at x=" << dragnDropData->x << " y=" << dragnDropData->y;
85  } break;
86 
88  GHOST_TEventDragnDropData *dragnDropData =
89  (GHOST_TEventDragnDropData *)((GHOST_IEvent *)event)->getData();
90  std::cout << "GHOST_kEventDraggingExited, dragged object type : " << dragnDropData->dataType;
91  } break;
92 
94  GHOST_TEventDragnDropData *dragnDropData =
95  (GHOST_TEventDragnDropData *)((GHOST_IEvent *)event)->getData();
96  std::cout << "GHOST_kEventDraggingDropDone,";
97  std::cout << " mouse at x=" << dragnDropData->x << " y=" << dragnDropData->y;
98  switch (dragnDropData->dataType) {
100  std::cout << " type : GHOST_kDragnDropTypeString,";
101  std::cout << "\n String received = " << (char *)dragnDropData->data;
102  break;
104  GHOST_TStringArray *strArray = (GHOST_TStringArray *)dragnDropData->data;
105  int i;
106  std::cout << " type : GHOST_kDragnDropTypeFilenames,";
107  std::cout << "\n Received " << strArray->count << " filename"
108  << (strArray->count > 1 ? "s:" : ":");
109  for (i = 0; i < strArray->count; i++) {
110  std::cout << "\n File[" << i << "] : " << strArray->strings[i];
111  }
112  } break;
113  default:
114  break;
115  }
116  } break;
117 
119  GHOST_TEventDataPtr eventData = ((GHOST_IEvent *)event)->getData();
120 
121  if (eventData) {
122  std::cout << "GHOST_kEventOpenMainFile for path : " << (char *)eventData;
123  }
124  else {
125  std::cout << "GHOST_kEventOpenMainFile with no path specified!!";
126  }
127  } break;
128 
130  std::cout << "GHOST_kEventQuitRequest";
131  break;
133  std::cout << "GHOST_kEventWindowClose";
134  break;
136  std::cout << "GHOST_kEventWindowActivate";
137  break;
139  std::cout << "GHOST_kEventWindowDeactivate";
140  break;
142  std::cout << "GHOST_kEventWindowUpdate";
143  break;
145  std::cout << "GHOST_kEventWindowSize";
146  break;
147 
148  default:
149  std::cout << "not found";
150  handled = false;
151  break;
152  }
153 
154  std::cout << std::endl;
155 
156  std::cout.flush();
157 
158  return handled;
159 }
160 
162 {
163  if ((key >= GHOST_kKeyComma) && (key <= GHOST_kKeyRightBracket)) {
164  sprintf(str, "%c", (char)key);
165  }
166  else if ((key >= GHOST_kKeyNumpad0) && (key <= GHOST_kKeyNumpad9)) {
167  sprintf(str, "Numpad %d", (key - GHOST_kKeyNumpad0));
168  }
169  else if ((key >= GHOST_kKeyF1) && (key <= GHOST_kKeyF24)) {
170  sprintf(str, "F%d", key - GHOST_kKeyF1 + 1);
171  }
172  else {
173  const char *tstr = nullptr;
174  switch (key) {
175  case GHOST_kKeyBackSpace:
176  tstr = "BackSpace";
177  break;
178  case GHOST_kKeyTab:
179  tstr = "Tab";
180  break;
181  case GHOST_kKeyLinefeed:
182  tstr = "Linefeed";
183  break;
184  case GHOST_kKeyClear:
185  tstr = "Clear";
186  break;
187  case GHOST_kKeyEnter:
188  tstr = "Enter";
189  break;
190  case GHOST_kKeyEsc:
191  tstr = "Esc";
192  break;
193  case GHOST_kKeySpace:
194  tstr = "Space";
195  break;
196  case GHOST_kKeyQuote:
197  tstr = "Quote";
198  break;
199  case GHOST_kKeyBackslash:
200  tstr = "\\";
201  break;
203  tstr = "`";
204  break;
205  case GHOST_kKeyLeftShift:
206  tstr = "LeftShift";
207  break;
209  tstr = "RightShift";
210  break;
212  tstr = "LeftControl";
213  break;
215  tstr = "RightControl";
216  break;
217  case GHOST_kKeyLeftAlt:
218  tstr = "LeftAlt";
219  break;
220  case GHOST_kKeyRightAlt:
221  tstr = "RightAlt";
222  break;
223  case GHOST_kKeyOS:
224  tstr = "OS";
225  break;
226  case GHOST_kKeyApp:
227  tstr = "App";
228  break;
229  case GHOST_kKeyGrLess:
230  // PC german!
231  tstr = "GrLess";
232  break;
233  case GHOST_kKeyCapsLock:
234  tstr = "CapsLock";
235  break;
236  case GHOST_kKeyNumLock:
237  tstr = "NumLock";
238  break;
240  tstr = "ScrollLock";
241  break;
242  case GHOST_kKeyLeftArrow:
243  tstr = "LeftArrow";
244  break;
246  tstr = "RightArrow";
247  break;
248  case GHOST_kKeyUpArrow:
249  tstr = "UpArrow";
250  break;
251  case GHOST_kKeyDownArrow:
252  tstr = "DownArrow";
253  break;
255  tstr = "PrintScreen";
256  break;
257  case GHOST_kKeyPause:
258  tstr = "Pause";
259  break;
260  case GHOST_kKeyInsert:
261  tstr = "Insert";
262  break;
263  case GHOST_kKeyDelete:
264  tstr = "Delete";
265  break;
266  case GHOST_kKeyHome:
267  tstr = "Home";
268  break;
269  case GHOST_kKeyEnd:
270  tstr = "End";
271  break;
272  case GHOST_kKeyUpPage:
273  tstr = "UpPage";
274  break;
275  case GHOST_kKeyDownPage:
276  tstr = "DownPage";
277  break;
279  tstr = "NumpadPeriod";
280  break;
282  tstr = "NumpadEnter";
283  break;
285  tstr = "NumpadPlus";
286  break;
288  tstr = "NumpadMinus";
289  break;
291  tstr = "NumpadAsterisk";
292  break;
294  tstr = "NumpadSlash";
295  break;
296  case GHOST_kKeyMediaPlay:
297  tstr = "MediaPlayPause";
298  break;
299  case GHOST_kKeyMediaStop:
300  tstr = "MediaStop";
301  break;
303  tstr = "MediaFirst";
304  break;
305  case GHOST_kKeyMediaLast:
306  tstr = "MediaLast";
307  break;
308  default:
309  tstr = "unknown";
310  break;
311  }
312 
313  sprintf(str, "%s", tstr);
314  }
315 }
#define GHOST_ASSERT(x, info)
Definition: GHOST_Debug.h:54
@ GHOST_kEventWindowClose
Definition: GHOST_Types.h:189
@ GHOST_kEventWheel
Definition: GHOST_Types.h:175
@ GHOST_kEventWindowSize
Definition: GHOST_Types.h:193
@ GHOST_kEventDraggingDropDone
Definition: GHOST_Types.h:200
@ GHOST_kEventDraggingExited
Definition: GHOST_Types.h:199
@ GHOST_kEventCursorMove
Definition: GHOST_Types.h:172
@ GHOST_kEventDraggingUpdated
Definition: GHOST_Types.h:198
@ GHOST_kEventOpenMainFile
Definition: GHOST_Types.h:202
@ GHOST_kEventDraggingEntered
Definition: GHOST_Types.h:197
@ GHOST_kEventButtonUp
Definition: GHOST_Types.h:174
@ GHOST_kEventWindowActivate
Definition: GHOST_Types.h:190
@ GHOST_kEventWindowUpdate
Definition: GHOST_Types.h:192
@ GHOST_kEventWindowDeactivate
Definition: GHOST_Types.h:191
@ GHOST_kEventButtonDown
Definition: GHOST_Types.h:173
@ GHOST_kEventKeyDown
Definition: GHOST_Types.h:183
@ GHOST_kEventUnknown
Definition: GHOST_Types.h:170
@ GHOST_kEventKeyUp
Definition: GHOST_Types.h:184
@ GHOST_kEventQuitRequest
Definition: GHOST_Types.h:187
void * GHOST_TEventDataPtr
Definition: GHOST_Types.h:427
GHOST_TKey
Definition: GHOST_Types.h:259
@ GHOST_kKeyInsert
Definition: GHOST_Types.h:346
@ GHOST_kKeyMediaPlay
Definition: GHOST_Types.h:398
@ GHOST_kKeyQuote
Definition: GHOST_Types.h:269
@ GHOST_kKeyAccentGrave
Definition: GHOST_Types.h:322
@ GHOST_kKeyLeftAlt
Definition: GHOST_Types.h:328
@ GHOST_kKeyRightShift
Definition: GHOST_Types.h:325
@ GHOST_kKeyNumLock
Definition: GHOST_Types.h:335
@ GHOST_kKeyEnter
Definition: GHOST_Types.h:265
@ GHOST_kKeyNumpadSlash
Definition: GHOST_Types.h:369
@ GHOST_kKeyRightArrow
Definition: GHOST_Types.h:339
@ GHOST_kKeyF24
Definition: GHOST_Types.h:395
@ GHOST_kKeyPause
Definition: GHOST_Types.h:344
@ GHOST_kKeyCapsLock
Definition: GHOST_Types.h:334
@ GHOST_kKeyApp
Definition: GHOST_Types.h:332
@ GHOST_kKeyMediaStop
Definition: GHOST_Types.h:399
@ GHOST_kKeyBackSpace
Definition: GHOST_Types.h:261
@ GHOST_kKeyDownPage
Definition: GHOST_Types.h:351
@ GHOST_kKeyGrLess
Definition: GHOST_Types.h:331
@ GHOST_kKeyDownArrow
Definition: GHOST_Types.h:341
@ GHOST_kKeyClear
Definition: GHOST_Types.h:264
@ GHOST_kKeyNumpadPeriod
Definition: GHOST_Types.h:364
@ GHOST_kKeyF1
Definition: GHOST_Types.h:372
@ GHOST_kKeyNumpadAsterisk
Definition: GHOST_Types.h:368
@ GHOST_kKeyPrintScreen
Definition: GHOST_Types.h:343
@ GHOST_kKeyLeftControl
Definition: GHOST_Types.h:326
@ GHOST_kKeyTab
Definition: GHOST_Types.h:262
@ GHOST_kKeyComma
Definition: GHOST_Types.h:270
@ GHOST_kKeyRightBracket
Definition: GHOST_Types.h:320
@ GHOST_kKeyBackslash
Definition: GHOST_Types.h:321
@ GHOST_kKeyOS
Definition: GHOST_Types.h:330
@ GHOST_kKeyLinefeed
Definition: GHOST_Types.h:263
@ GHOST_kKeyRightAlt
Definition: GHOST_Types.h:329
@ GHOST_kKeyNumpadPlus
Definition: GHOST_Types.h:366
@ GHOST_kKeyUpPage
Definition: GHOST_Types.h:350
@ GHOST_kKeyLeftArrow
Definition: GHOST_Types.h:338
@ GHOST_kKeyHome
Definition: GHOST_Types.h:348
@ GHOST_kKeyNumpad9
Definition: GHOST_Types.h:363
@ GHOST_kKeyEnd
Definition: GHOST_Types.h:349
@ GHOST_kKeyUpArrow
Definition: GHOST_Types.h:340
@ GHOST_kKeyDelete
Definition: GHOST_Types.h:347
@ GHOST_kKeyNumpad0
Definition: GHOST_Types.h:354
@ GHOST_kKeyMediaFirst
Definition: GHOST_Types.h:400
@ GHOST_kKeyRightControl
Definition: GHOST_Types.h:327
@ GHOST_kKeyEsc
Definition: GHOST_Types.h:267
@ GHOST_kKeyScrollLock
Definition: GHOST_Types.h:336
@ GHOST_kKeyNumpadEnter
Definition: GHOST_Types.h:365
@ GHOST_kKeyNumpadMinus
Definition: GHOST_Types.h:367
@ GHOST_kKeyLeftShift
Definition: GHOST_Types.h:324
@ GHOST_kKeyMediaLast
Definition: GHOST_Types.h:401
@ GHOST_kKeySpace
Definition: GHOST_Types.h:268
@ GHOST_kDragnDropTypeFilenames
Definition: GHOST_Types.h:476
@ GHOST_kDragnDropTypeString
Definition: GHOST_Types.h:477
bool processEvent(GHOST_IEvent *event)
void getKeyString(GHOST_TKey key, char str[32]) const
virtual GHOST_TEventType getType()=0
virtual uint64_t getTime()=0
#define str(s)
signed int int32_t
Definition: stdint.h:77
GHOST_TButton button
Definition: GHOST_Types.h:440
GHOST_TEventDataPtr data
Definition: GHOST_Types.h:489
GHOST_TDragnDropTypes dataType
Definition: GHOST_Types.h:487