SDL_windowsvideo.h
Go to the documentation of this file.
/*
Simple DirectMedia Layer
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "../../SDL_internal.h"
#ifndef _SDL_windowsvideo_h
#define _SDL_windowsvideo_h
#include "../../core/windows/SDL_windows.h"
#include "../SDL_sysvideo.h"
#if defined(_MSC_VER) && (_MSC_VER >= 1500)
#include <msctf.h>
#else
#include "SDL_msctf.h"
#endif
#include <imm.h>
#define MAX_CANDLIST 10
#define MAX_CANDLENGTH 256
#include "SDL_windowsclipboard.h"
#include "SDL_windowsevents.h"
#include "SDL_windowskeyboard.h"
#include "SDL_windowsmodes.h"
#include "SDL_windowsmouse.h"
#include "SDL_windowsopengl.h"
#include "SDL_windowsopengles.h"
#include "SDL_windowswindow.h"
#include "SDL_events.h"
#include "SDL_loadso.h"
#if WINVER < 0x0601
/* Touch input definitions */
#define TWF_FINETOUCH 1
#define TWF_WANTPALM 2
#define TOUCHEVENTF_MOVE 0x0001
#define TOUCHEVENTF_DOWN 0x0002
#define TOUCHEVENTF_UP 0x0004
DECLARE_HANDLE(HTOUCHINPUT);
typedef struct _TOUCHINPUT {
LONG x;
LONG y;
HANDLE hSource;
DWORD dwID;
DWORD dwFlags;
DWORD dwMask;
DWORD dwTime;
ULONG_PTR dwExtraInfo;
DWORD cxContact;
DWORD cyContact;
} TOUCHINPUT, *PTOUCHINPUT;
#endif /* WINVER < 0x0601 */
#if WINVER < 0x0603
typedef enum MONITOR_DPI_TYPE {
MDT_EFFECTIVE_DPI = 0,
MDT_ANGULAR_DPI = 1,
MDT_RAW_DPI = 2,
MDT_DEFAULT = MDT_EFFECTIVE_DPI
} MONITOR_DPI_TYPE;
#endif /* WINVER < 0x0603 */
typedef BOOL (*PFNSHFullScreen)(HWND, DWORD);
typedef void (*PFCoordTransform)(SDL_Window*, POINT*);
typedef struct
{
void **lpVtbl;
int refcount;
void *data;
} TSFSink;
/* Definition from Win98DDK version of IMM.H */
typedef struct tagINPUTCONTEXT2 {
HWND hWnd;
BOOL fOpen;
POINT ptStatusWndPos;
POINT ptSoftKbdPos;
DWORD fdwConversion;
DWORD fdwSentence;
union {
LOGFONTA A;
LOGFONTW W;
} lfFont;
COMPOSITIONFORM cfCompForm;
CANDIDATEFORM cfCandForm[4];
HIMCC hCompStr;
HIMCC hCandInfo;
HIMCC hGuideLine;
HIMCC hPrivate;
DWORD dwNumMsgBuf;
HIMCC hMsgBuf;
DWORD fdwInit;
DWORD dwReserve[3];
} INPUTCONTEXT2, *PINPUTCONTEXT2, NEAR *NPINPUTCONTEXT2, FAR *LPINPUTCONTEXT2;
/* Private display data */
typedef struct SDL_VideoData
{
int render;
DWORD clipboard_count;
/* Touch input functions */
void* userDLL;
BOOL (WINAPI *CloseTouchInputHandle)( HTOUCHINPUT );
BOOL (WINAPI *GetTouchInputInfo)( HTOUCHINPUT, UINT, PTOUCHINPUT, int );
BOOL (WINAPI *RegisterTouchWindow)( HWND, ULONG );
void* shcoreDLL;
HRESULT (WINAPI *GetDpiForMonitor)( HMONITOR hmonitor,
MONITOR_DPI_TYPE dpiType,
UINT *dpiX,
UINT *dpiY );
SDL_bool ime_com_initialized;
struct ITfThreadMgr *ime_threadmgr;
SDL_bool ime_initialized;
SDL_bool ime_enabled;
SDL_bool ime_available;
HWND ime_hwnd_main;
HWND ime_hwnd_current;
HIMC ime_himc;
WCHAR ime_composition[SDL_TEXTEDITINGEVENT_TEXT_SIZE];
WCHAR ime_readingstring[16];
int ime_cursor;
SDL_bool ime_candlist;
WCHAR ime_candidates[MAX_CANDLIST][MAX_CANDLENGTH];
DWORD ime_candcount;
DWORD ime_candref;
DWORD ime_candsel;
UINT ime_candpgsize;
int ime_candlistindexbase;
SDL_bool ime_candvertical;
SDL_bool ime_dirty;
SDL_Rect ime_rect;
SDL_Rect ime_candlistrect;
int ime_winwidth;
int ime_winheight;
HKL ime_hkl;
void* ime_himm32;
UINT (WINAPI *GetReadingString)(HIMC himc, UINT uReadingBufLen, LPWSTR lpwReadingBuf, PINT pnErrorIndex, BOOL *pfIsVertical, PUINT puMaxReadingLen);
BOOL (WINAPI *ShowReadingWindow)(HIMC himc, BOOL bShow);
LPINPUTCONTEXT2 (WINAPI *ImmLockIMC)(HIMC himc);
BOOL (WINAPI *ImmUnlockIMC)(HIMC himc);
LPVOID (WINAPI *ImmLockIMCC)(HIMCC himcc);
BOOL (WINAPI *ImmUnlockIMCC)(HIMCC himcc);
SDL_bool ime_uiless;
struct ITfThreadMgrEx *ime_threadmgrex;
DWORD ime_uielemsinkcookie;
DWORD ime_alpnsinkcookie;
DWORD ime_openmodesinkcookie;
DWORD ime_convmodesinkcookie;
TSFSink *ime_uielemsink;
TSFSink *ime_ippasink;
} SDL_VideoData;
extern SDL_bool g_WindowsEnableMessageLoop;
extern SDL_bool g_WindowFrameUsableWhileCursorHidden;
typedef struct IDirect3D9 IDirect3D9;
extern SDL_bool D3D_LoadDLL( void **pD3DDLL, IDirect3D9 **pDirect3D9Interface );
#endif /* _SDL_windowsvideo_h */
/* vi: set ts=4 sw=4 expandtab: */
TSFSink::data
void * data
Definition: SDL_windowsvideo.h:97
TOUCHINPUT
Definition: SDL_windowsvideo.h:64
IDirect3D9
struct IDirect3D9 IDirect3D9
Definition: SDL_windowsvideo.h:194
MAX_CANDLIST
#define MAX_CANDLIST
Definition: SDL_windowsvideo.h:38
TOUCHINPUT::hSource
HANDLE hSource
Definition: SDL_windowsvideo.h:67
g_WindowFrameUsableWhileCursorHidden
SDL_bool g_WindowFrameUsableWhileCursorHidden
SDL_VideoData::uReadingBufLen
UINT uReadingBufLen
Definition: SDL_windowsvideo.h:174
INPUTCONTEXT2::A
LOGFONTA A
Definition: SDL_windowsvideo.h:109
SDL_VideoData::clipboard_count
DWORD clipboard_count
Definition: SDL_windowsvideo.h:130
SDL_VideoData::shcoreDLL
void * shcoreDLL
Definition: SDL_windowsvideo.h:138
SDL_windowsmodes.h
TOUCHINPUT::dwFlags
DWORD dwFlags
Definition: SDL_windowsvideo.h:69
INPUTCONTEXT2::ptStatusWndPos
POINT ptStatusWndPos
Definition: SDL_windowsvideo.h:104
SDL_VideoData::ime_uielemsink
TSFSink * ime_uielemsink
Definition: SDL_windowsvideo.h:187
MDT_ANGULAR_DPI
Definition: SDL_windowsvideo.h:83
SDL_windowsmouse.h
ITfThreadMgrEx
Definition: SDL_msctf.h:97
MONITOR_DPI_TYPE
MONITOR_DPI_TYPE
Definition: SDL_windowsvideo.h:81
TSFSink
Definition: SDL_windowsvideo.h:93
SDL_windowskeyboard.h
TOUCHINPUT::dwTime
DWORD dwTime
Definition: SDL_windowsvideo.h:71
SDL_windowsopengles.h
SDL_VideoData::ime_candcount
DWORD ime_candcount
Definition: SDL_windowsvideo.h:159
SDL_events.h
TSFSink::lpVtbl
void ** lpVtbl
Definition: SDL_windowsvideo.h:95
PFNSHFullScreen
BOOL(* PFNSHFullScreen)(HWND, DWORD)
Definition: SDL_windowsvideo.h:90
SDL_VideoData::ime_winheight
int ime_winheight
Definition: SDL_windowsvideo.h:170
INPUTCONTEXT2::W
LOGFONTW W
Definition: SDL_windowsvideo.h:110
SDL_VideoData::ime_hwnd_main
HWND ime_hwnd_main
Definition: SDL_windowsvideo.h:149
TOUCHINPUT::x
LONG x
Definition: SDL_windowsvideo.h:65
MDT_RAW_DPI
Definition: SDL_windowsvideo.h:84
INPUTCONTEXT2::hPrivate
HIMCC hPrivate
Definition: SDL_windowsvideo.h:117
SDL_VideoData::ime_openmodesinkcookie
DWORD ime_openmodesinkcookie
Definition: SDL_windowsvideo.h:185
INPUTCONTEXT2
Definition: SDL_windowsvideo.h:101
SDL_VideoData::ime_alpnsinkcookie
DWORD ime_alpnsinkcookie
Definition: SDL_windowsvideo.h:184
g_WindowsEnableMessageLoop
SDL_bool g_WindowsEnableMessageLoop
MAX_CANDLENGTH
#define MAX_CANDLENGTH
Definition: SDL_windowsvideo.h:39
TSFSink::refcount
int refcount
Definition: SDL_windowsvideo.h:96
SDL_VideoData::userDLL
void * userDLL
Definition: SDL_windowsvideo.h:133
TOUCHINPUT::dwMask
DWORD dwMask
Definition: SDL_windowsvideo.h:70
SDL_msctf.h
SDL_bool
SDL_bool
Definition: SDL_stdinc.h:126
SDL_VideoData::ime_candlist
SDL_bool ime_candlist
Definition: SDL_windowsvideo.h:157
TOUCHINPUT::y
LONG y
Definition: SDL_windowsvideo.h:66
SDL_VideoData::ime_uielemsinkcookie
DWORD ime_uielemsinkcookie
Definition: SDL_windowsvideo.h:183
SDL_VideoData::ime_rect
SDL_Rect ime_rect
Definition: SDL_windowsvideo.h:167
SDL_VideoData::ime_candsel
DWORD ime_candsel
Definition: SDL_windowsvideo.h:161
SDL_windowsclipboard.h
FAR
#define FAR
Definition: SDL_directx.h:37
SDL_VideoData::ime_initialized
SDL_bool ime_initialized
Definition: SDL_windowsvideo.h:146
TOUCHINPUT::cyContact
DWORD cyContact
Definition: SDL_windowsvideo.h:74
INPUTCONTEXT2::dwNumMsgBuf
DWORD dwNumMsgBuf
Definition: SDL_windowsvideo.h:118
INPUTCONTEXT2::cfCompForm
COMPOSITIONFORM cfCompForm
Definition: SDL_windowsvideo.h:112
INPUTCONTEXT2::fdwSentence
DWORD fdwSentence
Definition: SDL_windowsvideo.h:107
DECLARE_HANDLE
DECLARE_HANDLE(HTOUCHINPUT)
TOUCHINPUT::dwExtraInfo
ULONG_PTR dwExtraInfo
Definition: SDL_windowsvideo.h:72
SDL_VideoData::ime_winwidth
int ime_winwidth
Definition: SDL_windowsvideo.h:169
SDL_VideoData::render
int render
Definition: SDL_windowsvideo.h:128
INPUTCONTEXT2::ptSoftKbdPos
POINT ptSoftKbdPos
Definition: SDL_windowsvideo.h:105
SDL_VideoData::ime_candpgsize
UINT ime_candpgsize
Definition: SDL_windowsvideo.h:162
SDL_VideoData::ime_candref
DWORD ime_candref
Definition: SDL_windowsvideo.h:160
SDL_VideoData::ime_ippasink
TSFSink * ime_ippasink
Definition: SDL_windowsvideo.h:188
SDL_VideoData::ime_enabled
SDL_bool ime_enabled
Definition: SDL_windowsvideo.h:147
SDL_VideoData::ime_hkl
HKL ime_hkl
Definition: SDL_windowsvideo.h:172
SDL_VideoData::ime_convmodesinkcookie
DWORD ime_convmodesinkcookie
Definition: SDL_windowsvideo.h:186
SDL_VideoData::ime_available
SDL_bool ime_available
Definition: SDL_windowsvideo.h:148
INPUTCONTEXT2::fdwInit
DWORD fdwInit
Definition: SDL_windowsvideo.h:120
SDL_VideoData::ime_com_initialized
SDL_bool ime_com_initialized
Definition: SDL_windowsvideo.h:144
D3D_LoadDLL
SDL_bool D3D_LoadDLL(void **pD3DDLL, IDirect3D9 **pDirect3D9Interface)
INPUTCONTEXT2::hGuideLine
HIMCC hGuideLine
Definition: SDL_windowsvideo.h:116
SDL_VideoData::UINT
UINT
Definition: SDL_windowsvideo.h:135
SDL_VideoData::ime_dirty
SDL_bool ime_dirty
Definition: SDL_windowsvideo.h:166
TOUCHINPUT::cxContact
DWORD cxContact
Definition: SDL_windowsvideo.h:73
INPUTCONTEXT2::fdwConversion
DWORD fdwConversion
Definition: SDL_windowsvideo.h:106
SDL_loadso.h
INPUTCONTEXT2::hMsgBuf
HIMCC hMsgBuf
Definition: SDL_windowsvideo.h:119
void
SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char const char SDL_SCANF_FORMAT_STRING const char return SDL_ThreadFunction const char void return Uint32 return Uint32 void
Definition: SDL_dynapi_procs.h:93
SDL_VideoData::ime_uiless
SDL_bool ime_uiless
Definition: SDL_windowsvideo.h:181
TOUCHINPUT::dwID
DWORD dwID
Definition: SDL_windowsvideo.h:68
SDL_windowsevents.h
SDL_Window
The type used to identify a window.
Definition: SDL_sysvideo.h:71
INPUTCONTEXT2::fOpen
BOOL fOpen
Definition: SDL_windowsvideo.h:103
SDL_VideoData::ime_candvertical
SDL_bool ime_candvertical
Definition: SDL_windowsvideo.h:164
SDL_VideoData::ime_himm32
void * ime_himm32
Definition: SDL_windowsvideo.h:173
PFCoordTransform
void(* PFCoordTransform)(SDL_Window *, POINT *)
Definition: SDL_windowsvideo.h:91
SDL_VideoData::ULONG
ULONG
Definition: SDL_windowsvideo.h:136
SDL_windowsopengl.h
SDL_VideoData
Definition: SDL_androidvideo.h:35
INPUTCONTEXT2::hWnd
HWND hWnd
Definition: SDL_windowsvideo.h:102
SDL_VideoData::ime_candlistindexbase
int ime_candlistindexbase
Definition: SDL_windowsvideo.h:163
SDL_VideoData::bShow
BOOL bShow
Definition: SDL_windowsvideo.h:175
SDL_VideoData::ime_candlistrect
SDL_Rect ime_candlistrect
Definition: SDL_windowsvideo.h:168
SDL_VideoData::ime_hwnd_current
HWND ime_hwnd_current
Definition: SDL_windowsvideo.h:150
INPUTCONTEXT2::hCandInfo
HIMCC hCandInfo
Definition: SDL_windowsvideo.h:115
MDT_DEFAULT
Definition: SDL_windowsvideo.h:85
SDL_VideoData::ime_cursor
int ime_cursor
Definition: SDL_windowsvideo.h:155
SDL_windowswindow.h
MDT_EFFECTIVE_DPI
Definition: SDL_windowsvideo.h:82
SDL_VideoData::ime_himc
HIMC ime_himc
Definition: SDL_windowsvideo.h:151
INPUTCONTEXT2::hCompStr
HIMCC hCompStr
Definition: SDL_windowsvideo.h:114
SDL_Rect
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:64
ITfThreadMgr
Definition: SDL_msctf.h:72
SDL_VideoData::dpiY
MONITOR_DPI_TYPE UINT UINT * dpiY
Definition: SDL_windowsvideo.h:140
SDL_TEXTEDITINGEVENT_TEXT_SIZE
#define SDL_TEXTEDITINGEVENT_TEXT_SIZE
Definition: SDL_events.h:199
SDL_VideoData::ime_threadmgrex
struct ITfThreadMgrEx * ime_threadmgrex
Definition: SDL_windowsvideo.h:182
SDL_VideoData::ime_threadmgr
struct ITfThreadMgr * ime_threadmgr
Definition: SDL_windowsvideo.h:145