aboutsummaryrefslogtreecommitdiffstats
path: root/distrib/sdl-1.2.15/src/video/gapi/SDL_gapivideo.h
diff options
context:
space:
mode:
Diffstat (limited to 'distrib/sdl-1.2.15/src/video/gapi/SDL_gapivideo.h')
-rw-r--r--distrib/sdl-1.2.15/src/video/gapi/SDL_gapivideo.h160
1 files changed, 160 insertions, 0 deletions
diff --git a/distrib/sdl-1.2.15/src/video/gapi/SDL_gapivideo.h b/distrib/sdl-1.2.15/src/video/gapi/SDL_gapivideo.h
new file mode 100644
index 0000000..842d098
--- /dev/null
+++ b/distrib/sdl-1.2.15/src/video/gapi/SDL_gapivideo.h
@@ -0,0 +1,160 @@
+/*
+ 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_gapivideo_h
+#define _SDL_gapivideo_h
+
+#include "SDL_mouse.h"
+#include "SDL_mutex.h"
+#include "../SDL_sysvideo.h"
+#include "../windib/SDL_gapidibvideo.h"
+
+/* From gx.h, since it's not really C compliant */
+
+struct GXDisplayProperties {
+ DWORD cxWidth;
+ DWORD cyHeight; // notice lack of 'th' in the word height.
+ long cbxPitch; // number of bytes to move right one x pixel - can be negative.
+ long cbyPitch; // number of bytes to move down one y pixel - can be negative.
+ long cBPP; // # of bits in each pixel
+ DWORD ffFormat; // format flags.
+};
+
+struct GXKeyList {
+ short vkUp; // key for up
+ POINT ptUp; // x,y position of key/button. Not on screen but in screen coordinates.
+ short vkDown;
+ POINT ptDown;
+ short vkLeft;
+ POINT ptLeft;
+ short vkRight;
+ POINT ptRight;
+ short vkA;
+ POINT ptA;
+ short vkB;
+ POINT ptB;
+ short vkC;
+ POINT ptC;
+ short vkStart;
+ POINT ptStart;
+};
+
+typedef int (*PFNGXOpenDisplay)(HWND hWnd, DWORD dwFlags);
+typedef int (*PFNGXCloseDisplay)();
+typedef void* (*PFNGXBeginDraw)();
+typedef int (*PFNGXEndDraw)();
+typedef int (*PFNGXOpenInput)();
+typedef int (*PFNGXCloseInput)();
+typedef struct GXDisplayProperties (*PFNGXGetDisplayProperties)();
+typedef struct GXKeyList (*PFNGXGetDefaultKeys)(int iOptions);
+typedef int (*PFNGXSuspend)();
+typedef int (*PFNGXResume)();
+typedef int (*PFNGXSetViewport)( DWORD dwTop, DWORD dwHeight, DWORD dwReserved1, DWORD dwReserved2 );
+typedef BOOL (*PFNGXIsDisplayDRAMBuffer)();
+
+struct GapiFunc
+{
+ PFNGXOpenDisplay GXOpenDisplay;
+ PFNGXCloseDisplay GXCloseDisplay;
+ PFNGXBeginDraw GXBeginDraw;
+ PFNGXEndDraw GXEndDraw;
+ PFNGXOpenInput GXOpenInput;
+ PFNGXCloseInput GXCloseInput;
+ PFNGXGetDisplayProperties GXGetDisplayProperties;
+ PFNGXGetDefaultKeys GXGetDefaultKeys;
+ PFNGXSuspend GXSuspend;
+ PFNGXResume GXResume;
+ PFNGXSetViewport GXSetViewport;
+ PFNGXIsDisplayDRAMBuffer GXIsDisplayDRAMBuffer;
+};
+
+#define kfLandscape 0x8 // Screen is rotated 270 degrees
+#define kfPalette 0x10 // Pixel values are indexes into a palette
+#define kfDirect 0x20 // Pixel values contain actual level information
+#define kfDirect555 0x40 // 5 bits each for red, green and blue values in a pixel.
+#define kfDirect565 0x80 // 5 red bits, 6 green bits and 5 blue bits per pixel
+#define kfDirect888 0x100 // 8 bits each for red, green and blue values in a pixel.
+#define kfDirect444 0x200 // 4 red, 4 green, 4 blue
+#define kfDirectInverted 0x400
+
+#define GX_FULLSCREEN 0x01 // for OpenDisplay()
+#define GX_NORMALKEYS 0x02
+#define GX_LANDSCAPEKEYS 0x03
+
+
+/* GAPI video mode */
+typedef enum {
+ GAPI_NONE = 0,
+ GAPI_DIRECT_565,
+ GAPI_DIRECT_555,
+ GAPI_MONO,
+ GAPI_PALETTE
+} GAPIVideoMode;
+
+typedef unsigned short PIXEL;
+
+/* Private display data
+ begin with DIB private structure to allow DIB events code sharing
+*/
+struct GapiInfo {
+ /* Rotation which has to be applied to the key (arrow keys) and mouse events measured in quarters of a circle
+ * counter clockwise */
+ int coordinateTransform;
+ char hiresFix; /* using hires mode without defining hires resource */
+ int invert; //TODO this is only written but never read, so it should be removed
+
+#define NUM_MODELISTS 4 /* 8, 16, 24, and 32 bits-per-pixel */
+ int SDL_nummodes[NUM_MODELISTS];
+ SDL_Rect **SDL_modelist[NUM_MODELISTS];
+
+
+ // The orientation of the video mode user wants to get
+ // Probably restricted to UP and RIGHT
+ SDL_ScreenOrientation userOrientation;
+ SDL_ScreenOrientation systemOrientation;
+// --------------
+ int useGXOpenDisplay; /* use GXOpenDispplay */
+ int alreadyGXOpened;
+ int w, h;
+ // The orientation of GAPI framebuffer.
+ // Never changes on the same device.
+ SDL_ScreenOrientation gapiOrientation;
+
+ void *buffer; // may be 8, 16, 24, 32 bpp
+ PIXEL *videoMem;
+ BOOL needUpdate;
+ struct GXKeyList keyList;
+ struct GapiFunc gxFunc;
+ struct GXDisplayProperties gxProperties;
+ GAPIVideoMode videoMode;
+ int colorscale;
+ int dstLineStep; // in bytes
+ int dstPixelStep; // in bytes
+ int startOffset; // in bytes
+ int useVga;
+ int suspended; // do not pu anything into video memory
+};
+
+
+
+#endif /* _SDL_gapivideo_h */