include/SDL_compat.h
author Bob Pendleton <bob@pendleton.com>
Tue, 08 Jan 2008 00:10:46 +0000
changeset 2295 dbc6d1893869
parent 2268 4baee598306d
child 2303 d87417504c75
permissions -rw-r--r--
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997-2006 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 
    23 /* This file contains functions for backwards compatibility with SDL 1.2 */
    24 
    25 #ifndef _SDL_compat_h
    26 #define _SDL_compat_h
    27 
    28 #include "SDL_video.h"
    29 #include "SDL_version.h"
    30 
    31 #include "begin_code.h"
    32 /* Set up for C function definitions, even when using C++ */
    33 #ifdef __cplusplus
    34 /* *INDENT-OFF* */
    35 extern "C" {
    36 /* *INDENT-ON* */
    37 #endif
    38 
    39 #define SDL_SWSURFACE       0x00000000  /* Not used */
    40 #define SDL_SRCALPHA        0x00010000
    41 #define SDL_SRCCOLORKEY     0x00020000
    42 #define SDL_ANYFORMAT       0x00100000
    43 #define SDL_HWPALETTE       0x00200000
    44 #define SDL_DOUBLEBUF       0x00400000
    45 #define SDL_FULLSCREEN      0x00800000
    46 #define SDL_RESIZABLE       0x01000000
    47 #define SDL_NOFRAME         0x02000000
    48 #define SDL_OPENGL          0x04000000
    49 #define SDL_HWSURFACE       0x08000001  /* Not used */
    50 #define SDL_ASYNCBLIT       0x08000000  /* Not used */
    51 #define SDL_RLEACCELOK      0x08000000  /* Not used */
    52 #define SDL_HWACCEL         0x08000000  /* Not used */
    53 
    54 #define SDL_APPMOUSEFOCUS	0x01
    55 #define SDL_APPINPUTFOCUS	0x02
    56 #define SDL_APPACTIVE		0x04
    57 
    58 #define SDL_LOGPAL 0x01
    59 #define SDL_PHYSPAL 0x02
    60 
    61 #define SDL_ACTIVEEVENT	SDL_EVENT_RESERVED1
    62 #define SDL_VIDEORESIZE	SDL_EVENT_RESERVED2
    63 #define SDL_VIDEOEXPOSE	SDL_EVENT_RESERVED3
    64 #define SDL_ACTIVEEVENTMASK	SDL_EVENTMASK(SDL_ACTIVEEVENT)
    65 #define SDL_VIDEORESIZEMASK SDL_EVENTMASK(SDL_VIDEORESIZE)
    66 #define SDL_VIDEOEXPOSEMASK SDL_EVENTMASK(SDL_VIDEOEXPOSE)
    67 
    68 #define SDL_BUTTON_WHEELUP	4
    69 #define SDL_BUTTON_WHEELDOWN	5
    70 
    71 #define SDL_DEFAULT_REPEAT_DELAY	500
    72 #define SDL_DEFAULT_REPEAT_INTERVAL	30
    73 
    74 typedef struct SDL_VideoInfo
    75 {
    76     Uint32 hw_available:1;
    77     Uint32 wm_available:1;
    78     Uint32 UnusedBits1:6;
    79     Uint32 UnusedBits2:1;
    80     Uint32 blit_hw:1;
    81     Uint32 blit_hw_CC:1;
    82     Uint32 blit_hw_A:1;
    83     Uint32 blit_sw:1;
    84     Uint32 blit_sw_CC:1;
    85     Uint32 blit_sw_A:1;
    86     Uint32 blit_fill:1;
    87     Uint32 UnusedBits3:16;
    88     Uint32 video_mem;
    89 
    90     SDL_PixelFormat *vfmt;
    91 } SDL_VideoInfo;
    92 
    93 /* The most common video overlay formats.
    94    For an explanation of these pixel formats, see:
    95    http://www.webartz.com/fourcc/indexyuv.htm
    96 
    97    For information on the relationship between color spaces, see:
    98    http://www.neuro.sfc.keio.ac.jp/~aly/polygon/info/color-space-faq.html
    99  */
   100 #define SDL_YV12_OVERLAY  0x32315659    /* Planar mode: Y + V + U  (3 planes) */
   101 #define SDL_IYUV_OVERLAY  0x56555949    /* Planar mode: Y + U + V  (3 planes) */
   102 #define SDL_YUY2_OVERLAY  0x32595559    /* Packed mode: Y0+U0+Y1+V0 (1 plane) */
   103 #define SDL_UYVY_OVERLAY  0x59565955    /* Packed mode: U0+Y0+V0+Y1 (1 plane) */
   104 #define SDL_YVYU_OVERLAY  0x55595659    /* Packed mode: Y0+V0+Y1+U0 (1 plane) */
   105 
   106 /* The YUV hardware video overlay */
   107 typedef struct SDL_Overlay
   108 {
   109     Uint32 format;              /* Read-only */
   110     int w, h;                   /* Read-only */
   111     int planes;                 /* Read-only */
   112     Uint16 *pitches;            /* Read-only */
   113     Uint8 **pixels;             /* Read-write */
   114 
   115     /* Hardware-specific surface info */
   116     struct private_yuvhwfuncs *hwfuncs;
   117     struct private_yuvhwdata *hwdata;
   118 
   119     /* Special flags */
   120     Uint32 hw_overlay:1;        /* Flag: This overlay hardware accelerated? */
   121     Uint32 UnusedBits:31;
   122 } SDL_Overlay;
   123 
   124 typedef enum
   125 {
   126     SDL_GRAB_QUERY = -1,
   127     SDL_GRAB_OFF = 0,
   128     SDL_GRAB_ON = 1
   129 } SDL_GrabMode;
   130 
   131 struct SDL_SysWMinfo;
   132 
   133 /* Key codes
   134    Note that the correspondences defined here are approximate at best because
   135    the meaning of the event structure field that carries these values has
   136    changed: in SDL 1.2, it referred to the key's label in the current keyboard
   137    layout, whereas now it refers to a specific physical key on the keyboard,
   138    regardless of the keyboard layout setting.
   139    To get comparable behavior to SDL 1.2, code that uses any of the codes below
   140    in ways like "if (somekey == SDLK_EXCLAIM)" should be changed to the
   141    equivalent of "if (SDL_GetLayoutKey(somekey) == '!')".
   142  */
   143 
   144 /* These key constants were renamed for clarity or consistence. */
   145 #define SDLK_QUOTE SDLK_APOSTROPHE
   146 #define SDLK_MINUS SDLK_HYPHENMINUS
   147 #define SDLK_BACKQUOTE SDLK_GRAVE
   148 #define SDLK_a SDLK_A
   149 #define SDLK_b SDLK_B
   150 #define SDLK_c SDLK_C
   151 #define SDLK_d SDLK_D
   152 #define SDLK_e SDLK_E
   153 #define SDLK_f SDLK_F
   154 #define SDLK_g SDLK_G
   155 #define SDLK_h SDLK_H
   156 #define SDLK_i SDLK_I
   157 #define SDLK_j SDLK_J
   158 #define SDLK_k SDLK_K
   159 #define SDLK_l SDLK_L
   160 #define SDLK_m SDLK_M
   161 #define SDLK_n SDLK_N
   162 #define SDLK_o SDLK_O
   163 #define SDLK_p SDLK_P
   164 #define SDLK_q SDLK_Q
   165 #define SDLK_r SDLK_R
   166 #define SDLK_s SDLK_S
   167 #define SDLK_t SDLK_T
   168 #define SDLK_u SDLK_U
   169 #define SDLK_v SDLK_V
   170 #define SDLK_w SDLK_W
   171 #define SDLK_x SDLK_X
   172 #define SDLK_y SDLK_Y
   173 #define SDLK_z SDLK_Z
   174 #define SDLK_KP0 SDLK_KP_0
   175 #define SDLK_KP1 SDLK_KP_1
   176 #define SDLK_KP2 SDLK_KP_2
   177 #define SDLK_KP3 SDLK_KP_3
   178 #define SDLK_KP4 SDLK_KP_4
   179 #define SDLK_KP5 SDLK_KP_5
   180 #define SDLK_KP6 SDLK_KP_6
   181 #define SDLK_KP7 SDLK_KP_7
   182 #define SDLK_KP8 SDLK_KP_8
   183 #define SDLK_KP9 SDLK_KP_9
   184 #define SDLK_NUMLOCK SDLK_KP_NUMLOCKCLEAR
   185 #define SDLK_SCROLLOCK SDLK_SCROLLLOCK
   186 #define SDLK_PRINT SDLK_PRINTSCREEN
   187 
   188 /* These key constants are obsoleted by the new keyboard handling,
   189    their definitions here correspond to how they appear on a US
   190    keyboard. */
   191 
   192 #define SDLK_EXCLAIM SDLK_1
   193 #define SDLK_QUOTEDBL SDLK_APOSTROPHE
   194 #define SDLK_HASH SDLK_3
   195 #define SDLK_DOLLAR SDLK_4
   196 #define SDLK_AMPERSAND SDLK_7
   197 #define SDLK_LEFTPAREN SDLK_9
   198 #define SDLK_RIGHTPAREN SDLK_0
   199 #define SDLK_ASTERISK SDLK_8
   200 #define SDLK_PLUS SDLK_EQUALS
   201 #define SDLK_COLON SDLK_SEMICOLON
   202 #define SDLK_LESS SDLK_COMMA
   203 #define SDLK_GREATER SDLK_PERIOD
   204 #define SDLK_QUESTION SDLK_SLASH
   205 #define SDLK_AT SDLK_2
   206 #define SDLK_CARET SDLK_6
   207 #define SDLK_UNDERSCORE SDLK_HYPHENMINUS
   208 
   209 /* These keys don't appear in the USB specification (or at least not under those names). I'm unsure if the following assignments make sense or if these codes should be defined as actual additional SDLK_ constants. */
   210 #define SDLK_LSUPER SDLK_LMETA
   211 #define SDLK_RSUPER SDLK_RMETA
   212 #define SDLK_COMPOSE SDLK_APPLICATION
   213 #define SDLK_BREAK SDLK_STOP
   214 #define SDLK_EURO SDLK_2
   215 
   216 
   217 #define SDL_SetModuleHandle(x)
   218 #define SDL_AllocSurface    SDL_CreateRGBSurface
   219 
   220 extern DECLSPEC const SDL_version *SDLCALL SDL_Linked_Version(void);
   221 extern DECLSPEC char *SDLCALL SDL_AudioDriverName(char *namebuf, int maxlen);
   222 extern DECLSPEC char *SDLCALL SDL_VideoDriverName(char *namebuf, int maxlen);
   223 extern DECLSPEC const SDL_VideoInfo *SDLCALL SDL_GetVideoInfo(void);
   224 extern DECLSPEC int SDLCALL SDL_VideoModeOK(int width, int height, int bpp,
   225                                             Uint32 flags);
   226 extern DECLSPEC SDL_Rect **SDLCALL SDL_ListModes(SDL_PixelFormat * format,
   227                                                  Uint32 flags);
   228 extern DECLSPEC SDL_Surface *SDLCALL SDL_SetVideoMode(int width, int height,
   229                                                       int bpp, Uint32 flags);
   230 extern DECLSPEC SDL_Surface *SDLCALL SDL_GetVideoSurface(void);
   231 extern DECLSPEC void SDLCALL SDL_UpdateRects(SDL_Surface * screen,
   232                                              int numrects, SDL_Rect * rects);
   233 extern DECLSPEC void SDLCALL SDL_UpdateRect(SDL_Surface * screen, Sint32 x,
   234                                             Sint32 y, Uint32 w, Uint32 h);
   235 extern DECLSPEC int SDLCALL SDL_Flip(SDL_Surface * screen);
   236 extern DECLSPEC int SDLCALL SDL_SetAlpha(SDL_Surface * surface, Uint32 flag,
   237                                          Uint8 alpha);
   238 extern DECLSPEC SDL_Surface *SDLCALL SDL_DisplayFormat(SDL_Surface * surface);
   239 extern DECLSPEC SDL_Surface *SDLCALL SDL_DisplayFormatAlpha(SDL_Surface *
   240                                                             surface);
   241 extern DECLSPEC void SDLCALL SDL_WM_SetCaption(const char *title,
   242                                                const char *icon);
   243 extern DECLSPEC void SDLCALL SDL_WM_GetCaption(const char **title,
   244                                                const char **icon);
   245 extern DECLSPEC void SDLCALL SDL_WM_SetIcon(SDL_Surface * icon, Uint8 * mask);
   246 extern DECLSPEC int SDLCALL SDL_WM_IconifyWindow(void);
   247 extern DECLSPEC int SDLCALL SDL_WM_ToggleFullScreen(SDL_Surface * surface);
   248 extern DECLSPEC SDL_GrabMode SDLCALL SDL_WM_GrabInput(SDL_GrabMode mode);
   249 extern DECLSPEC int SDLCALL SDL_SetPalette(SDL_Surface * surface, int flags,
   250                                            const SDL_Color * colors,
   251                                            int firstcolor, int ncolors);
   252 extern DECLSPEC int SDLCALL SDL_SetColors(SDL_Surface * surface,
   253                                           const SDL_Color * colors,
   254                                           int firstcolor, int ncolors);
   255 extern DECLSPEC int SDLCALL SDL_GetWMInfo(struct SDL_SysWMinfo *info);
   256 extern DECLSPEC Uint8 SDLCALL SDL_GetAppState(void);
   257 extern DECLSPEC void SDLCALL SDL_WarpMouse(Uint16 x, Uint16 y);
   258 extern DECLSPEC SDL_Overlay *SDLCALL SDL_CreateYUVOverlay(int width,
   259                                                           int height,
   260                                                           Uint32 format,
   261                                                           SDL_Surface *
   262                                                           display);
   263 extern DECLSPEC int SDLCALL SDL_LockYUVOverlay(SDL_Overlay * overlay);
   264 extern DECLSPEC void SDLCALL SDL_UnlockYUVOverlay(SDL_Overlay * overlay);
   265 extern DECLSPEC int SDLCALL SDL_DisplayYUVOverlay(SDL_Overlay * overlay,
   266                                                   SDL_Rect * dstrect);
   267 extern DECLSPEC void SDLCALL SDL_FreeYUVOverlay(SDL_Overlay * overlay);
   268 extern DECLSPEC void SDLCALL SDL_GL_SwapBuffers(void);
   269 extern DECLSPEC int SDLCALL SDL_EnableKeyRepeat(int delay, int interval);
   270 extern DECLSPEC void SDLCALL SDL_GetKeyRepeat(int *delay, int *interval);
   271 
   272 /* Ends C function definitions when using C++ */
   273 #ifdef __cplusplus
   274 /* *INDENT-OFF* */
   275 }
   276 /* *INDENT-ON* */
   277 #endif
   278 #include "close_code.h"
   279 
   280 #endif /* _SDL_compat_h */
   281 
   282 /* vi: set ts=4 sw=4 expandtab: */