Changeset 171


Ignore:
Timestamp:
07/18/13 00:50:12 (12 years ago)
Author:
epyon
Message:
  • sdl - full 2.0 version implemented in the same header
  • sdl - nova fully runs on SDL 2.0 *also*
Location:
trunk
Files:
2 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/nv/common.hh

    r123 r171  
    122122#endif
    123123
     124#define NV_UNUSED(x) (void)(x)
    124125#define NV_ASSERT(cond, msg) assert( (cond) && msg )
    125126#define NV_THROW(eobj, ...) { \
  • trunk/nv/gl/gl_context.hh

    r157 r171  
    2020        {
    2121        public:
    22                 gl_context( device* a_device );
     22                gl_context( device* a_device, void* a_win_handle );
     23                ~gl_context();
    2324                virtual void clear( const clear_state& cs );
    2425                // temporary
     
    4546                float m_clear_depth;
    4647                int   m_clear_stencil;
     48                void* m_handle;
    4749        };
    4850
  • trunk/nv/gl/gl_window.hh

    r121 r171  
    3939                uint16      m_height;
    4040                string      m_title;
    41                 void*       m_screen;
     41                void*       m_handle;
    4242                gl_context* m_context;
     43
    4344        };
    4445
  • trunk/nv/lib/detail/sdl_functions.inc

    r168 r171  
    88/* SDL_rwops.h functions */
    99NV_SDL_FUN( SDL_RWops *, SDL_RWFromFile, (const char *file, const char *mode) );
    10 NV_SDL_FUN( SDL_RWops *, SDL_RWFromFP, (FILE *fp, int autoclose) );
     10NV_SDL_FUN( SDL_RWops *, SDL_RWFromFP, (FILE *fp, SDL_bool autoclose) );
    1111NV_SDL_FUN( SDL_RWops *, SDL_RWFromMem, (void *mem, int size) );
    1212NV_SDL_FUN( SDL_RWops *, SDL_RWFromConstMem, (const void *mem, int size) );
     
    2626NV_SDL_FUN( int, SDL_WriteBE64, (SDL_RWops *dst, Uint64 value) );
    2727
    28 /* SDL_video.h defines */
    29 NV_SDL_FUN( int, SDL_VideoInit, (const char *driver_name, Uint32 flags) );
    30 NV_SDL_FUN( void, SDL_VideoQuit, (void) );
    31 NV_SDL_FUN( char *, SDL_VideoDriverName, (char *namebuf, int maxlen) );
    32 NV_SDL_FUN( SDL_Surface *, SDL_GetVideoSurface, (void) );
    33 NV_SDL_FUN( const SDL_VideoInfo *, SDL_GetVideoInfo, (void) );
    34 NV_SDL_FUN( int, SDL_VideoModeOK, (int width, int height, int bpp, Uint32 flags) );
    35 NV_SDL_FUN( SDL_Rect **, SDL_ListModes, (SDL_PixelFormat *format, Uint32 flags) );
    36 NV_SDL_FUN( SDL_Surface *, SDL_SetVideoMode, (int width, int height, int bpp, Uint32 flags) );
    37 NV_SDL_FUN( void, SDL_UpdateRects, (SDL_Surface *screen, int numrects, SDL_Rect *rects) );
    38 NV_SDL_FUN( void, SDL_UpdateRect, (SDL_Surface *screen, Sint32 x, Sint32 y, Uint32 w, Uint32 h) );
    39 NV_SDL_FUN( int, SDL_Flip, (SDL_Surface *screen) );
    40 NV_SDL_FUN( int, SDL_SetGamma, (float red, float green, float blue) );
    41 NV_SDL_FUN( int, SDL_SetGammaRamp, (const Uint16 *red, const Uint16 *green, const Uint16 *blue) );
    42 NV_SDL_FUN( int, SDL_GetGammaRamp, (Uint16 *red, Uint16 *green, Uint16 *blue) );
    43 NV_SDL_FUN( int, SDL_SetColors, (SDL_Surface *surface, SDL_Color *colors, int firstcolor, int ncolors) );
    44 NV_SDL_FUN( int, SDL_SetPalette, (SDL_Surface *surface, int flags, SDL_Color *colors, int firstcolor, int ncolors) );
    45 NV_SDL_FUN( Uint32, SDL_MapRGB, (const SDL_PixelFormat * const format, const Uint8 r, const Uint8 g, const Uint8 b) );
    46 NV_SDL_FUN( Uint32, SDL_MapRGBA, (const SDL_PixelFormat * const format, const Uint8 r, const Uint8 g, const Uint8 b, const Uint8 a) );
    47 NV_SDL_FUN( void, SDL_GetRGB, (Uint32 pixel, const SDL_PixelFormat * const fmt, Uint8 *r, Uint8 *g, Uint8 *b) );
    48 NV_SDL_FUN( void, SDL_GetRGBA, (Uint32 pixel,   const SDL_PixelFormat * const fmt, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a) );
    49 NV_SDL_FUN( SDL_Surface *, SDL_CreateRGBSurface, (Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask) );
    50 NV_SDL_FUN( SDL_Surface *, SDL_CreateRGBSurfaceFrom, (void *pixels, int width, int height, int depth, int pitch, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask) );
    51 NV_SDL_FUN( void, SDL_FreeSurface, (SDL_Surface *surface) );
    52 NV_SDL_FUN( int, SDL_LockSurface, (SDL_Surface *surface) );
    53 NV_SDL_FUN( void, SDL_UnlockSurface, (SDL_Surface *surface) );
    54 NV_SDL_FUN( SDL_Surface *, SDL_LoadBMP_RW, (SDL_RWops *src, int freesrc) );
    55 NV_SDL_FUN( int, SDL_SaveBMP_RW, (SDL_Surface *surface, SDL_RWops *dst, int freedst) );
    56 NV_SDL_FUN( int, SDL_SetColorKey, (SDL_Surface *surface, Uint32 flag, Uint32 key) );
    57 NV_SDL_FUN( int, SDL_SetAlpha, (SDL_Surface *surface, Uint32 flag, Uint8 alpha) );
    58 NV_SDL_FUN( SDL_bool, SDL_SetClipRect, (SDL_Surface *surface, const SDL_Rect *rect) );
    59 NV_SDL_FUN( void, SDL_GetClipRect, (SDL_Surface *surface, SDL_Rect *rect) );
    60 NV_SDL_FUN( SDL_Surface *, SDL_ConvertSurface, (SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags) );
    61 NV_SDL_FUN( int, SDL_UpperBlit, (SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect) );
    62 NV_SDL_FUN( int, SDL_LowerBlit, (SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect) );
    63 NV_SDL_FUN( int, SDL_FillRect, (SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color) );
    64 NV_SDL_FUN( SDL_Surface *, SDL_DisplayFormat, (SDL_Surface *surface) );
    65 NV_SDL_FUN( SDL_Surface *, SDL_DisplayFormatAlpha, (SDL_Surface *surface) );
    66 NV_SDL_FUN( int, SDL_GL_LoadLibrary, (const char *path) );
    67 NV_SDL_FUN( void *, SDL_GL_GetProcAddress, (const char* proc) );
    68 NV_SDL_FUN( int, SDL_GL_SetAttribute, (SDL_GLattr attr, int value) );
    69 NV_SDL_FUN( int, SDL_GL_GetAttribute, (SDL_GLattr attr, int* value) );
    70 NV_SDL_FUN( void, SDL_GL_SwapBuffers, (void) );
    71 NV_SDL_FUN( void, SDL_GL_UpdateRects, (int numrects, SDL_Rect* rects) );
    72 NV_SDL_FUN( void, SDL_GL_Lock, (void) );
    73 NV_SDL_FUN( void, SDL_GL_Unlock, (void) );
    74 NV_SDL_FUN( void, SDL_WM_SetCaption, (const char *title, const char *icon) );
    75 NV_SDL_FUN( void, SDL_WM_GetCaption, (char **title, char **icon) );
    76 NV_SDL_FUN( void, SDL_WM_SetIcon, (SDL_Surface *icon, Uint8 *mask) );
    77 NV_SDL_FUN( int, SDL_WM_IconifyWindow, (void) );
    78 NV_SDL_FUN( int, SDL_WM_ToggleFullScreen, (SDL_Surface *surface) );
    79 NV_SDL_FUN( SDL_GrabMode, SDL_WM_GrabInput, (SDL_GrabMode mode) );
    80 
    8128/* SDL_audio.h functions */
    8229NV_SDL_FUN( int, SDL_AudioInit, (const char *driver_name) );
    8330NV_SDL_FUN( void, SDL_AudioQuit, (void) );
    84 NV_SDL_FUN( char *, SDL_AudioDriverName, (char *namebuf, int maxlen) );
    8531NV_SDL_FUN( int, SDL_OpenAudio, (SDL_AudioSpec *desired, SDL_AudioSpec *obtained) );
    8632NV_SDL_FUN( SDL_audiostatus, SDL_GetAudioStatus, (void) );
     
    8834NV_SDL_FUN( SDL_AudioSpec *, SDL_LoadWAV_RW, (SDL_RWops *src, int freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len) );
    8935NV_SDL_FUN( void, SDL_FreeWAV, (Uint8 *audio_buf) );
    90 NV_SDL_FUN( int, SDL_BuildAudioCVT, (SDL_AudioCVT *cvt, Uint16 src_format, Uint8 src_channels, int src_rate, Uint16 dst_format, Uint8 dst_channels, int dst_rate) );
     36NV_SDL_FUN( int, SDL_BuildAudioCVT, (SDL_AudioCVT *cvt, SDL_AudioFormat src_format, Uint8 src_channels, int src_rate, SDL_AudioFormat dst_format, Uint8 dst_channels, int dst_rate) );
    9137NV_SDL_FUN( int, SDL_ConvertAudio, (SDL_AudioCVT *cvt) );
    9238NV_SDL_FUN( void, SDL_MixAudio, (Uint8 *dst, const Uint8 *src, Uint32 len, int volume) );
     
    9844NV_SDL_FUN( SDL_bool, SDL_HasRDTSC, (void) );
    9945NV_SDL_FUN( SDL_bool, SDL_HasMMX, (void) );
    100 NV_SDL_FUN( SDL_bool, SDL_HasMMXExt, (void) );
    10146NV_SDL_FUN( SDL_bool, SDL_Has3DNow, (void) );
    102 NV_SDL_FUN( SDL_bool, SDL_Has3DNowExt, (void) );
    10347NV_SDL_FUN( SDL_bool, SDL_HasSSE, (void) );
    10448NV_SDL_FUN( SDL_bool, SDL_HasSSE2, (void) );
     
    10650
    10751/* SDL_error.h functions */
    108 NV_SDL_FUN( void, SDL_SetError, (const char *fmt, ...) );
    10952NV_SDL_FUN( char *, SDL_GetError, (void) );
    11053NV_SDL_FUN( void, SDL_ClearError, (void) );
    111 NV_SDL_FUN( void, SDL_Error, (SDL_errorcode code) );
    11254
    113 /* SDL_active.h functions */
    114 NV_SDL_FUN( Uint8, SDL_GetAppState, (void) );
    115 
    116 /* SDL_keyboard.h functions */
    117 NV_SDL_FUN( int, SDL_EnableUNICODE, (int enable) );
    118 NV_SDL_FUN( int, SDL_EnableKeyRepeat, (int delay, int interval) );
    119 NV_SDL_FUN( void, SDL_GetKeyRepeat, (int *delay, int *interval) );
    120 NV_SDL_FUN( Uint8 *, SDL_GetKeyState, (int *numkeys) );
    121 NV_SDL_FUN( SDLMod, SDL_GetModState, (void) );
    122 NV_SDL_FUN( void, SDL_SetModState, (SDLMod modstate) );
    123 NV_SDL_FUN( char *, SDL_GetKeyName, (SDLKey key) );
    124  
    12555/* SDL_mouse.h functions */
    126 NV_SDL_FUN( Uint8, SDL_GetMouseState, (int *x, int *y) );
    127 NV_SDL_FUN( Uint8, SDL_GetRelativeMouseState, (int *x, int *y) );
    128 NV_SDL_FUN( void, SDL_WarpMouse, (Uint16 x, Uint16 y) );
    129 NV_SDL_FUN( SDL_Cursor *, SDL_CreateCursor, (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y) );
    13056NV_SDL_FUN( void, SDL_SetCursor, (SDL_Cursor *cursor) );
    13157NV_SDL_FUN( SDL_Cursor *, SDL_GetCursor, (void) );
     
    13561/* SDL_joystick.h functions */
    13662NV_SDL_FUN( int, SDL_NumJoysticks, (void) );
    137 NV_SDL_FUN( const char *, SDL_JoystickName, (int device_index) );
    138 NV_SDL_FUN( SDL_Joystick *, SDL_JoystickOpen, (int device_index) );
    139 NV_SDL_FUN( int, SDL_JoystickOpened, (int device_index) );
    140 NV_SDL_FUN( int, SDL_JoystickIndex, (SDL_Joystick *joystick) );
    14163NV_SDL_FUN( int, SDL_JoystickNumAxes, (SDL_Joystick *joystick) );
    14264NV_SDL_FUN( int, SDL_JoystickNumBalls, (SDL_Joystick *joystick) );
     
    14466NV_SDL_FUN( int, SDL_JoystickNumButtons, (SDL_Joystick *joystick) );
    14567NV_SDL_FUN( void, SDL_JoystickUpdate, (void) );
     68NV_SDL_FUN( SDL_Joystick *, SDL_JoystickOpen, (int device_index) );
    14669NV_SDL_FUN( int, SDL_JoystickEventState, (int state) );
    14770NV_SDL_FUN( Sint16, SDL_JoystickGetAxis, (SDL_Joystick *joystick, int axis) );
     
    15477NV_SDL_FUN( Uint32, SDL_GetTicks, (void) );
    15578NV_SDL_FUN( void, SDL_Delay, (Uint32 ms) );
    156 NV_SDL_FUN( int, SDL_SetTimer, (Uint32 interval, SDL_TimerCallback callback) );
    157 NV_SDL_FUN( SDL_TimerID, SDL_AddTimer, (Uint32 interval, SDL_NewTimerCallback callback, void *param) );
     79NV_SDL_FUN( SDL_TimerID, SDL_AddTimer, (Uint32 interval, SDL_TimerCallback callback, void *param) );
    15880NV_SDL_FUN( SDL_bool, SDL_RemoveTimer, (SDL_TimerID t) );
    159 
    160 /* SDL_version.h functions */
    161 NV_SDL_FUN( const SDL_version *, SDL_Linked_Version, (void) );
    16281
    16382/* SDL_event.h functions */
    16483NV_SDL_FUN( void, SDL_PumpEvents, (void) );
    165 NV_SDL_FUN( int, SDL_PeepEvents, (SDL_Event *events, int numevents, SDL_eventaction action, Uint32 mask) );
    16684NV_SDL_FUN( int, SDL_PollEvent, (SDL_Event *event) );
    16785NV_SDL_FUN( int, SDL_WaitEvent, (SDL_Event *event) );
    16886NV_SDL_FUN( int, SDL_PushEvent, (SDL_Event *event) );
    169 NV_SDL_FUN( void, SDL_SetEventFilter, (SDL_EventFilter filter) );
    170 NV_SDL_FUN( SDL_EventFilter, SDL_GetEventFilter, (void) );
    171 NV_SDL_FUN( Uint8, SDL_EventState, (Uint8 etype, int state) );
     87
     88/* SDL_video/SDL_surface */
     89NV_SDL_FUN( SDL_Surface *, SDL_CreateRGBSurface, (Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask) );
     90NV_SDL_FUN( SDL_Surface *, SDL_CreateRGBSurfaceFrom, (void *pixels, int width, int height, int depth, int pitch, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask) );
     91NV_SDL_FUN( void , SDL_FreeSurface, (SDL_Surface * surface) );
     92NV_SDL_FUN( int , SDL_LockSurface, (SDL_Surface * surface) );
     93NV_SDL_FUN( void , SDL_UnlockSurface, (SDL_Surface * surface) );
     94NV_SDL_FUN( int, SDL_SaveBMP_RW, (SDL_Surface *surface, SDL_RWops *dst, int freedst) );
     95NV_SDL_FUN( SDL_Surface *, SDL_LoadBMP_RW, (SDL_RWops *src, int freesrc) );
     96NV_SDL_FUN( SDL_bool , SDL_SetClipRect, (SDL_Surface * surface,const SDL_Rect * rect) );
     97NV_SDL_FUN( void , SDL_GetClipRect, (SDL_Surface * surface,SDL_Rect * rect) );
     98NV_SDL_FUN( SDL_Surface *, SDL_ConvertSurface, (SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags) );
     99
     100NV_SDL_FUN( int , SDL_GL_LoadLibrary, (const char *path) );
     101NV_SDL_FUN( void *, SDL_GL_GetProcAddress, (const char *proc) );
     102NV_SDL_FUN( int, SDL_GL_SetAttribute, (SDL_GLattr attr, int value) );
     103NV_SDL_FUN( int, SDL_GL_GetAttribute, (SDL_GLattr attr, int* value) );
     104
  • trunk/nv/lib/detail/sdl_image_functions.inc

    r168 r171  
    22NV_SDL_FUN( int, IMG_Init, (int flags) );
    33NV_SDL_FUN( void, IMG_Quit, (void) );
    4 NV_SDL_FUN( SDL_Surface *, IMG_LoadTyped_RW, (SDL_RWops *src, int freesrc, char *etype) );
    54NV_SDL_FUN( SDL_Surface *, IMG_Load, (const char *file) );
    65NV_SDL_FUN( SDL_Surface *, IMG_Load_RW, (SDL_RWops *src, int freesrc) );
     6
    77NV_SDL_FUN( int, IMG_isICO, (SDL_RWops *src) );
    88NV_SDL_FUN( int, IMG_isCUR, (SDL_RWops *src) );
     
    2020NV_SDL_FUN( SDL_Surface *, IMG_LoadTGA_RW, (SDL_RWops *src) );
    2121NV_SDL_FUN( SDL_Surface *, IMG_LoadTIF_RW, (SDL_RWops *src) );
     22
     23#if NV_SDL_VERSION == NV_SDL_20
     24NV_SDL_FUN( int , IMG_SavePNG,(SDL_Surface *surface, const char *file) );
     25NV_SDL_FUN( int , IMG_SavePNG_RW,(SDL_Surface *surface, SDL_RWops *dst, int freedst) );
     26NV_SDL_FUN( SDL_Texture *, IMG_LoadTexture,(SDL_Renderer *renderer, const char *file) );
     27NV_SDL_FUN( SDL_Texture *, IMG_LoadTexture_RW,(SDL_Renderer *renderer, SDL_RWops *src, int freesrc) );
     28NV_SDL_FUN( SDL_Texture *, IMG_LoadTextureTyped_RW,(SDL_Renderer *renderer, SDL_RWops *src, int freesrc, const char *type) );
     29NV_SDL_FUN( SDL_Surface *, IMG_LoadTyped_RW, (SDL_RWops *src, int freesrc, const char *etype) );
     30#else
     31NV_SDL_FUN( SDL_Surface *, IMG_LoadTyped_RW, (SDL_RWops *src, int freesrc, char *etype) );
     32#endif
  • trunk/nv/lib/sdl.hh

    r170 r171  
    6464        SDL_TRUE  = 1
    6565} SDL_bool;
     66
     67static_assert(sizeof(SDL_bool) == sizeof(int), "SDL_bool has wrong size!");
    6668
    6769typedef int8_t          Sint8;
     
    107109        )
    108110#endif
     111
     112#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
     113#define SDL_static_cast(type, expression) static_cast<type>(expression)
     114#define SDL_const_cast(type, expression) const_cast<type>(expression)
     115
     116#define SDL_FOURCC(A, B, C, D) \
     117        ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \
     118        (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \
     119        (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \
     120        (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))
     121
    109122/* SDL_error.h defines */
    110123typedef enum {
     
    116129        SDL_LASTERROR
    117130} SDL_errorcode;
    118 
    119 #if NV_SDL_VERSION == NV_SDL_20
    120 #define SDL_RWOPS_UNKNOWN   0
    121 #define SDL_RWOPS_WINFILE   1
    122 #define SDL_RWOPS_STDFILE   2
    123 #define SDL_RWOPS_JNIFILE   3
    124 #define SDL_RWOPS_MEMORY    4
    125 #define SDL_RWOPS_MEMORY_RO 5
    126 #endif
    127131
    128132/* SDL_rwops.h defines */
     
    214218
    215219#if NV_SDL_VERSION == NV_SDL_20
     220#define SDL_RWOPS_UNKNOWN   0
     221#define SDL_RWOPS_WINFILE   1
     222#define SDL_RWOPS_STDFILE   2
     223#define SDL_RWOPS_JNIFILE   3
     224#define SDL_RWOPS_MEMORY    4
     225#define SDL_RWOPS_MEMORY_RO 5
     226#endif
     227
     228/* SDL_pixels.h defines (2.0 only) */
     229#if NV_SDL_VERSION == NV_SDL_20
     230enum
     231{
     232        SDL_PIXELTYPE_UNKNOWN,
     233        SDL_PIXELTYPE_INDEX1,
     234        SDL_PIXELTYPE_INDEX4,
     235        SDL_PIXELTYPE_INDEX8,
     236        SDL_PIXELTYPE_PACKED8,
     237        SDL_PIXELTYPE_PACKED16,
     238        SDL_PIXELTYPE_PACKED32,
     239        SDL_PIXELTYPE_ARRAYU8,
     240        SDL_PIXELTYPE_ARRAYU16,
     241        SDL_PIXELTYPE_ARRAYU32,
     242        SDL_PIXELTYPE_ARRAYF16,
     243        SDL_PIXELTYPE_ARRAYF32
     244};
     245
     246enum
     247{
     248        SDL_BITMAPORDER_NONE,
     249        SDL_BITMAPORDER_4321,
     250        SDL_BITMAPORDER_1234
     251};
     252
     253enum
     254{
     255        SDL_PACKEDORDER_NONE,
     256        SDL_PACKEDORDER_XRGB,
     257        SDL_PACKEDORDER_RGBX,
     258        SDL_PACKEDORDER_ARGB,
     259        SDL_PACKEDORDER_RGBA,
     260        SDL_PACKEDORDER_XBGR,
     261        SDL_PACKEDORDER_BGRX,
     262        SDL_PACKEDORDER_ABGR,
     263        SDL_PACKEDORDER_BGRA
     264};
     265
     266enum
     267{
     268        SDL_ARRAYORDER_NONE,
     269        SDL_ARRAYORDER_RGB,
     270        SDL_ARRAYORDER_RGBA,
     271        SDL_ARRAYORDER_ARGB,
     272        SDL_ARRAYORDER_BGR,
     273        SDL_ARRAYORDER_BGRA,
     274        SDL_ARRAYORDER_ABGR
     275};
     276
     277enum
     278{
     279        SDL_PACKEDLAYOUT_NONE,
     280        SDL_PACKEDLAYOUT_332,
     281        SDL_PACKEDLAYOUT_4444,
     282        SDL_PACKEDLAYOUT_1555,
     283        SDL_PACKEDLAYOUT_5551,
     284        SDL_PACKEDLAYOUT_565,
     285        SDL_PACKEDLAYOUT_8888,
     286        SDL_PACKEDLAYOUT_2101010,
     287        SDL_PACKEDLAYOUT_1010102
     288};
     289
     290#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
     291
     292#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
     293        ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
     294        ((bits) << 8) | ((bytes) << 0))
     295
     296#define SDL_PIXELFLAG(X)    (((X) >> 28) & 0x0F)
     297#define SDL_PIXELTYPE(X)    (((X) >> 24) & 0x0F)
     298#define SDL_PIXELORDER(X)   (((X) >> 20) & 0x0F)
     299#define SDL_PIXELLAYOUT(X)  (((X) >> 16) & 0x0F)
     300#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
     301#define SDL_BYTESPERPIXEL(X) \
     302        (SDL_ISPIXELFORMAT_FOURCC(X) ? \
     303        ((((X) == SDL_PIXELFORMAT_YUY2) || \
     304        ((X) == SDL_PIXELFORMAT_UYVY) || \
     305        ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
     306
     307#define SDL_ISPIXELFORMAT_INDEXED(format)   \
     308        (!SDL_ISPIXELFORMAT_FOURCC(format) && \
     309        ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
     310        (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
     311        (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
     312
     313#define SDL_ISPIXELFORMAT_ALPHA(format)   \
     314        (!SDL_ISPIXELFORMAT_FOURCC(format) && \
     315        ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
     316        (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
     317        (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
     318        (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA)))
     319
     320#define SDL_ISPIXELFORMAT_FOURCC(format)    \
     321        ((format) && (SDL_PIXELFLAG(format) != 1))
     322
     323enum
     324{
     325        SDL_PIXELFORMAT_UNKNOWN,
     326        SDL_PIXELFORMAT_INDEX1LSB =
     327        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
     328        1, 0),
     329        SDL_PIXELFORMAT_INDEX1MSB =
     330        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
     331        1, 0),
     332        SDL_PIXELFORMAT_INDEX4LSB =
     333        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
     334        4, 0),
     335        SDL_PIXELFORMAT_INDEX4MSB =
     336        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
     337        4, 0),
     338        SDL_PIXELFORMAT_INDEX8 =
     339        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
     340        SDL_PIXELFORMAT_RGB332 =
     341        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
     342        SDL_PACKEDLAYOUT_332, 8, 1),
     343        SDL_PIXELFORMAT_RGB444 =
     344        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
     345        SDL_PACKEDLAYOUT_4444, 12, 2),
     346        SDL_PIXELFORMAT_RGB555 =
     347        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
     348        SDL_PACKEDLAYOUT_1555, 15, 2),
     349        SDL_PIXELFORMAT_BGR555 =
     350        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
     351        SDL_PACKEDLAYOUT_1555, 15, 2),
     352        SDL_PIXELFORMAT_ARGB4444 =
     353        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
     354        SDL_PACKEDLAYOUT_4444, 16, 2),
     355        SDL_PIXELFORMAT_RGBA4444 =
     356        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
     357        SDL_PACKEDLAYOUT_4444, 16, 2),
     358        SDL_PIXELFORMAT_ABGR4444 =
     359        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
     360        SDL_PACKEDLAYOUT_4444, 16, 2),
     361        SDL_PIXELFORMAT_BGRA4444 =
     362        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
     363        SDL_PACKEDLAYOUT_4444, 16, 2),
     364        SDL_PIXELFORMAT_ARGB1555 =
     365        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
     366        SDL_PACKEDLAYOUT_1555, 16, 2),
     367        SDL_PIXELFORMAT_RGBA5551 =
     368        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
     369        SDL_PACKEDLAYOUT_5551, 16, 2),
     370        SDL_PIXELFORMAT_ABGR1555 =
     371        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
     372        SDL_PACKEDLAYOUT_1555, 16, 2),
     373        SDL_PIXELFORMAT_BGRA5551 =
     374        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
     375        SDL_PACKEDLAYOUT_5551, 16, 2),
     376        SDL_PIXELFORMAT_RGB565 =
     377        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
     378        SDL_PACKEDLAYOUT_565, 16, 2),
     379        SDL_PIXELFORMAT_BGR565 =
     380        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
     381        SDL_PACKEDLAYOUT_565, 16, 2),
     382        SDL_PIXELFORMAT_RGB24 =
     383        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
     384        24, 3),
     385        SDL_PIXELFORMAT_BGR24 =
     386        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
     387        24, 3),
     388        SDL_PIXELFORMAT_RGB888 =
     389        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
     390        SDL_PACKEDLAYOUT_8888, 24, 4),
     391        SDL_PIXELFORMAT_RGBX8888 =
     392        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
     393        SDL_PACKEDLAYOUT_8888, 24, 4),
     394        SDL_PIXELFORMAT_BGR888 =
     395        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
     396        SDL_PACKEDLAYOUT_8888, 24, 4),
     397        SDL_PIXELFORMAT_BGRX8888 =
     398        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
     399        SDL_PACKEDLAYOUT_8888, 24, 4),
     400        SDL_PIXELFORMAT_ARGB8888 =
     401        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
     402        SDL_PACKEDLAYOUT_8888, 32, 4),
     403        SDL_PIXELFORMAT_RGBA8888 =
     404        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
     405        SDL_PACKEDLAYOUT_8888, 32, 4),
     406        SDL_PIXELFORMAT_ABGR8888 =
     407        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
     408        SDL_PACKEDLAYOUT_8888, 32, 4),
     409        SDL_PIXELFORMAT_BGRA8888 =
     410        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
     411        SDL_PACKEDLAYOUT_8888, 32, 4),
     412        SDL_PIXELFORMAT_ARGB2101010 =
     413        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
     414        SDL_PACKEDLAYOUT_2101010, 32, 4),
     415
     416        SDL_PIXELFORMAT_YV12 = SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),
     417        SDL_PIXELFORMAT_IYUV = SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),
     418        SDL_PIXELFORMAT_YUY2 = SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),
     419        SDL_PIXELFORMAT_UYVY = SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),
     420        SDL_PIXELFORMAT_YVYU = SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U')
     421};
     422
     423typedef enum
     424{
     425        SDL_POWERSTATE_UNKNOWN,
     426        SDL_POWERSTATE_ON_BATTERY,
     427        SDL_POWERSTATE_NO_BATTERY,
     428        SDL_POWERSTATE_CHARGING,
     429        SDL_POWERSTATE_CHARGED
     430} SDL_PowerState;
     431#endif
     432
     433#if NV_SDL_VERSION == NV_SDL_20
     434
     435typedef enum
     436{
     437        SDL_BLENDMODE_NONE = 0x00000000,
     438        SDL_BLENDMODE_BLEND = 0x00000001,
     439        SDL_BLENDMODE_ADD = 0x00000002,
     440        SDL_BLENDMODE_MOD = 0x00000004 
     441} SDL_BlendMode;
     442
    216443typedef struct SDL_PixelFormat {
    217444        Uint32 format;
     
    362589typedef enum
    363590{
     591    SDL_RENDERER_SOFTWARE = 0x00000001,
     592    SDL_RENDERER_ACCELERATED = 0x00000002,
     593    SDL_RENDERER_PRESENTVSYNC = 0x00000004,
     594    SDL_RENDERER_TARGETTEXTURE = 0x00000008
     595} SDL_RendererFlags;
     596
     597typedef struct SDL_RendererInfo
     598{
     599        const char *name;
     600        Uint32 flags;
     601        Uint32 num_texture_formats;
     602        Uint32 texture_formats[16];
     603        int max_texture_width;
     604        int max_texture_height;
     605} SDL_RendererInfo;
     606
     607typedef enum
     608{
     609        SDL_TEXTUREACCESS_STATIC,
     610        SDL_TEXTUREACCESS_STREAMING,
     611        SDL_TEXTUREACCESS_TARGET
     612} SDL_TextureAccess;
     613
     614typedef enum
     615{
     616        SDL_TEXTUREMODULATE_NONE = 0x00000000,
     617        SDL_TEXTUREMODULATE_COLOR = 0x00000001,
     618        SDL_TEXTUREMODULATE_ALPHA = 0x00000002
     619} SDL_TextureModulate;
     620
     621typedef enum
     622{
     623        SDL_FLIP_NONE = 0x00000000,
     624        SDL_FLIP_HORIZONTAL = 0x00000001,
     625        SDL_FLIP_VERTICAL = 0x00000002
     626} SDL_RendererFlip;
     627
     628struct SDL_Renderer;
     629typedef struct SDL_Renderer SDL_Renderer;
     630
     631struct SDL_Texture;
     632typedef struct SDL_Texture SDL_Texture;
     633
     634#define SDL_NONSHAPEABLE_WINDOW -1
     635#define SDL_INVALID_SHAPE_ARGUMENT -2
     636#define SDL_WINDOW_LACKS_SHAPE -3
     637
     638typedef enum {
     639        ShapeModeDefault,
     640        ShapeModeBinarizeAlpha,
     641        ShapeModeReverseBinarizeAlpha,
     642        ShapeModeColorKey
     643} WindowShapeMode;
     644
     645typedef union {
     646        Uint8 binarizationCutoff;
     647        SDL_Color colorKey;
     648} SDL_WindowShapeParams;
     649
     650typedef struct SDL_WindowShapeMode {
     651        WindowShapeMode mode;
     652        SDL_WindowShapeParams parameters;
     653} SDL_WindowShapeMode;
     654
     655typedef Sint64 SDL_TouchID;
     656typedef Sint64 SDL_FingerID;
     657
     658typedef struct SDL_Finger
     659{
     660        SDL_FingerID id;
     661        float x;
     662        float y;
     663        float pressure;
     664} SDL_Finger;
     665
     666#define SDL_TOUCH_MOUSEID ((Uint32)-1)
     667
     668typedef enum
     669{
    364670    SDL_WINDOW_FULLSCREEN = 0x00000001,
    365671    SDL_WINDOW_OPENGL = 0x00000002,
     
    500806typedef void (NV_SDL_APIENTRY * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, SDL_AudioFormat format);
    501807
     808typedef Uint32 SDL_AudioDeviceID;
     809
    502810typedef struct SDL_AudioSpec
    503811{
     
    543851
    544852#define SDL_MIX_MAXVOLUME 128
     853
     854#if NV_SDL_VERSION == NV_SDL_20
     855/* SDL_hints.h defines */
     856#define SDL_HINT_FRAMEBUFFER_ACCELERATION   "SDL_FRAMEBUFFER_ACCELERATION"
     857#define SDL_HINT_RENDER_DRIVER              "SDL_RENDER_DRIVER"
     858#define SDL_HINT_RENDER_OPENGL_SHADERS      "SDL_RENDER_OPENGL_SHADERS"
     859#define SDL_HINT_RENDER_SCALE_QUALITY       "SDL_RENDER_SCALE_QUALITY"
     860#define SDL_HINT_RENDER_VSYNC               "SDL_RENDER_VSYNC"
     861#define SDL_HINT_VIDEO_X11_XVIDMODE         "SDL_VIDEO_X11_XVIDMODE"
     862#define SDL_HINT_VIDEO_X11_XINERAMA         "SDL_VIDEO_X11_XINERAMA"
     863#define SDL_HINT_VIDEO_X11_XRANDR           "SDL_VIDEO_X11_XRANDR"
     864#define SDL_HINT_GRAB_KEYBOARD              "SDL_GRAB_KEYBOARD"
     865#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS   "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
     866#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
     867#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
     868#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
     869#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
     870#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
     871#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
     872typedef enum
     873{
     874    SDL_HINT_DEFAULT,
     875    SDL_HINT_NORMAL,
     876    SDL_HINT_OVERRIDE
     877} SDL_HintPriority;
     878#endif;
     879
     880#if NV_SDL_VERSION == NV_SDL_20
     881/* SDL_messagebox.h defines */
     882typedef enum
     883{
     884    SDL_MESSAGEBOX_ERROR        = 0x00000010,
     885    SDL_MESSAGEBOX_WARNING      = 0x00000020,
     886    SDL_MESSAGEBOX_INFORMATION  = 0x00000040
     887} SDL_MessageBoxFlags;
     888
     889typedef enum
     890{
     891    SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001,
     892    SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002
     893} SDL_MessageBoxButtonFlags;
     894
     895typedef struct
     896{
     897    Uint32 flags;
     898    int buttonid;
     899    const char * text;
     900} SDL_MessageBoxButtonData;
     901
     902typedef struct
     903{
     904    Uint8 r, g, b;
     905} SDL_MessageBoxColor;
     906
     907typedef enum
     908{
     909    SDL_MESSAGEBOX_COLOR_BACKGROUND,
     910    SDL_MESSAGEBOX_COLOR_TEXT,
     911    SDL_MESSAGEBOX_COLOR_BUTTON_BORDER,
     912    SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND,
     913    SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED,
     914    SDL_MESSAGEBOX_COLOR_MAX
     915} SDL_MessageBoxColorType;
     916
     917typedef struct
     918{
     919    SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];
     920} SDL_MessageBoxColorScheme;
     921
     922typedef struct SDL_Window SDL_Window;
     923
     924typedef struct
     925{
     926    Uint32 flags;
     927    SDL_Window *window;
     928    const char *title;
     929    const char *message;
     930    int numbuttons;
     931    const SDL_MessageBoxButtonData *buttons;
     932    const SDL_MessageBoxColorScheme *colorScheme;
     933} SDL_MessageBoxData;
     934#endif
     935
    545936
    546937/* SDL_active.h defines */
     
    576967} SDLMod;
    577968
     969typedef SDLMod SDL_Keymod; // 2.0
     970
    578971#define KMOD_CTRL       (KMOD_LCTRL|KMOD_RCTRL)
    579972#define KMOD_SHIFT      (KMOD_LSHIFT|KMOD_RSHIFT)
     
    595988#define SDL_ALL_HOTKEYS         0xFFFFFFFF
    596989#else
     990typedef Sint32 SDL_Keycode;
    597991typedef struct SDL_Keysym
    598992{
     
    6821076#define SDL_PRESSED     1
    6831077
     1078/* SDL_gamecontroller.h defines  (2.0 only)*/
     1079#if  NV_SDL_VERSION == NV_SDL_20
     1080struct _SDL_GameController;
     1081typedef struct _SDL_GameController SDL_GameController;
     1082
     1083typedef enum
     1084{
     1085        SDL_CONTROLLER_BINDTYPE_NONE = 0,
     1086        SDL_CONTROLLER_BINDTYPE_BUTTON,
     1087        SDL_CONTROLLER_BINDTYPE_AXIS,
     1088        SDL_CONTROLLER_BINDTYPE_HAT
     1089} SDL_GameControllerBindType;
     1090
     1091typedef struct SDL_GameControllerButtonBind
     1092{
     1093        SDL_GameControllerBindType bindType;
     1094        union
     1095        {
     1096                int button;
     1097                int axis;
     1098                struct {
     1099                        int hat;
     1100                        int hat_mask;
     1101                } hat;
     1102        } value;
     1103
     1104} SDL_GameControllerButtonBind;
     1105
     1106typedef enum
     1107{
     1108        SDL_CONTROLLER_AXIS_INVALID = -1,
     1109        SDL_CONTROLLER_AXIS_LEFTX,
     1110        SDL_CONTROLLER_AXIS_LEFTY,
     1111        SDL_CONTROLLER_AXIS_RIGHTX,
     1112        SDL_CONTROLLER_AXIS_RIGHTY,
     1113        SDL_CONTROLLER_AXIS_TRIGGERLEFT,
     1114        SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
     1115        SDL_CONTROLLER_AXIS_MAX
     1116} SDL_GameControllerAxis;
     1117
     1118typedef enum
     1119{
     1120        SDL_CONTROLLER_BUTTON_INVALID = -1,
     1121        SDL_CONTROLLER_BUTTON_A,
     1122        SDL_CONTROLLER_BUTTON_B,
     1123        SDL_CONTROLLER_BUTTON_X,
     1124        SDL_CONTROLLER_BUTTON_Y,
     1125        SDL_CONTROLLER_BUTTON_BACK,
     1126        SDL_CONTROLLER_BUTTON_GUIDE,
     1127        SDL_CONTROLLER_BUTTON_START,
     1128        SDL_CONTROLLER_BUTTON_LEFTSTICK,
     1129        SDL_CONTROLLER_BUTTON_RIGHTSTICK,
     1130        SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
     1131        SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
     1132        SDL_CONTROLLER_BUTTON_DPAD_UP,
     1133        SDL_CONTROLLER_BUTTON_DPAD_DOWN,
     1134        SDL_CONTROLLER_BUTTON_DPAD_LEFT,
     1135        SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
     1136        SDL_CONTROLLER_BUTTON_MAX
     1137} SDL_GameControllerButton;
     1138
     1139typedef Sint64 SDL_GestureID;
     1140#endif
     1141
    6841142#if NV_SDL_VERSION == NV_SDL_12
    6851143#include <nv/lib/detail/sdl_events_12.inc>
     
    6881146#endif
    6891147
     1148#if NV_SDL_VERSION == NV_SDL_20
     1149typedef int (NV_SDL_APIENTRY * SDL_EventFilter) (void *userdata, SDL_Event * event);
     1150#endif
    6901151
    6911152#define SDL_QUERY       -1
     
    7011162#define SDL_TIMESLICE           10
    7021163#define TIMER_RESOLUTION        10
    703 typedef Uint32 (NV_SDL_APIENTRY *SDL_TimerCallback)(Uint32 interval);
    704 typedef Uint32 (NV_SDL_APIENTRY *SDL_NewTimerCallback)(Uint32 interval, void *param);
     1164typedef Uint32 (NV_SDL_APIENTRY *SDL_TimerCallback)(Uint32 interval, void *param);
    7051165typedef struct _SDL_TimerID *SDL_TimerID;
    7061166#endif
     
    7291189#endif
    7301190#include <nv/lib/detail/sdl_functions.inc>
     1191#if NV_SDL_VERSION == NV_SDL_12
     1192#include <nv/lib/detail/sdl_functions_12.inc>
     1193#elif NV_SDL_VERSION == NV_SDL_20
     1194#include <nv/lib/detail/sdl_functions_20.inc>
     1195#endif
    7311196#undef NV_SDL_FUN
    7321197
  • trunk/nv/lib/sdl_image.hh

    r170 r171  
    1212
    1313#if NV_PLATFORM == NV_WINDOWS
    14 #       define NV_SDL_IMAGE_PATH "SDL_image.dll"
     14#       define NV_SDL_IMAGE_PATH_12 "SDL_image.dll"
     15#       define NV_SDL_IMAGE_PATH_20 "SDL2_image.dll"
    1516#elif NV_PLATFORM == NV_APPLE
    16 #       define NV_SDL_IMAGE_PATH "SDL_image.framework/SDL_image"
     17#       define NV_SDL_IMAGE_PATH_12 "SDL_image.framework/SDL_image"
     18#       define NV_SDL_IMAGE_PATH_20 "SDL2_image.framework/SDL_image"
    1719#else
    18 #       define NV_SDL_IMAGE_PATH "libSDL_image-1.2.so.0"
     20#       define NV_SDL_IMAGE_PATH_12 "libSDL_image-1.2.so.0"
     21#       define NV_SDL_IMAGE_PATH_20 "libSDL2_image-2.0.so.0"
     22#endif
     23
     24#if NV_SDL_VERSION == NV_SDL_12
     25#       define NV_SDL_IMAGE_PATH NV_SDL_IMAGE_PATH_12
     26#elif NV_SDL_VERSION == NV_SDL_20
     27#       define NV_SDL_IMAGE_PATH NV_SDL_IMAGE_PATH_20
     28#elif NV_SDL_VERSION == NV_SDL_C
     29#       define NV_SDL_IMAGE_PATH nullptr
     30#else
     31#       error "Unrecognized NV_SDL_VERSION!"
    1932#endif
    2033
     
    2235
    2336/** SDL_image defines */
     37#if NV_SDL_VERSION == NV_SDL_20
     38#define SDL_IMAGE_MAJOR_VERSION 2
     39#define SDL_IMAGE_MINOR_VERSION 0
     40#define SDL_IMAGE_PATCHLEVEL    0
     41#else
    2442#define SDL_IMAGE_MAJOR_VERSION 1
    2543#define SDL_IMAGE_MINOR_VERSION 2
    2644#define SDL_IMAGE_PATCHLEVEL    11
     45#endif
     46
    2747#define SDL_IMAGE_VERSION(X)                                            \
    2848{                                                                       \
  • trunk/src/gl/gl_context.cc

    r157 r171  
    77#include "nv/gl/gl_enum.hh"
    88#include "nv/lib/gl.hh"
     9#include "nv/lib/sdl.hh"
    910
    1011using namespace nv;
     
    349350
    350351
    351 gl_context::gl_context( device* a_device )
    352         : context( a_device )
    353 {
     352gl_context::gl_context( device* a_device, void* a_win_handle )
     353        : context( a_device ), m_handle( nullptr )
     354{
     355#if NV_SDL_VERSION == NV_SDL_20
     356        m_handle = SDL_GL_CreateContext( static_cast<SDL_Window*>( a_win_handle ) );
     357
     358        if ( m_handle == 0 )
     359        {
     360                NV_LOG( LOG_CRITICAL, "GL Context creation failed: " << SDL_GetError( ) );
     361                return; // TODO: Error report
     362        }
     363#else
     364        NV_UNUSED( a_win_handle );
     365#endif
     366
     367        nv::load_gl_library();
     368        NV_LOG( LOG_INFO, "OpenGL Vendor       : " << glGetString(GL_VENDOR) );
     369        NV_LOG( LOG_INFO, "OpenGL Renderer     : " << glGetString(GL_RENDERER) );
     370        NV_LOG( LOG_INFO, "OpenGL Version      : " << glGetString(GL_VERSION) );
     371        NV_LOG( LOG_INFO, "OpenGL GLSL Version : " << glGetString(GL_SHADING_LANGUAGE_VERSION) );
     372#if NV_SDL_VERSION == NV_SDL_20
     373//      SDL_GL_SetSwapInterval(1);
     374#endif
     375
    354376        // TODO: do we really need this?
    355377        glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
     378
    356379        force_apply_render_state( m_render_state );
    357380}
     381
     382
     383nv::gl_context::~gl_context()
     384{
     385#if NV_SDL_VERSION == NV_SDL_20
     386        SDL_GL_DeleteContext(static_cast<SDL_GLContext>( m_handle ) );
     387#endif
     388}
     389
    358390
    359391void gl_context::draw( primitive prim, const render_state& rs, program* p, vertex_array* va, size_t count )
  • trunk/src/gl/gl_device.cc

    r170 r171  
    3131        }
    3232
     33#if NV_SDL_VERSION == NV_SDL_12
    3334        m_info = SDL_GetVideoInfo( );
    3435
     
    3839                return; // TODO: Error report
    3940        }
     41#endif
    4042
    4143//      bpp = m_info->vfmt->BitsPerPixel;
     
    4951        SDL_GL_SetAttribute( SDL_GL_MULTISAMPLEBUFFERS, 1 );
    5052        SDL_GL_SetAttribute( SDL_GL_MULTISAMPLESAMPLES, 4 );
     53
     54#if NV_SDL_VERSION == NV_SDL_20
     55        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
     56        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
     57        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
     58        SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
     59#endif
    5160
    5261}
  • trunk/src/gl/gl_window.cc

    r170 r171  
    1818        kevent.key.code    = KEY_NONE;
    1919
     20#if NV_SDL_VERSION == NV_SDL_20
     21        uint32 ucode = ke.keysym.sym;
     22#else
     23        uint32 ucode = ke.keysym.unicode;
     24#endif
     25
    2026        // if result is a typable char place it into the structure
    21         if (ke.keysym.unicode >= 32 && ke.keysym.unicode < 128 )
    22         {
    23                 kevent.key.ascii = static_cast<char8>( ke.keysym.unicode );
     27        if (ucode >= 32 && ucode < 128 )
     28        {
     29                kevent.key.ascii = static_cast<char8>( ucode );
    2430        }
    2531
     
    6773        case SDLK_DELETE       : kevent.key.code = KEY_DELETE; break;
    6874        case SDLK_INSERT       : kevent.key.code = KEY_INSERT; break;
    69         case SDLK_KP5          : kevent.key.code = KEY_CENTER; break;
     75        //case SDLK_KP5          : kevent.key.code = KEY_CENTER; break;
    7076        case SDLK_ESCAPE       : kevent.key.code = KEY_ESCAPE; break;
    7177        case SDLK_QUOTE        : kevent.key.code = KEY_QUOTE; break;
     
    9197        mevent.mbutton.button  = MOUSE_NONE;
    9298        mevent.mbutton.pressed = (mb.state != SDL_RELEASED);
    93         mevent.mbutton.x       = mb.x;
    94         mevent.mbutton.y       = mb.y;
     99        mevent.mbutton.x       = static_cast< uint16 >( mb.x );
     100        mevent.mbutton.y       = static_cast< uint16 >( mb.y );
    95101
    96102        switch ( mb.button )
     
    99105        case SDL_BUTTON_MIDDLE    : mevent.mbutton.button = MOUSE_MIDDLE; break;
    100106        case SDL_BUTTON_RIGHT     : mevent.mbutton.button = MOUSE_RIGHT; break;
    101         case SDL_BUTTON_WHEELUP   : mevent.mbutton.button = MOUSE_WHEEL_UP; break;
    102         case SDL_BUTTON_WHEELDOWN : mevent.mbutton.button = MOUSE_WHEEL_DOWN; break;
     107        //case SDL_BUTTON_WHEELUP   : mevent.mbutton.button = MOUSE_WHEEL_UP; break;
     108        //case SDL_BUTTON_WHEELDOWN : mevent.mbutton.button = MOUSE_WHEEL_DOWN; break;
    103109        default : break;
    104110        }
     
    111117        mevent.type          = EV_MOUSE_MOVE;
    112118        mevent.mmove.pressed = (mm.state != SDL_RELEASED);
    113         mevent.mmove.x       = mm.x;
    114         mevent.mmove.y       = mm.y;
     119        mevent.mmove.x       = static_cast< uint16 >( mm.x );
     120        mevent.mmove.y       = static_cast< uint16 >( mm.y );
    115121        return true;
    116122}
     
    125131        case SDL_MOUSEBUTTONDOWN : return sdl_mouse_button_to_io_event( e.button, ioevent );
    126132        case SDL_MOUSEBUTTONUP   : return sdl_mouse_button_to_io_event( e.button, ioevent );
     133/* // SDL 2.0 incompatible
    127134        case SDL_ACTIVEEVENT     :
    128135                ioevent.type = EV_ACTIVE;
     
    134141                ioevent.resize.y = e.resize.h;
    135142                return true;
     143        case SDL_NOEVENT         : return false;
     144        case SDL_VIDEOEXPOSE     : return false;
     145*/
    136146        case SDL_SYSWMEVENT      : ioevent.type = EV_SYSTEM; return true;
    137147        case SDL_QUIT            : ioevent.type = EV_QUIT;   return true;
    138         case SDL_NOEVENT         : return false;
    139         case SDL_VIDEOEXPOSE     : return false;
    140148        case SDL_JOYAXISMOTION   : return false;
    141149        case SDL_JOYBALLMOTION   : return false;
     
    149157
    150158gl_window::gl_window( device* dev, uint16 width, uint16 height )
    151         : m_device( dev ), m_width( width ), m_height( height ), m_title("NV Engine"), m_screen( nullptr )
    152 {
     159        : m_device( dev ), m_width( width ), m_height( height ), m_title("NV Engine"), m_handle( nullptr )
     160{
     161#if NV_SDL_VERSION == NV_SDL_12
    153162        uint32 flags = SDL_OPENGL;
    154        
    155         m_screen = SDL_SetVideoMode( width, height, 32, flags );
    156        
    157         if ( m_screen == 0 )
     163        m_handle = SDL_SetVideoMode( width, height, 32, flags );
     164#elif NV_SDL_VERSION == NV_SDL_20
     165        uint32 flags = SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN;
     166        m_handle = SDL_CreateWindow("Nova Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
     167                width, height, flags );
     168#endif
     169        if ( m_handle == 0 )
    158170        {
    159171                NV_LOG( LOG_CRITICAL, "Video mode set failed: " << SDL_GetError( ) );
     
    161173        }
    162174
    163         nv::load_gl_library();
    164         NV_LOG( LOG_INFO, "OpenGL Vendor       : " << glGetString(GL_VENDOR) );
    165         NV_LOG( LOG_INFO, "OpenGL Renderer     : " << glGetString(GL_RENDERER) );
    166         NV_LOG( LOG_INFO, "OpenGL Version      : " << glGetString(GL_VERSION) );
    167         NV_LOG( LOG_INFO, "OpenGL GLSL Version : " << glGetString(GL_SHADING_LANGUAGE_VERSION) );
    168 
    169         m_context = new gl_context( m_device );
     175        m_context = new gl_context( m_device, m_handle );
    170176        m_context->set_viewport( nv::ivec4( 0, 0, m_width, m_height ) );
    171177}
     
    188194void gl_window::set_title( const string& title )
    189195{
     196#if NV_SDL_VERSION == NV_SDL_20
     197        SDL_SetWindowTitle( static_cast<SDL_Window*>( m_handle ), title.c_str() );
     198#else
    190199        SDL_WM_SetCaption( title.c_str(), title.c_str() );
     200#endif
    191201        m_title = title;
    192202}
     
    206216void gl_window::swap_buffers()
    207217{
     218#if NV_SDL_VERSION == NV_SDL_20
     219        SDL_GL_SwapWindow( static_cast<SDL_Window*>( m_handle ) );
     220#else
    208221        SDL_GL_SwapBuffers();
     222#endif
    209223}
    210224
     
    212226{
    213227        delete m_context;
    214 }
     228#if NV_SDL_VERSION == NV_SDL_20
     229        SDL_DestroyWindow( static_cast<SDL_Window*>( m_handle ) );
     230#endif
     231}
  • trunk/src/lib/sdl.cc

    r170 r171  
    1313#define NV_SDL_FUN( rtype, fname, fparams ) rtype (NV_SDL_APIENTRY *fname) fparams = nullptr;
    1414#include <nv/lib/detail/sdl_functions.inc>
     15#if NV_SDL_VERSION == NV_SDL_12
     16#       include <nv/lib/detail/sdl_functions_12.inc>
     17#elif NV_SDL_VERSION == NV_SDL_20
     18#       include <nv/lib/detail/sdl_functions_20.inc>
     19#endif
    1520#undef NV_SDL_FUN
     21
     22
    1623
    1724bool nv::load_sdl_library( const char* path )
     
    2229#       define NV_SDL_FUN( rtype, fname, fparams ) *(void **) (&fname) = sdl_library.get(#fname);
    2330#       include <nv/lib/detail/sdl_functions.inc>
     31#       if NV_SDL_VERSION == NV_SDL_12
     32#               include <nv/lib/detail/sdl_functions_12.inc>
     33#       elif NV_SDL_VERSION == NV_SDL_20
     34#               include <nv/lib/detail/sdl_functions_20.inc>
     35#       endif
    2436#       undef NV_SDL_FUN
    2537        return true;
Note: See TracChangeset for help on using the changeset viewer.