X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsdl.h;h=fc05cb7063ad22ebbe4d8c88c66ab51b8a7d62d9;hb=ea6e4698905d7440a265e323d03cf13fc323c44b;hp=768dc6fae176402e2f6a0ddd314216bc26c01268;hpb=222cd4187e6632bd904a937f167a2f1c70b8f66d;p=rocksndiamonds.git diff --git a/src/libgame/sdl.h b/src/libgame/sdl.h index 768dc6fa..fc05cb70 100644 --- a/src/libgame/sdl.h +++ b/src/libgame/sdl.h @@ -1,15 +1,14 @@ /*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * +* Artsoft Retro-Game Library * *----------------------------------------------------------* -* ©1995 Artsoft Development * -* Holger Schemel * -* 33659 Bielefeld-Senne * -* Telefon: (0521) 493245 * -* eMail: aeglos@valinor.owl.de * -* aeglos@uni-paderborn.de * -* q99492@pbhrzx.uni-paderborn.de * +* (c) 1994-2002 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * *----------------------------------------------------------* -* sdl.h * +* sdl.h * ***********************************************************/ #ifndef SDL_H @@ -18,26 +17,33 @@ #include "SDL.h" #include "SDL_image.h" #include "SDL_mixer.h" +#include "SDL_net.h" +#include "SDL_thread.h" /* definitions needed for "system.c" */ #define SURFACE_FLAGS (SDL_SWSURFACE) - /* system dependent definitions */ #define TARGET_STRING "SDL" #define FULLSCREEN_STATUS FULLSCREEN_AVAILABLE +#define CURSOR_MAX_WIDTH 32 +#define CURSOR_MAX_HEIGHT 32 + /* SDL type definitions */ -typedef SDL_Surface *Bitmap; -typedef SDL_Surface *DrawWindow; -typedef SDL_Surface *DrawBuffer; +typedef struct SDLSurfaceInfo Bitmap; +typedef struct SDLSurfaceInfo DrawBuffer; +typedef struct SDLSurfaceInfo DrawWindow; +typedef Uint32 Pixel; +typedef SDL_Cursor *Cursor; typedef SDLKey Key; +typedef unsigned int KeyMod; typedef SDL_Event Event; typedef SDL_MouseButtonEvent ButtonEvent; @@ -54,10 +60,41 @@ typedef int Visual; typedef int Colormap; +/* structure definitions */ + +struct SDLSurfaceInfo +{ + char *source_filename; + + int width, height; + SDL_Surface *surface; + SDL_Surface *surface_masked; + GC gc; + GC stored_clip_gc; +}; + +struct MouseCursorInfo +{ + int width, height; + int hot_x, hot_y; + + char data[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8]; + char mask[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8]; +}; + +struct XY +{ + short x, y; +}; + + /* SDL symbol definitions */ #define None 0L +#define BLACK_PIXEL 0x000000 +#define WHITE_PIXEL 0xffffff + #define EVENT_BUTTONPRESS SDL_MOUSEBUTTONDOWN #define EVENT_BUTTONRELEASE SDL_MOUSEBUTTONUP #define EVENT_MOTIONNOTIFY SDL_MOUSEMOTION @@ -293,18 +330,57 @@ typedef int Colormap; #define KSYM_F23 KSYM_UNDEFINED #define KSYM_F24 KSYM_UNDEFINED +#define KSYM_FKEY_FIRST KSYM_F1 +#define KSYM_FKEY_LAST KSYM_F15 +#define KSYM_NUM_FKEYS (KSYM_FKEY_LAST - KSYM_FKEY_FIRST + 1) + +#define KMOD_None None +#define KMOD_Shift_L KMOD_LSHIFT +#define KMOD_Shift_R KMOD_RSHIFT +#define KMOD_Control_L KMOD_LCTRL +#define KMOD_Control_R KMOD_RCTRL +#define KMOD_Meta_L KMOD_LMETA +#define KMOD_Meta_R KMOD_RMETA +#define KMOD_Alt_L KMOD_LALT +#define KMOD_Alt_R KMOD_RALT + +#define KMOD_Shift (KMOD_Shift_L | KMOD_Shift_R) +#define KMOD_Control (KMOD_Control_L | KMOD_Control_R) +#define KMOD_Meta (KMOD_Meta_L | KMOD_Meta_R) +#define KMOD_Alt (KMOD_Alt_L | KMOD_Alt_R) + /* SDL function definitions */ inline void SDLInitVideoDisplay(void); -inline void SDLInitVideoBuffer(DrawBuffer *, DrawWindow *, boolean); -inline boolean SDLSetVideoMode(DrawBuffer *, boolean); -inline void SDLCopyArea(SDL_Surface *, SDL_Surface *, - int, int, int, int, int, int); -inline void SDLFillRectangle(SDL_Surface *, int, int, int, int, unsigned int); -inline void SDLDrawSimpleLine(SDL_Surface *, int, int, int, int, unsigned int); - -inline boolean SDLOpenAudio(void); +inline void SDLInitVideoBuffer(DrawBuffer **, DrawWindow **, boolean); +inline boolean SDLSetVideoMode(DrawBuffer **, boolean); +inline void SDLCreateBitmapContent(Bitmap *, int, int, int); +inline void SDLFreeBitmapPointers(Bitmap *); +inline void SDLCopyArea(Bitmap *, Bitmap *, int, int, int, int, int, int, int); +inline void SDLFillRectangle(Bitmap *, int, int, int, int, Uint32); +inline void SDLDrawSimpleLine(Bitmap *, int, int, int, int, Uint32); +inline void SDLDrawLine(Bitmap *, int, int, int, int, Uint32); +inline Pixel SDLGetPixel(Bitmap *, int, int); +inline void SDLPutPixel(Bitmap *, int, int, Pixel); + +inline void SDLInvertArea(Bitmap *, int, int, int, int, Uint32); +inline void SDLCopyInverseMasked(Bitmap *, Bitmap *, int, int, int, int, + int, int); + +void SDLZoomBitmap(Bitmap *, Bitmap *); + +Bitmap *SDLLoadImage(char *); + +void SDLSetMouseCursor(struct MouseCursorInfo *); + +inline void SDLOpenAudio(void); inline void SDLCloseAudio(void); +inline void SDLNextEvent(Event *); + +void HandleJoystickEvent(Event *); +void SDLInitJoysticks(void); +boolean SDLReadJoystick(int, int *, int *, boolean *, boolean *); + #endif /* SDL_H */