1 /* ______ ___ ___ 2 * /\ _ \ /\_ \ /\_ \ 3 * \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___ 4 * \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\ 5 * \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \ 6 * \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/ 7 * \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/ 8 * /\____/ 9 * \_/__/ 10 * 11 * Datafile access routines. 12 * 13 * By Shawn Hargreaves. 14 * 15 * See readme.txt for copyright information. 16 */ 17 18 19 #ifndef ALLEGRO_DATAFILE_H 20 #define ALLEGRO_DATAFILE_H 21 22 #include "base.h" 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 struct BITMAP; 29 struct PACKFILE; 30 struct RGB; 31 32 #define DAT_ID(a,b,c,d) AL_ID(a,b,c,d) 33 34 #define DAT_MAGIC DAT_ID('A','L','L','.') 35 #define DAT_FILE DAT_ID('F','I','L','E') 36 #define DAT_DATA DAT_ID('D','A','T','A') 37 #define DAT_FONT DAT_ID('F','O','N','T') 38 #define DAT_SAMPLE DAT_ID('S','A','M','P') 39 #define DAT_MIDI DAT_ID('M','I','D','I') 40 #define DAT_PATCH DAT_ID('P','A','T',' ') 41 #define DAT_FLI DAT_ID('F','L','I','C') 42 #define DAT_BITMAP DAT_ID('B','M','P',' ') 43 #define DAT_RLE_SPRITE DAT_ID('R','L','E',' ') 44 #define DAT_C_SPRITE DAT_ID('C','M','P',' ') 45 #define DAT_XC_SPRITE DAT_ID('X','C','M','P') 46 #define DAT_PALETTE DAT_ID('P','A','L',' ') 47 #define DAT_PROPERTY DAT_ID('p','r','o','p') 48 #define DAT_NAME DAT_ID('N','A','M','E') 49 #define DAT_END -1 50 51 52 typedef struct DATAFILE_PROPERTY 53 { 54 char *dat; /* pointer to the data */ 55 int type; /* property type */ 56 } DATAFILE_PROPERTY; 57 58 59 typedef struct DATAFILE 60 { 61 void *dat; /* pointer to the data */ 62 int type; /* object type */ 63 long size; /* size of the object */ 64 DATAFILE_PROPERTY *prop; /* object properties */ 65 } DATAFILE; 66 67 68 typedef struct DATAFILE_INDEX 69 { 70 char *filename; /* datafile name (path) */ 71 long *offset; /* list of offsets */ 72 } DATAFILE_INDEX; 73 74 75 AL_FUNC(DATAFILE *, load_datafile, (AL_CONST char *filename)); 76 AL_FUNC(DATAFILE *, load_datafile_callback, (AL_CONST char *filename, AL_METHOD(void, callback, (DATAFILE *)))); 77 AL_FUNC(DATAFILE_INDEX *, create_datafile_index, (AL_CONST char *filename)); 78 AL_FUNC(void, unload_datafile, (DATAFILE *dat)); 79 AL_FUNC(void, destroy_datafile_index, (DATAFILE_INDEX *index)); 80 81 AL_FUNC(DATAFILE *, load_datafile_object, (AL_CONST char *filename, AL_CONST char *objectname)); 82 AL_FUNC(DATAFILE *, load_datafile_object_indexed, (AL_CONST DATAFILE_INDEX *index, int item)); 83 AL_FUNC(void, unload_datafile_object, (DATAFILE *dat)); 84 85 AL_FUNC(DATAFILE *, find_datafile_object, (AL_CONST DATAFILE *dat, AL_CONST char *objectname)); 86 AL_FUNC(AL_CONST char *, get_datafile_property, (AL_CONST DATAFILE *dat, int type)); 87 AL_FUNC(void, register_datafile_object, (int id_, AL_METHOD(void *, load, (struct PACKFILE *f, long size)), AL_METHOD(void, destroy, (void *data)))); 88 89 AL_FUNC(void, fixup_datafile, (DATAFILE *data)); 90 91 AL_FUNC(struct BITMAP *, load_bitmap, (AL_CONST char *filename, struct RGB *pal)); 92 AL_FUNC(struct BITMAP *, load_bmp, (AL_CONST char *filename, struct RGB *pal)); 93 AL_FUNC(struct BITMAP *, load_bmp_pf, (PACKFILE *f, struct RGB *pal)); 94 AL_FUNC(struct BITMAP *, load_lbm, (AL_CONST char *filename, struct RGB *pal)); 95 AL_FUNC(struct BITMAP *, load_pcx, (AL_CONST char *filename, struct RGB *pal)); 96 AL_FUNC(struct BITMAP *, load_pcx_pf, (PACKFILE *f, struct RGB *pal)); 97 AL_FUNC(struct BITMAP *, load_tga, (AL_CONST char *filename, struct RGB *pal)); 98 AL_FUNC(struct BITMAP *, load_tga_pf, (PACKFILE *f, struct RGB *pal)); 99 100 AL_FUNC(int, save_bitmap, (AL_CONST char *filename, struct BITMAP *bmp, AL_CONST struct RGB *pal)); 101 AL_FUNC(int, save_bmp, (AL_CONST char *filename, struct BITMAP *bmp, AL_CONST struct RGB *pal)); 102 AL_FUNC(int, save_bmp_pf, (PACKFILE *f, struct BITMAP *bmp, AL_CONST struct RGB *pal)); 103 AL_FUNC(int, save_pcx, (AL_CONST char *filename, struct BITMAP *bmp, AL_CONST struct RGB *pal)); 104 AL_FUNC(int, save_pcx_pf, (PACKFILE *f, struct BITMAP *bmp, AL_CONST struct RGB *pal)); 105 AL_FUNC(int, save_tga, (AL_CONST char *filename, struct BITMAP *bmp, AL_CONST struct RGB *pal)); 106 AL_FUNC(int, save_tga_pf, (PACKFILE *f, struct BITMAP *bmp, AL_CONST struct RGB *pal)); 107 108 AL_FUNC(void, register_bitmap_file_type, (AL_CONST char *ext, AL_METHOD(struct BITMAP *, load, (AL_CONST char *filename, struct RGB *pal)), AL_METHOD(int, save, (AL_CONST char *filename, struct BITMAP *bmp, AL_CONST struct RGB *pal)))); 109 110 #ifdef __cplusplus 111 } 112 #endif 113 114 #endif /* ifndef ALLEGRO_DATAFILE_H */ 115