X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fimage.c;h=ce66e3280b43eaed02485317de4edeff0d7e5aef;hb=4fcf5c6436d34bdc44bc534d21d9ec95bf072333;hp=ec8b0fdcbee349129df4d8dccd91d2bb11d305fb;hpb=fffaec4e69e54c74cf5eea689191e81b8c19b85a;p=rocksndiamonds.git diff --git a/src/libgame/image.c b/src/libgame/image.c index ec8b0fdc..ce66e328 100644 --- a/src/libgame/image.c +++ b/src/libgame/image.c @@ -14,6 +14,7 @@ #include "image.h" #include "pcx.h" #include "misc.h" +#include "setup.h" /* ========================================================================= */ @@ -37,8 +38,8 @@ Image *newImage(unsigned int width, unsigned int height, unsigned int depth) depth = 8; #endif - image = checked_malloc(sizeof(Image)); - image->data = checked_malloc(width * height * bytes_per_pixel); + image = checked_calloc(sizeof(Image)); + image->data = checked_calloc(width * height * bytes_per_pixel); image->width = width; image->height = height; image->depth = depth; @@ -695,19 +696,56 @@ static void FreeImage(void *ptr) free(image); } -void InitImageList(struct FileInfo *file_list, int num_list_entries) +struct FileInfo *getCurrentImageList() { - if (image_info == NULL) - image_info = checked_calloc(sizeof(struct ArtworkListInfo)); + return image_info->file_list; +} + +Bitmap *getBitmapFromImageID(int graphic) +{ + ImageInfo **img_info = (ImageInfo **)image_info->artwork_list; + + return (img_info[graphic] != NULL ? img_info[graphic]->bitmap : NULL); +} + +char *getTokenFromImageID(int graphic) +{ + struct FileInfo *file_list = (struct FileInfo *)image_info->file_list; + + return file_list[graphic].token; +} + +char *getImageConfigFilename() +{ + return getCustomArtworkConfigFilename(image_info->type); +} + +void InitImageList(struct ConfigInfo *config_list, + struct ConfigInfo *config_suffix_list, + int num_file_list_entries) +{ + int i; - if (image_info->artwork_list == NULL) - image_info->artwork_list = - checked_calloc(num_list_entries * sizeof(ImageInfo *)); + image_info = checked_calloc(sizeof(struct ArtworkListInfo)); image_info->type = ARTWORK_TYPE_GRAPHICS; - image_info->num_list_entries = num_list_entries; - image_info->file_list = file_list; + + image_info->num_file_list_entries = num_file_list_entries; + image_info->num_suffix_list_entries = 0; + for (i=0; config_suffix_list[i].token != NULL; i++) + image_info->num_suffix_list_entries++; + + image_info->file_list = + getFileListFromConfigList(config_list, config_suffix_list, + num_file_list_entries); + image_info->suffix_list = config_suffix_list; + image_info->custom_setup_list = NULL; + + image_info->artwork_list = + checked_calloc(num_file_list_entries * sizeof(ImageInfo *)); + image_info->content_list = NULL; + image_info->load_artwork = Load_PCX; image_info->free_artwork = FreeImage; }