Blender  V2.93
GHOST_WindowWin32.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19 
25 #pragma once
26 
27 #ifndef WIN32
28 # error WIN32 only!
29 #endif // WIN32
30 
31 #include "GHOST_TaskbarWin32.h"
32 #include "GHOST_Window.h"
33 #ifdef WITH_INPUT_IME
34 # include "GHOST_ImeWin32.h"
35 #endif
36 
37 #include <vector>
38 
39 #include <wintab.h>
40 // PACKETDATA and PACKETMODE modify structs in pktdef.h, so make sure they come first
41 #define PACKETDATA (PK_BUTTONS | PK_NORMAL_PRESSURE | PK_ORIENTATION | PK_CURSOR)
42 #define PACKETMODE PK_BUTTONS
43 #include <pktdef.h>
44 
45 class GHOST_SystemWin32;
47 
48 // typedefs for WinTab functions to allow dynamic loading
49 typedef UINT(API *GHOST_WIN32_WTInfo)(UINT, UINT, LPVOID);
50 typedef HCTX(API *GHOST_WIN32_WTOpen)(HWND, LPLOGCONTEXTA, BOOL);
51 typedef BOOL(API *GHOST_WIN32_WTClose)(HCTX);
52 typedef BOOL(API *GHOST_WIN32_WTPacket)(HCTX, UINT, LPVOID);
53 typedef BOOL(API *GHOST_WIN32_WTEnable)(HCTX, BOOL);
54 typedef BOOL(API *GHOST_WIN32_WTOverlap)(HCTX, BOOL);
55 
56 // typedef to user32 functions to disable gestures on windows
57 typedef BOOL(API *GHOST_WIN32_RegisterTouchWindow)(HWND hwnd, ULONG ulFlags);
58 
59 // typedefs for user32 functions to allow dynamic loading of Windows 10 DPI scaling functions
60 typedef UINT(API *GHOST_WIN32_GetDpiForWindow)(HWND);
61 #ifndef USER_DEFAULT_SCREEN_DPI
62 # define USER_DEFAULT_SCREEN_DPI 96
63 #endif // USER_DEFAULT_SCREEN_DPI
64 
65 // typedefs for user32 functions to allow pointer functions
67  PT_POINTER = 1, // Generic pointer
68  PT_TOUCH = 2, // Touch
69  PT_PEN = 3, // Pen
70  PT_MOUSE = 4, // Mouse
71 #if (WINVER >= 0x0603)
72  PT_TOUCHPAD = 5, // Touchpad
73 #endif /* WINVER >= 0x0603 */
74 };
75 
89 
90 typedef DWORD POINTER_INPUT_TYPE;
91 typedef UINT32 POINTER_FLAGS;
92 
93 #define POINTER_FLAG_NONE 0x00000000
94 #define POINTER_FLAG_NEW 0x00000001
95 #define POINTER_FLAG_INRANGE 0x00000002
96 #define POINTER_FLAG_INCONTACT 0x00000004
97 #define POINTER_FLAG_FIRSTBUTTON 0x00000010
98 #define POINTER_FLAG_SECONDBUTTON 0x00000020
99 #define POINTER_FLAG_THIRDBUTTON 0x00000040
100 #define POINTER_FLAG_FOURTHBUTTON 0x00000080
101 #define POINTER_FLAG_FIFTHBUTTON 0x00000100
102 #define POINTER_FLAG_PRIMARY 0x00002000
103 #define POINTER_FLAG_CONFIDENCE 0x000004000
104 #define POINTER_FLAG_CANCELED 0x000008000
105 #define POINTER_FLAG_DOWN 0x00010000
106 #define POINTER_FLAG_UPDATE 0x00020000
107 #define POINTER_FLAG_UP 0x00040000
108 #define POINTER_FLAG_WHEEL 0x00080000
109 #define POINTER_FLAG_HWHEEL 0x00100000
110 #define POINTER_FLAG_CAPTURECHANGED 0x00200000
111 #define POINTER_FLAG_HASTRANSFORM 0x00400000
112 
113 typedef struct tagPOINTER_INFO {
115  UINT32 pointerId;
116  UINT32 frameId;
118  HANDLE sourceDevice;
124  DWORD dwTime;
125  UINT32 historyCount;
126  INT32 InputData;
127  DWORD dwKeyStates;
131 
132 typedef UINT32 PEN_FLAGS;
133 #define PEN_FLAG_NONE 0x00000000 // Default
134 #define PEN_FLAG_BARREL 0x00000001 // The barrel button is pressed
135 #define PEN_FLAG_INVERTED 0x00000002 // The pen is inverted
136 #define PEN_FLAG_ERASER 0x00000004 // The eraser button is pressed
137 
138 typedef UINT32 PEN_MASK;
139 #define PEN_MASK_NONE 0x00000000 // Default - none of the optional fields are valid
140 #define PEN_MASK_PRESSURE 0x00000001 // The pressure field is valid
141 #define PEN_MASK_ROTATION 0x00000002 // The rotation field is valid
142 #define PEN_MASK_TILT_X 0x00000004 // The tiltX field is valid
143 #define PEN_MASK_TILT_Y 0x00000008 // The tiltY field is valid
144 
145 typedef struct tagPOINTER_PEN_INFO {
149  UINT32 pressure;
150  UINT32 rotation;
151  INT32 tiltX;
152  INT32 tiltY;
154 
155 /*
156  * Flags that appear in pointer input message parameters
157  */
158 #define POINTER_MESSAGE_FLAG_NEW 0x00000001 // New pointer
159 #define POINTER_MESSAGE_FLAG_INRANGE 0x00000002 // Pointer has not departed
160 #define POINTER_MESSAGE_FLAG_INCONTACT 0x00000004 // Pointer is in contact
161 #define POINTER_MESSAGE_FLAG_FIRSTBUTTON 0x00000010 // Primary action
162 #define POINTER_MESSAGE_FLAG_SECONDBUTTON 0x00000020 // Secondary action
163 #define POINTER_MESSAGE_FLAG_THIRDBUTTON 0x00000040 // Third button
164 #define POINTER_MESSAGE_FLAG_FOURTHBUTTON 0x00000080 // Fourth button
165 #define POINTER_MESSAGE_FLAG_FIFTHBUTTON 0x00000100 // Fifth button
166 #define POINTER_MESSAGE_FLAG_PRIMARY 0x00002000 // Pointer is primary
167 #define POINTER_MESSAGE_FLAG_CONFIDENCE \
168  0x00004000 // Pointer is considered unlikely to be accidental
169 #define POINTER_MESSAGE_FLAG_CANCELED 0x00008000 // Pointer is departing in an abnormal manner
170 
171 typedef UINT32 TOUCH_FLAGS;
172 #define TOUCH_FLAG_NONE 0x00000000 // Default
173 
174 typedef UINT32 TOUCH_MASK;
175 #define TOUCH_MASK_NONE 0x00000000 // Default - none of the optional fields are valid
176 #define TOUCH_MASK_CONTACTAREA 0x00000001 // The rcContact field is valid
177 #define TOUCH_MASK_ORIENTATION 0x00000002 // The orientation field is valid
178 #define TOUCH_MASK_PRESSURE 0x00000004 // The pressure field is valid
179 
180 typedef struct tagPOINTER_TOUCH_INFO {
184  RECT rcContact;
186  UINT32 orientation;
187  UINT32 pressure;
189 
190 /*
191  * Macros to retrieve information from pointer input message parameters
192  */
193 #define GET_POINTERID_WPARAM(wParam) (LOWORD(wParam))
194 #define IS_POINTER_FLAG_SET_WPARAM(wParam, flag) (((DWORD)HIWORD(wParam) & (flag)) == (flag))
195 #define IS_POINTER_NEW_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_NEW)
196 #define IS_POINTER_INRANGE_WPARAM(wParam) \
197  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_INRANGE)
198 #define IS_POINTER_INCONTACT_WPARAM(wParam) \
199  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_INCONTACT)
200 #define IS_POINTER_FIRSTBUTTON_WPARAM(wParam) \
201  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FIRSTBUTTON)
202 #define IS_POINTER_SECONDBUTTON_WPARAM(wParam) \
203  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_SECONDBUTTON)
204 #define IS_POINTER_THIRDBUTTON_WPARAM(wParam) \
205  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_THIRDBUTTON)
206 #define IS_POINTER_FOURTHBUTTON_WPARAM(wParam) \
207  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FOURTHBUTTON)
208 #define IS_POINTER_FIFTHBUTTON_WPARAM(wParam) \
209  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FIFTHBUTTON)
210 #define IS_POINTER_PRIMARY_WPARAM(wParam) \
211  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_PRIMARY)
212 #define HAS_POINTER_CONFIDENCE_WPARAM(wParam) \
213  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_CONFIDENCE)
214 #define IS_POINTER_CANCELED_WPARAM(wParam) \
215  IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_CANCELED)
216 
217 typedef BOOL(WINAPI *GHOST_WIN32_GetPointerInfoHistory)(UINT32 pointerId,
218  UINT32 *entriesCount,
219  POINTER_INFO *pointerInfo);
220 typedef BOOL(WINAPI *GHOST_WIN32_GetPointerPenInfoHistory)(UINT32 pointerId,
221  UINT32 *entriesCount,
222  POINTER_PEN_INFO *penInfo);
223 typedef BOOL(WINAPI *GHOST_WIN32_GetPointerTouchInfoHistory)(UINT32 pointerId,
224  UINT32 *entriesCount,
225  POINTER_TOUCH_INFO *touchInfo);
226 
233 
235 };
236 
237 typedef enum {
243 
248  public:
264  const char *title,
271  bool wantStereoVisual = false,
272  bool alphaBackground = false,
273  GHOST_WindowWin32 *parentWindow = 0,
274  bool is_debug = false,
275  bool dialog = false);
276 
282 
287  bool getValid() const;
288 
293  HWND getHWND() const;
294 
299  void setTitle(const char *title);
300 
305  std::string getTitle() const;
306 
313  void getWindowBounds(GHOST_Rect &bounds) const;
314 
320  void getClientBounds(GHOST_Rect &bounds) const;
321 
327 
333 
340 
346 
354  void screenToClient(GHOST_TInt32 inX,
355  GHOST_TInt32 inY,
356  GHOST_TInt32 &outX,
357  GHOST_TInt32 &outY) const;
358 
366  void clientToScreen(GHOST_TInt32 inX,
367  GHOST_TInt32 inY,
368  GHOST_TInt32 &outX,
369  GHOST_TInt32 &outY) const;
370 
377 
384 
389 
394  GHOST_TSuccess setProgressBar(float progress);
395 
400 
410 
415  void lostMouseCapture();
416 
417  bool isDialog() const;
418 
424  HCURSOR getStandardCursor(GHOST_TStandardCursor shape) const;
425  void loadCursor(bool visible, GHOST_TStandardCursor cursorShape) const;
426 
428  {
429  return m_tabletData;
430  }
431 
436  bool useTabletAPI(GHOST_TTabletAPI api) const;
437 
445  GHOST_TSuccess getPointerInfo(std::vector<GHOST_PointerInfoWin32> &outPointerInfo,
446  WPARAM wParam,
447  LPARAM lParam);
448 
451  void processWin32TabletEvent(WPARAM wParam, LPARAM lParam);
453 
455  {
456  return GHOST_kFailure;
457  }
458 
460  {
461  return GHOST_kFailure;
462  }
463 
464  GHOST_TUns16 getDPIHint() override;
465 
468 
471 
472 #ifdef WITH_INPUT_IME
473  GHOST_ImeWin32 *getImeInput()
474  {
475  return &m_imeInput;
476  }
477 
478  void beginIME(GHOST_TInt32 x, GHOST_TInt32 y, GHOST_TInt32 w, GHOST_TInt32 h, int completed);
479 
480  void endIME();
481 #endif /* WITH_INPUT_IME */
482 
483  private:
488  GHOST_Context *newDrawingContext(GHOST_TDrawingContextType type);
489 
494  GHOST_TSuccess setWindowCursorVisibility(bool visible);
495 
501  GHOST_TSuccess setWindowCursorGrab(GHOST_TGrabCursorMode mode);
502 
507  GHOST_TSuccess setWindowCursorShape(GHOST_TStandardCursor shape);
508  GHOST_TSuccess hasCursorShape(GHOST_TStandardCursor shape);
509 
514  GHOST_TSuccess setWindowCustomCursorShape(GHOST_TUns8 *bitmap,
515  GHOST_TUns8 *mask,
516  int sizex,
517  int sizey,
518  int hotX,
519  int hotY,
520  bool canInvertColor);
521 
523  GHOST_SystemWin32 *m_system;
525  GHOST_DropTargetWin32 *m_dropTarget;
527  HWND m_hWnd;
529  HDC m_hDC;
530 
531  bool m_isDialog;
532 
534  bool m_hasMouseCaptured;
539  bool m_hasGrabMouse;
541  int m_nPressedButtons;
543  HCURSOR m_customCursor;
545  bool m_wantAlphaBackground;
546 
548  ITaskbarList3 *m_Bar;
549 
550  static const wchar_t *s_windowClassName;
551  static const int s_maxTitleLength;
552 
554  GHOST_TabletData m_tabletData;
555 
556  /* Wintab API */
557  struct {
559  HMODULE handle = NULL;
560 
562  GHOST_WIN32_WTInfo info;
568 
570  HCTX tablet;
573  } m_wintab;
574 
575  GHOST_TWindowState m_normal_state;
576 
578  HMODULE m_user32;
579  GHOST_WIN32_GetPointerInfoHistory m_fpGetPointerInfoHistory;
580  GHOST_WIN32_GetPointerPenInfoHistory m_fpGetPointerPenInfoHistory;
581  GHOST_WIN32_GetPointerTouchInfoHistory m_fpGetPointerTouchInfoHistory;
582 
583  HWND m_parentWindowHwnd;
584 
585 #ifdef WITH_INPUT_IME
587  GHOST_ImeWin32 m_imeInput;
588 #endif
589  bool m_debug_context;
590 };
GHOST_TWindowState
Definition: GHOST_Types.h:144
GHOST_TStandardCursor
Definition: GHOST_Types.h:222
unsigned int GHOST_TUns32
Definition: GHOST_Types.h:64
unsigned long long GHOST_TUns64
Definition: GHOST_Types.h:86
int GHOST_TInt32
Definition: GHOST_Types.h:63
unsigned short GHOST_TUns16
Definition: GHOST_Types.h:62
GHOST_TDrawingContextType
Definition: GHOST_Types.h:156
@ GHOST_kDrawingContextTypeNone
Definition: GHOST_Types.h:157
GHOST_TButtonMask
Definition: GHOST_Types.h:164
GHOST_TWindowOrder
Definition: GHOST_Types.h:154
GHOST_TSuccess
Definition: GHOST_Types.h:91
@ GHOST_kFailure
Definition: GHOST_Types.h:91
GHOST_TGrabCursorMode
Definition: GHOST_Types.h:412
unsigned char GHOST_TUns8
Definition: GHOST_Types.h:60
GHOST_TTabletAPI
Definition: GHOST_Types.h:106
BOOL(API * GHOST_WIN32_WTOverlap)(HCTX, BOOL)
BOOL(API * GHOST_WIN32_WTEnable)(HCTX, BOOL)
UINT(API * GHOST_WIN32_GetDpiForWindow)(HWND)
enum tagPOINTER_BUTTON_CHANGE_TYPE POINTER_BUTTON_CHANGE_TYPE
typedef UINT
HCTX(API * GHOST_WIN32_WTOpen)(HWND, LPLOGCONTEXTA, BOOL)
BOOL(API * GHOST_WIN32_WTClose)(HCTX)
UINT32 POINTER_FLAGS
struct tagPOINTER_PEN_INFO POINTER_PEN_INFO
tagPOINTER_BUTTON_CHANGE_TYPE
@ POINTER_CHANGE_NONE
@ POINTER_CHANGE_THIRDBUTTON_UP
@ POINTER_CHANGE_FIFTHBUTTON_UP
@ POINTER_CHANGE_FIRSTBUTTON_DOWN
@ POINTER_CHANGE_SECONDBUTTON_DOWN
@ POINTER_CHANGE_FOURTHBUTTON_DOWN
@ POINTER_CHANGE_FIFTHBUTTON_DOWN
@ POINTER_CHANGE_FOURTHBUTTON_UP
@ POINTER_CHANGE_THIRDBUTTON_DOWN
@ POINTER_CHANGE_SECONDBUTTON_UP
@ POINTER_CHANGE_FIRSTBUTTON_UP
UINT32 TOUCH_FLAGS
BOOL(WINAPI * GHOST_WIN32_GetPointerPenInfoHistory)(UINT32 pointerId, UINT32 *entriesCount, POINTER_PEN_INFO *penInfo)
BOOL(WINAPI * GHOST_WIN32_GetPointerInfoHistory)(UINT32 pointerId, UINT32 *entriesCount, POINTER_INFO *pointerInfo)
tagPOINTER_INPUT_TYPE
@ PT_MOUSE
@ PT_PEN
@ PT_TOUCH
@ PT_POINTER
BOOL(API * GHOST_WIN32_RegisterTouchWindow)(HWND hwnd, ULONG ulFlags)
UINT32 TOUCH_MASK
struct tagPOINTER_INFO POINTER_INFO
struct tagPOINTER_TOUCH_INFO POINTER_TOUCH_INFO
DWORD POINTER_INPUT_TYPE
GHOST_MouseCaptureEventWin32
@ MousePressed
@ OperatorUngrab
@ MouseReleased
@ OperatorGrab
UINT32 PEN_MASK
UINT32 PEN_FLAGS
typedef LPVOID
BOOL(API * GHOST_WIN32_WTPacket)(HCTX, UINT, LPVOID)
BOOL(WINAPI * GHOST_WIN32_GetPointerTouchInfoHistory)(UINT32 pointerId, UINT32 *entriesCount, POINTER_TOUCH_INFO *touchInfo)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble top
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint order
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
Definition: btDbvt.cpp:299
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition: btQuadWord.h:119
GHOST_TSuccess invalidate()
GHOST_WIN32_WTOverlap overlap
GHOST_TUns16 getDPIHint() override
GHOST_WIN32_WTEnable enable
GHOST_WindowWin32(GHOST_SystemWin32 *system, const char *title, GHOST_TInt32 left, GHOST_TInt32 top, GHOST_TUns32 width, GHOST_TUns32 height, GHOST_TWindowState state, GHOST_TDrawingContextType type=GHOST_kDrawingContextTypeNone, bool wantStereoVisual=false, bool alphaBackground=false, GHOST_WindowWin32 *parentWindow=0, bool is_debug=false, bool dialog=false)
void processWin32TabletActivateEvent(WORD state)
GHOST_TSuccess setOrder(GHOST_TWindowOrder order)
GHOST_TSuccess setProgressBar(float progress)
void setTitle(const char *title)
std::string getTitle() const
GHOST_WIN32_WTClose close
GHOST_WIN32_WTInfo info
void loadCursor(bool visible, GHOST_TStandardCursor cursorShape) const
GHOST_TSuccess getPointerInfo(std::vector< GHOST_PointerInfoWin32 > &outPointerInfo, WPARAM wParam, LPARAM lParam)
GHOST_TSuccess setClientSize(GHOST_TUns32 width, GHOST_TUns32 height)
const GHOST_TabletData & getTabletData()
void processWin32TabletEvent(WPARAM wParam, LPARAM lParam)
HCURSOR getStandardCursor(GHOST_TStandardCursor shape) const
void updateMouseCapture(GHOST_MouseCaptureEventWin32 event)
GHOST_TSuccess setState(GHOST_TWindowState state)
void getWindowBounds(GHOST_Rect &bounds) const
void getClientBounds(GHOST_Rect &bounds) const
GHOST_TSuccess beginFullScreen() const
void screenToClient(GHOST_TInt32 inX, GHOST_TInt32 inY, GHOST_TInt32 &outX, GHOST_TInt32 &outY) const
GHOST_TSuccess setClientHeight(GHOST_TUns32 height)
GHOST_WIN32_WTOpen open
GHOST_TSuccess endProgressBar()
GHOST_TWindowState getState() const
void clientToScreen(GHOST_TInt32 inX, GHOST_TInt32 inY, GHOST_TInt32 &outX, GHOST_TInt32 &outY) const
bool useTabletAPI(GHOST_TTabletAPI api) const
GHOST_WIN32_WTPacket packet
GHOST_TSuccess endFullScreen() const
GHOST_TSuccess setClientWidth(GHOST_TUns32 width)
static ulong state[N]
static int left
static const VertexNature POINT
Definition: Nature.h:34
GHOST_TabletData tabletData
GHOST_TButtonMask buttonMask
POINTER_INPUT_TYPE pointerType
POINTER_FLAGS pointerFlags
POINTER_BUTTON_CHANGE_TYPE ButtonChangeType
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)