SDL-1.2.14
[sdl_omap.git] / src / video / wincommon / SDL_lowvideo.h
CommitLineData
e14743d1 1/*
2 SDL - Simple DirectMedia Layer
3 Copyright (C) 1997-2009 Sam Lantinga
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19 Sam Lantinga
20 slouken@libsdl.org
21*/
22#include "SDL_config.h"
23
24#ifndef _SDL_lowvideo_h
25#define _SDL_lowvideo_h
26
27#define WIN32_LEAN_AND_MEAN
28#include <windows.h>
29
30#ifndef SetClassLongPtr
31#define SetClassLongPtr SetClassLong
32#endif
33#ifndef GetWindowLongPtr
34#define GetWindowLongPtr GetWindowLong
35#endif
36#ifndef SetWindowLongPtr
37#define SetWindowLongPtr SetWindowLong
38#endif
39#ifndef GWLP_WNDPROC
40#define GWLP_WNDPROC GWL_WNDPROC
41#endif
42#ifndef GWLP_HINSTANCE
43#define GWLP_HINSTANCE GWL_HINSTANCE
44#endif
45#ifndef GCLP_HICON
46#define GCLP_HICON GCL_HICON
47#endif
48
49#include "../SDL_sysvideo.h"
50
51/* Hidden "this" pointer for the video functions */
52#define _THIS SDL_VideoDevice *this
53
54#define FULLSCREEN() \
55 ((SDL_VideoSurface->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN)
56
57#define WINDIB_FULLSCREEN() \
58( \
59 SDL_VideoSurface && \
60 FULLSCREEN() && \
61 (((SDL_VideoSurface->flags & SDL_OPENGL ) == SDL_OPENGL ) || \
62 ((SDL_strcmp(this->name, "windib") == 0) || \
63 (SDL_strcmp(this->name, "gapi") == 0))) \
64)
65#define DDRAW_FULLSCREEN() \
66( \
67 SDL_VideoSurface && \
68 FULLSCREEN() && \
69 ((SDL_VideoSurface->flags & SDL_OPENGL ) != SDL_OPENGL ) && \
70 (SDL_strcmp(this->name, "directx") == 0) \
71)
72
73#define DINPUT_FULLSCREEN() \
74( \
75 FULLSCREEN() && \
76 (strcmp(this->name, "directx") == 0) \
77)
78
79#define DINPUT() (strcmp(this->name, "directx") == 0)
80
81/* The main window -- and a function to set it for the audio */
82#ifdef _WIN32_WCE
83extern LPWSTR SDL_Appname;
84#else
85extern LPSTR SDL_Appname;
86#endif
87extern HINSTANCE SDL_Instance;
88extern HWND SDL_Window;
89extern BOOL SDL_windowid;
90
91/* Variables and functions exported to other parts of the native video
92 subsystem (SDL_sysevents.c)
93*/
94extern void WIN_FlushMessageQueue();
95
96/* Called by windows message loop when application is activated */
97extern void (*WIN_Activate)(_THIS, BOOL active, BOOL minimized);
98
99/* Called by windows message loop when system palette is available */
100extern void (*WIN_RealizePalette)(_THIS);
101
102/* Called by windows message loop when the system palette changes */
103extern void (*WIN_PaletteChanged)(_THIS, HWND window);
104
105/* Called by windows message loop when a portion of the screen needs update */
106extern void (*WIN_WinPAINT)(_THIS, HDC hdc);
107
108/* Called by windows message loop when the message isn't handled */
109extern LONG (*HandleMessage)(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
110
111/* The window cursor (from SDL_sysmouse.c) */
112extern HCURSOR SDL_hcursor;
113
114/* The bounds of the window in screen coordinates */
115extern RECT SDL_bounds;
116
117/* The position of the window in windowed mode */
118extern int SDL_windowX;
119extern int SDL_windowY;
120
121/* Flag -- SDL is performing a resize, rather than the user */
122extern int SDL_resizing;
123
124/* Flag -- the mouse is in relative motion mode */
125extern int mouse_relative;
126
127/* The GDI fullscreen mode currently active */
128#ifndef NO_CHANGEDISPLAYSETTINGS
129extern DEVMODE SDL_desktop_mode;
130extern DEVMODE SDL_fullscreen_mode;
131#endif
132
133/* The system gamma ramp for GDI modes */
134extern WORD *gamma_saved;
135
136/* This is really from SDL_dx5audio.c */
137extern void DX5_SoundFocus(HWND window);
138
139/* DJM: This is really from SDL_sysevents.c, we need it in
140 GDL_CreateWindow as well */
141LRESULT CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
142
143/* JFP: Implementation of ToUnicode() that works on 9x/ME/2K/XP */
144typedef int (WINAPI *ToUnicodeFN)(UINT, UINT, PBYTE, LPWSTR, int, UINT);
145
146extern ToUnicodeFN SDL_ToUnicode;
147
148#endif /* SDL_lowvideo_h */