X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=134d6c3ecf476560188ff9b88ed2dc21ab44b2d3;hb=a2c9a458aaa4ac568f07ecd25b19fbca3f766e6b;hp=0a54fe23112dc007f02696e5505b25b7d6cb421f;hpb=2f1f47c267eb7b16d95eb25cfb53eb5effedea9a;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 0a54fe23..134d6c3e 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -1,7 +1,7 @@ /*********************************************************** * Artsoft Retro-Game Library * *----------------------------------------------------------* -* (c) 1994-2001 Artsoft Entertainment * +* (c) 1994-2002 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -17,7 +17,12 @@ #include "platform.h" #include "types.h" -#if defined(PLATFORM_MSDOS) + +#if defined(PLATFORM_MACOSX) +#include "macosx.h" +#elif defined(PLATFORM_WIN32) +#include "windows.h" +#elif defined(PLATFORM_MSDOS) #include "msdos.h" #endif @@ -35,6 +40,11 @@ #define DEFAULT_DEPTH 0 +#define BLIT_OPAQUE 0 +#define BLIT_MASKED 1 +#define BLIT_INVERSE 2 +#define BLIT_ON_BACKGROUND 3 + #define FULLSCREEN_NOT_AVAILABLE FALSE #define FULLSCREEN_AVAILABLE TRUE @@ -43,8 +53,13 @@ #define DEFAULT_KEY_RIGHT KSYM_Right #define DEFAULT_KEY_UP KSYM_Up #define DEFAULT_KEY_DOWN KSYM_Down +#if defined(PLATFORM_MACOSX) +#define DEFAULT_KEY_SNAP KSYM_Control_L +#define DEFAULT_KEY_BOMB KSYM_KP_Enter +#else #define DEFAULT_KEY_SNAP KSYM_Shift_L #define DEFAULT_KEY_BOMB KSYM_Shift_R +#endif #define DEFAULT_KEY_OKAY KSYM_Return #define DEFAULT_KEY_CANCEL KSYM_Escape @@ -53,17 +68,10 @@ #define DEFAULT_KEY_LOAD_GAME KSYM_F2 #define DEFAULT_KEY_TOGGLE_PAUSE KSYM_space -/* values for move directions and special "button" keys */ -#define MV_NO_MOVING 0 -#define MV_LEFT (1 << 0) -#define MV_RIGHT (1 << 1) -#define MV_UP (1 << 2) -#define MV_DOWN (1 << 3) -#define KEY_BUTTON_1 (1 << 4) -#define KEY_BUTTON_2 (1 << 5) -#define KEY_MOTION (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN) -#define KEY_BUTTON (KEY_BUTTON_1 | KEY_BUTTON_2) -#define KEY_ACTION (KEY_MOTION | KEY_BUTTON) +/* values for key_status */ +#define KEY_NOT_PRESSED FALSE +#define KEY_RELEASED FALSE +#define KEY_PRESSED TRUE /* values for button status */ #define MB_NOT_PRESSED FALSE @@ -78,6 +86,52 @@ #define MB_MIDDLEBUTTON 2 #define MB_RIGHTBUTTON 3 + +/* values for move directions */ +#define MV_BIT_LEFT 0 +#define MV_BIT_RIGHT 1 +#define MV_BIT_UP 2 +#define MV_BIT_DOWN 3 + +#define NUM_DIRECTIONS 4 + +/* values for special "button" bitmasks */ +#define BUTTON_1 4 +#define BUTTON_2 5 + +/* values for move direction and special "button" key bitmasks */ +#define MV_NO_MOVING 0 +#define MV_LEFT (1 << MV_BIT_LEFT) +#define MV_RIGHT (1 << MV_BIT_RIGHT) +#define MV_UP (1 << MV_BIT_UP) +#define MV_DOWN (1 << MV_BIT_DOWN) + +#define KEY_BUTTON_1 (1 << BUTTON_1) +#define KEY_BUTTON_2 (1 << BUTTON_2) +#define KEY_MOTION (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN) +#define KEY_BUTTON (KEY_BUTTON_1 | KEY_BUTTON_2) +#define KEY_ACTION (KEY_MOTION | KEY_BUTTON) + +#define MV_DIR_BIT(x) ((x) == MV_LEFT ? MV_BIT_LEFT : \ + (x) == MV_RIGHT ? MV_BIT_RIGHT : \ + (x) == MV_UP ? MV_BIT_UP : MV_BIT_DOWN) + + +/* values for animation mode (frame order and direction) */ +#define ANIM_NONE 0 +#define ANIM_LOOP (1 << 0) +#define ANIM_LINEAR (1 << 1) +#define ANIM_PINGPONG (1 << 2) +#define ANIM_PINGPONG2 (1 << 3) +#define ANIM_RANDOM (1 << 4) +#define ANIM_REVERSE (1 << 5) + +/* values for special (non game element) animation modes */ +#define ANIM_HORIZONTAL (1 << 6) +#define ANIM_VERTICAL (1 << 7) + +#define ANIM_DEFAULT ANIM_LOOP + /* values for redraw_mask */ #define REDRAW_NONE (0) #define REDRAW_ALL (1 << 0) @@ -103,6 +157,12 @@ #define REDRAW_FPS (1 << 11) #define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2) + +/* values for mouse cursor */ +#define CURSOR_DEFAULT 0 +#define CURSOR_PLAYFIELD 1 + + /* maximum number of parallel players supported by libgame functions */ #define MAX_PLAYERS 4 @@ -118,6 +178,19 @@ /* default name for new levels */ #define NAMELESS_LEVEL_NAME "nameless level" +/* default text for non-existant artwork */ +#define NOT_AVAILABLE "(not available)" + +/* default value for undefined filename */ +#define UNDEFINED_FILENAME "[NONE]" + +/* default value for undefined parameter */ +#define ARG_DEFAULT "[DEFAULT]" + +/* default values for undefined configuration file parameters */ +#define ARG_UNDEFINED "-1000000" +#define ARG_UNDEFINED_VALUE (atoi(ARG_UNDEFINED)) + /* definitions for game sub-directories */ #ifndef RO_GAME_DIR #define RO_GAME_DIR "." @@ -130,23 +203,51 @@ #define RO_BASE_PATH RO_GAME_DIR #define RW_BASE_PATH RW_GAME_DIR +/* directory names */ #define GRAPHICS_DIRECTORY "graphics" #define SOUNDS_DIRECTORY "sounds" #define MUSIC_DIRECTORY "music" #define LEVELS_DIRECTORY "levels" #define TAPES_DIRECTORY "tapes" #define SCORES_DIRECTORY "scores" +#define DOCS_DIRECTORY "docs" + +#if !defined(PLATFORM_MSDOS) +#define GFX_CLASSIC_SUBDIR "gfx_classic" +#define SND_CLASSIC_SUBDIR "snd_classic" +#define MUS_CLASSIC_SUBDIR "mus_classic" +#else +#define GFX_CLASSIC_SUBDIR "gfx_orig" +#define SND_CLASSIC_SUBDIR "snd_orig" +#define MUS_CLASSIC_SUBDIR "mus_orig" +#endif +/* file names and filename extensions */ #if !defined(PLATFORM_MSDOS) -#define GRAPHICS_SUBDIR "gfx_classic" -#define SOUNDS_SUBDIR "snd_classic" -#define MUSIC_SUBDIR "mus_classic" +#define LEVELSETUP_DIRECTORY "levelsetup" +#define SETUP_FILENAME "setup.conf" +#define LEVELSETUP_FILENAME "levelsetup.conf" +#define LEVELINFO_FILENAME "levelinfo.conf" +#define GRAPHICSINFO_FILENAME "graphicsinfo.conf" +#define SOUNDSINFO_FILENAME "soundsinfo.conf" +#define MUSICINFO_FILENAME "musicinfo.conf" +#define LEVELFILE_EXTENSION "level" +#define TAPEFILE_EXTENSION "tape" +#define SCOREFILE_EXTENSION "score" #else -#define GRAPHICS_SUBDIR "gfx_orig" -#define SOUNDS_SUBDIR "snd_orig" -#define MUSIC_SUBDIR "mus_orig" +#define LEVELSETUP_DIRECTORY "lvlsetup" +#define SETUP_FILENAME "setup.cnf" +#define LEVELSETUP_FILENAME "lvlsetup.cnf" +#define LEVELINFO_FILENAME "lvlinfo.cnf" +#define GRAPHICSINFO_FILENAME "gfxinfo.cnf" +#define SOUNDSINFO_FILENAME "sndinfo.cnf" +#define MUSICINFO_FILENAME "musinfo.cnf" +#define LEVELFILE_EXTENSION "lvl" +#define TAPEFILE_EXTENSION "tap" +#define SCOREFILE_EXTENSION "sco" #endif + /* areas in bitmap PIX_DOOR */ /* meaning in PIX_DB_DOOR: (3 PAGEs) PAGEX1: 1. buffer for DOOR_1 @@ -166,15 +267,112 @@ #define DOOR_GFX_PAGEY1 (0) #define DOOR_GFX_PAGEY2 (gfx.dysize) -/* functions for version handling */ -#define VERSION_IDENT(x,y,z) ((x) * 10000 + (y) * 100 + (z)) -#define VERSION_MAJOR(x) ((x) / 10000) -#define VERSION_MINOR(x) (((x) % 10000) / 100) -#define VERSION_PATCH(x) ((x) % 100) -/* functions for parent/child process identification */ -#define IS_PARENT_PROCESS(pid) ((pid) > 0) -#define IS_CHILD_PROCESS(pid) ((pid) == 0) +/* macros for version handling */ +#define VERSION_IDENT(x,y,z) ((x) * 1000000 + (y) * 10000 + (z) * 100) +#define RELEASE_IDENT(x,y,z,r) (VERSION_IDENT(x,y,z) + (r)) +#define VERSION_MAJOR(x) ((x) / 1000000) +#define VERSION_MINOR(x) (((x) % 1000000) / 10000) +#define VERSION_PATCH(x) (((x) % 10000) / 100) +#define VERSION_RELEASE(x) ((x) % 100) + + +/* macros for parent/child process identification */ +#if defined(PLATFORM_UNIX) +#define IS_PARENT_PROCESS() (audio.mixer_pid != getpid()) +#define IS_CHILD_PROCESS() (audio.mixer_pid == getpid()) +#define HAS_CHILD_PROCESS() (audio.mixer_pid > 0) +#else +#define IS_PARENT_PROCESS() TRUE +#define IS_CHILD_PROCESS() FALSE +#define HAS_CHILD_PROCESS() FALSE +#endif + + +/* values for artwork type */ +#define ARTWORK_TYPE_GRAPHICS 0 +#define ARTWORK_TYPE_SOUNDS 1 +#define ARTWORK_TYPE_MUSIC 2 + +#define NUM_ARTWORK_TYPES 3 + + +/* values for tree type (chosen to match artwork type) */ +#define TREE_TYPE_UNDEFINED -1 +#define TREE_TYPE_GRAPHICS_DIR ARTWORK_TYPE_GRAPHICS +#define TREE_TYPE_SOUNDS_DIR ARTWORK_TYPE_SOUNDS +#define TREE_TYPE_MUSIC_DIR ARTWORK_TYPE_MUSIC +#define TREE_TYPE_LEVEL_DIR 3 + +#define NUM_TREE_TYPES 4 + + +/* values for artwork handling */ +#define LEVELDIR_ARTWORK_SET(leveldir, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + (leveldir)->graphics_set : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + (leveldir)->sounds_set : \ + (leveldir)->music_set) + +#define LEVELDIR_ARTWORK_PATH(leveldir, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + (leveldir)->graphics_path : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + (leveldir)->sounds_path : \ + (leveldir)->music_path) + +#define SETUP_ARTWORK_SET(setup, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + (setup).graphics_set : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + (setup).sounds_set : \ + (setup).music_set) + +#define SETUP_OVERRIDE_ARTWORK(setup, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + (setup).override_level_graphics : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + (setup).override_level_sounds : \ + (setup).override_level_music) + +#define ARTWORK_FIRST_NODE(artwork, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + (artwork).gfx_first : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + (artwork).snd_first : \ + (artwork).mus_first) + +#define ARTWORK_CURRENT_IDENTIFIER(artwork, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + (artwork).gfx_current_identifier : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + (artwork).snd_current_identifier : \ + (artwork).mus_current_identifier) + +#define ARTWORKINFO_FILENAME(type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + GRAPHICSINFO_FILENAME : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + SOUNDSINFO_FILENAME : \ + (type) == ARTWORK_TYPE_MUSIC ? \ + MUSICINFO_FILENAME : "") + +#define ARTWORK_DIRECTORY(type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + GRAPHICS_DIRECTORY : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + SOUNDS_DIRECTORY : \ + (type) == ARTWORK_TYPE_MUSIC ? \ + MUSIC_DIRECTORY : "") + +#define OPTIONS_ARTWORK_DIRECTORY(type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + options.graphics_directory : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + options.sounds_directory : \ + (type) == ARTWORK_TYPE_MUSIC ? \ + options.music_directory : "") /* type definitions */ @@ -194,7 +392,7 @@ struct ProgramInfo char *x11_icon_filename; char *x11_iconmask_filename; - char *msdos_pointer_filename; + char *msdos_cursor_filename; char *cookie_prefix; char *filename_prefix; /* prefix to cut off from DOS filenames */ @@ -211,12 +409,16 @@ struct OptionInfo char *display_name; char *server_host; int server_port; + char *ro_base_directory; char *rw_base_directory; char *level_directory; char *graphics_directory; char *sounds_directory; char *music_directory; + char *docs_directory; + char *execute_command; + boolean serveronly; boolean network; boolean verbose; @@ -250,6 +452,20 @@ struct AudioSystemInfo int first_sound_channel; }; +struct FontBitmapInfo +{ + Bitmap *bitmap; + int src_x, src_y; /* start position of animation frames */ + int width, height; /* width/height of each animation frame */ + int draw_x, draw_y; /* offset for drawing font characters */ + int num_chars; + int num_chars_per_line; + +#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) + Pixmap *clip_mask; /* single-char-only clip mask array for X11 */ +#endif +}; + struct GfxInfo { int sx, sy; @@ -264,7 +480,19 @@ struct GfxInfo int vx, vy; int vxsize, vysize; - boolean draw_deactivation_mask; + int draw_deactivation_mask; + int draw_background_mask; + + Bitmap *field_save_buffer; + + Bitmap *background_bitmap; + int background_bitmap_mask; + + int num_fonts; + struct FontBitmapInfo *font_bitmap_info; + int (*select_font_function)(int); + + int anim_random_frame; }; struct JoystickInfo @@ -300,6 +528,22 @@ struct SetupInputInfo struct SetupKeyboardInfo key; }; +struct SetupEditorInfo +{ + boolean el_boulderdash; + boolean el_emerald_mine; + boolean el_more; + boolean el_sokoban; + boolean el_supaplex; + boolean el_diamond_caves; + boolean el_dx_boulderdash; + boolean el_chars; + boolean el_custom; + boolean el_custom_more; + + boolean el_headlines; +}; + struct SetupShortcutInfo { Key save_game; @@ -307,6 +551,12 @@ struct SetupShortcutInfo Key toggle_pause; }; +struct SetupSystemInfo +{ + char *sdl_audiodriver; + int audio_fragment_size; +}; + struct SetupInfo { char *player_name; @@ -332,17 +582,17 @@ struct SetupInfo char *graphics_set; char *sounds_set; char *music_set; + boolean override_level_graphics; + boolean override_level_sounds; + boolean override_level_music; + struct SetupEditorInfo editor; struct SetupShortcutInfo shortcut; struct SetupInputInfo input[MAX_PLAYERS]; + struct SetupSystemInfo system; + struct OptionInfo options; }; -#define TREE_TYPE_GENERIC 0 -#define TREE_TYPE_LEVEL_DIR 1 -#define TREE_TYPE_GRAPHICS_DIR 2 -#define TREE_TYPE_SOUNDS_DIR 3 -#define TREE_TYPE_MUSIC_DIR 4 - struct TreeInfo { struct TreeInfo **node_top; /* topmost node in tree */ @@ -357,22 +607,34 @@ struct TreeInfo /* fields for "type == TREE_TYPE_LEVEL_DIR" */ - char *filename; /* level series single directory name */ - char *fullpath; /* complete path relative to level directory */ - char *basepath; /* absolute base path of level directory */ - char *name; /* level series name, as displayed on main screen */ - char *name_short; /* optional short name for level selection screen */ - char *name_sorting; /* optional sorting name for correct level sorting */ - char *author; /* level series author name levels without author */ - char *imported_from; /* optional comment for imported level series */ + char *filename; /* tree info sub-directory basename (may be ".") */ + char *fullpath; /* complete path relative to tree base directory */ + char *basepath; /* absolute base path of tree base directory */ + char *identifier; /* identifier string for configuration files */ + char *name; /* tree info name, as displayed in selection menues */ + char *name_sorting; /* optional sorting name for correct name sorting */ + char *author; /* level or artwork author name */ + char *imported_from; /* optional comment for imported levels or artwork */ + + char *graphics_set; /* optional custom graphics set (level tree only) */ + char *sounds_set; /* optional custom sounds set (level tree only) */ + char *music_set; /* optional custom music set (level tree only) */ + char *graphics_path; /* path to optional custom graphics set (level only) */ + char *sounds_path; /* path to optional custom sounds set (level only) */ + char *music_path; /* path to optional custom music set (level only) */ + int levels; /* number of levels in level series */ int first_level; /* first level number (to allow start with 0 or 1) */ int last_level; /* last level number (automatically calculated) */ int sort_priority; /* sort levels by 'sort_priority' and then by name */ + + boolean latest_engine;/* force level set to use the latest game engine */ + boolean level_group; /* directory contains more level series directories */ boolean parent_link; /* entry links back to parent directory */ boolean user_defined; /* user defined levels are stored in home directory */ boolean readonly; /* readonly levels can not be changed with editor */ + int color; /* color to use on selection screen for this level */ char *class_desc; /* description of level series class */ int handicap_level; /* number of the lowest unsolved level */ @@ -380,6 +642,7 @@ struct TreeInfo typedef struct TreeInfo TreeInfo; typedef struct TreeInfo LevelDirTree; +typedef struct TreeInfo ArtworkDirTree; typedef struct TreeInfo GraphicsDirTree; typedef struct TreeInfo SoundsDirTree; typedef struct TreeInfo MusicDirTree; @@ -393,9 +656,102 @@ struct ArtworkInfo MusicDirTree *mus_first; MusicDirTree *mus_current; - char *graphics_set_current; - char *sounds_set_current; - char *music_set_current; + char *gfx_current_identifier; + char *snd_current_identifier; + char *mus_current_identifier; +}; + +struct ValueTextInfo +{ + int value; + char *text; +}; + +struct ConfigInfo +{ + char *token; + char *value; + int type; +}; + +struct TokenIntPtrInfo +{ + char *token; + int *value; +}; + +struct FileInfo +{ + char *token; + + char *default_filename; + char *filename; + + char **default_parameter; /* array of file parameters */ + char **parameter; /* array of file parameters */ + + boolean redefined; +}; + +struct SetupFileList +{ + char *token; + char *value; + + struct SetupFileList *next; +}; + +struct ListNodeInfo +{ + char *source_filename; /* primary key for node list */ + int num_references; +}; + +struct PropertyMapping +{ + int base_index; + int ext1_index; + int ext2_index; + int ext3_index; + + int artwork_index; +}; + +struct ArtworkListInfo +{ + int type; /* type of artwork */ + + int num_file_list_entries; + int num_dynamic_file_list_entries; + struct FileInfo *file_list; /* static artwork file array */ + struct FileInfo *dynamic_file_list; /* dynamic artwrk file array */ + + int num_suffix_list_entries; + struct ConfigInfo *suffix_list; /* parameter suffixes array */ + + int num_base_prefixes; + int num_ext1_suffixes; + int num_ext2_suffixes; + int num_ext3_suffixes; + char **base_prefixes; /* base token prefixes array */ + char **ext1_suffixes; /* property suffixes array 1 */ + char **ext2_suffixes; /* property suffixes array 2 */ + char **ext3_suffixes; /* property suffixes array 3 */ + + int num_ignore_tokens; + char **ignore_tokens; /* file tokens to be ignored */ + + int num_property_mapping_entries; + struct PropertyMapping *property_mapping; /* mapping token -> artwork */ + + int sizeof_artwork_list_entry; + + struct ListNodeInfo **artwork_list; /* static artwork node array */ + struct ListNodeInfo **dynamic_artwork_list; /* dynamic artwrk node array */ + struct ListNode *content_list; /* dynamic artwork node list */ + + void *(*load_artwork)(char *); /* constructor function */ + void (*free_artwork)(void *); /* destructor function */ }; @@ -408,6 +764,7 @@ extern struct OptionInfo options; extern struct VideoSystemInfo video; extern struct AudioSystemInfo audio; extern struct GfxInfo gfx; +extern struct AnimInfo anim; extern struct ArtworkInfo artwork; extern struct JoystickInfo joystick; extern struct SetupInfo setup; @@ -436,19 +793,21 @@ extern int FrameCounter; /* function definitions */ -void InitCommandName(char *); -void InitExitFunction(void (*exit_function)(int)); -void InitPlatformDependantStuff(void); -void ClosePlatformDependantStuff(void); - void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, - char *, char *, int); + char *, char *, char *, int); + +void InitExitFunction(void (*exit_function)(int)); +void InitPlatformDependentStuff(void); +void ClosePlatformDependentStuff(void); -void InitGfxFieldInfo(int, int, int, int, int, int, int, int); +void InitGfxFieldInfo(int, int, int, int, int, int, int, int, Bitmap *); void InitGfxDoor1Info(int, int, int, int); void InitGfxDoor2Info(int, int, int, int); void InitGfxScrollbufferInfo(int, int); -void SetDrawDeactivationMask(int ); +void SetDrawDeactivationMask(int); +void SetDrawBackgroundMask(int); +void SetMainBackgroundBitmap(Bitmap *); +void SetDoorBackgroundBitmap(Bitmap *); inline void InitVideoDisplay(void); inline void CloseVideoDisplay(void); @@ -457,10 +816,15 @@ inline Bitmap *CreateBitmapStruct(void); inline Bitmap *CreateBitmap(int, int, int); inline void FreeBitmap(Bitmap *); inline void BlitBitmap(Bitmap *, Bitmap *, int, int, int, int, int, int); +inline void FillRectangle(Bitmap *, int, int, int, int, Pixel); inline void ClearRectangle(Bitmap *, int, int, int, int); +inline void ClearRectangleOnBackground(Bitmap *, int, int, int, int); inline void SetClipMask(Bitmap *, GC, Pixmap); inline void SetClipOrigin(Bitmap *, GC, int, int); inline void BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); +inline boolean DrawingOnBackground(int, int); +inline void BlitBitmapOnBackground(Bitmap *, Bitmap *, int, int, int, int, int, + int); inline void DrawSimpleWhiteLine(Bitmap *, int, int, int, int); inline void DrawLines(Bitmap *, struct XY *, int, Pixel); inline Pixel GetPixel(Bitmap *, int, int); @@ -479,6 +843,11 @@ Bitmap *LoadImage(char *); Bitmap *LoadCustomImage(char *); void ReloadCustomImage(Bitmap *, char *); +Bitmap *ZoomBitmap(Bitmap *, int, int); +void CreateBitmapWithSmallBitmaps(Bitmap *); + +void SetMouseCursor(int); + inline void OpenAudio(void); inline void CloseAudio(void); inline void SetAudioMode(boolean); @@ -487,6 +856,8 @@ inline void InitEventFilter(EventFilter); inline boolean PendingEvent(void); inline void NextEvent(Event *event); inline Key GetEventKey(KeyEvent *, boolean); +inline KeyMod HandleKeyModState(Key, int); +inline KeyMod GetKeyModState(); inline boolean CheckCloseWindowEvent(ClientMessageEvent *); inline void InitJoysticks();