From a855d6202536ff28e5aae4f22a0f31d8f5b325d0 Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Sat, 21 Jan 2017 15:18:31 -0500 Subject: Port of Duke Nukem 3D This ports Fabien Sanglard's Chocolate Duke to run on a version of SDL for Rockbox. Change-Id: I8f2c4c78af19de10c1633ed7bb7a997b43256dd9 --- .../plugins/sdl/src/video/wincommon/SDL_lowvideo.h | 152 +++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 apps/plugins/sdl/src/video/wincommon/SDL_lowvideo.h (limited to 'apps/plugins/sdl/src/video/wincommon/SDL_lowvideo.h') diff --git a/apps/plugins/sdl/src/video/wincommon/SDL_lowvideo.h b/apps/plugins/sdl/src/video/wincommon/SDL_lowvideo.h new file mode 100644 index 0000000000..89d1a88e89 --- /dev/null +++ b/apps/plugins/sdl/src/video/wincommon/SDL_lowvideo.h @@ -0,0 +1,152 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" + +#ifndef _SDL_lowvideo_h +#define _SDL_lowvideo_h + +#define WIN32_LEAN_AND_MEAN +#include + +#ifndef SetClassLongPtr +#define SetClassLongPtr SetClassLong +#endif +#ifndef GetWindowLongPtr +#define GetWindowLongPtr GetWindowLong +#endif +#ifndef SetWindowLongPtr +#define SetWindowLongPtr SetWindowLong +#endif +#ifndef GWLP_WNDPROC +#define GWLP_WNDPROC GWL_WNDPROC +#endif +#ifndef GWLP_HINSTANCE +#define GWLP_HINSTANCE GWL_HINSTANCE +#endif +#ifndef GCLP_HICON +#define GCLP_HICON GCL_HICON +#endif + +#include "../SDL_sysvideo.h" + +/* Hidden "this" pointer for the video functions */ +#define _THIS SDL_VideoDevice *this + +#define FULLSCREEN() \ + ((SDL_VideoSurface->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) + +#define WINDIB_FULLSCREEN() \ +( \ + SDL_VideoSurface && \ + FULLSCREEN() && \ + (((SDL_VideoSurface->flags & SDL_OPENGL ) == SDL_OPENGL ) || \ + ((SDL_strcmp(this->name, "windib") == 0) || \ + (SDL_strcmp(this->name, "gapi") == 0))) \ +) +#define DDRAW_FULLSCREEN() \ +( \ + SDL_VideoSurface && \ + FULLSCREEN() && \ + ((SDL_VideoSurface->flags & SDL_OPENGL ) != SDL_OPENGL ) && \ + (SDL_strcmp(this->name, "directx") == 0) \ +) + +#define DINPUT_FULLSCREEN() \ +( \ + FULLSCREEN() && \ + (strcmp(this->name, "directx") == 0) \ +) + +#define DINPUT() (strcmp(this->name, "directx") == 0) + +/* The main window -- and a function to set it for the audio */ +#ifdef _WIN32_WCE +extern LPWSTR SDL_Appname; +#else +extern LPSTR SDL_Appname; +#endif +extern HINSTANCE SDL_Instance; +extern HWND SDL_Window; +extern BOOL SDL_windowid; + +/* Variables and functions exported to other parts of the native video + subsystem (SDL_sysevents.c) +*/ +extern void WIN_FlushMessageQueue(); + +/* Called by windows message loop when application is activated */ +extern void (*WIN_Activate)(_THIS, BOOL active, BOOL minimized); + +/* Called by windows message loop when system palette is available */ +extern void (*WIN_RealizePalette)(_THIS); + +/* Called by windows message loop when the system palette changes */ +extern void (*WIN_PaletteChanged)(_THIS, HWND window); + +/* Called by windows message loop when a portion of the screen needs update */ +extern void (*WIN_WinPAINT)(_THIS, HDC hdc); + +/* Called by windows message loop when the message isn't handled */ +extern LONG (*HandleMessage)(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); + +/* The window cursor (from SDL_sysmouse.c) */ +extern HCURSOR SDL_hcursor; + +/* The bounds of the window in screen coordinates */ +extern RECT SDL_bounds; + +/* The position of the window in windowed mode */ +extern int SDL_windowX; +extern int SDL_windowY; + +/* Flag -- SDL is performing a resize, rather than the user */ +extern int SDL_resizing; + +/* Flag -- the mouse is in relative motion mode */ +extern int mouse_relative; + +/* The GDI fullscreen mode currently active */ +#ifndef NO_CHANGEDISPLAYSETTINGS +extern DEVMODE SDL_desktop_mode; +extern DEVMODE SDL_fullscreen_mode; +#endif + +/* The system gamma ramp for GDI modes */ +extern WORD *gamma_saved; + +/* This is really from SDL_dx5audio.c */ +extern void DX5_SoundFocus(HWND window); + +/* DJM: This is really from SDL_sysevents.c, we need it in + GDL_CreateWindow as well */ +LRESULT CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); + +#ifdef _WIN64 +#define SDL_ToUnicode ToUnicode +#else +/* JFP: Implementation of ToUnicode() that works on 9x/ME/2K/XP */ +typedef int (WINAPI *ToUnicodeFN)(UINT, UINT, const BYTE *, LPWSTR, int, UINT); + +extern ToUnicodeFN SDL_ToUnicode; +#endif + +#endif /* SDL_lowvideo_h */ -- cgit v1.2.3