X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fimage.c;h=699093b7b7ebb718e6a6d74144ba3c5b81caada8;hb=25c22434b11938e230719d6f73df4ed7813570be;hp=16b4574dab2022311cca9d25931efb07c16f56c5;hpb=fe4ae2ae6dd24628a3141093d8cddea7b57812e1;p=rocksndiamonds.git diff --git a/src/libgame/image.c b/src/libgame/image.c index 16b4574d..699093b7 100644 --- a/src/libgame/image.c +++ b/src/libgame/image.c @@ -140,6 +140,13 @@ char *getTokenFromImageID(int graphic) return (file_list != NULL ? file_list->token : NULL); } +char *getFilenameFromImageID(int graphic) +{ + struct FileInfo *file_list = getImageListEntryFromImageID(graphic); + + return (file_list != NULL ? file_list->filename : NULL); +} + int getImageIDFromToken(char *token) { struct FileInfo *file_list = image_info->file_list; @@ -351,11 +358,11 @@ void CreateImageWithSmallImages(int pos, int zoom_factor, int tile_size) setString(&img_info->leveldir, leveldir_current->identifier); } -static void CreateImageTexturesExt(int pos, boolean force) +void CreateImageTextures(int pos) { ImageInfo *img_info = getImageInfoEntryFromImageID(pos); - if (img_info == NULL || (img_info->contains_textures && !force)) + if (img_info == NULL || img_info->contains_textures) return; CreateBitmapTextures(img_info->bitmaps); @@ -363,14 +370,25 @@ static void CreateImageTexturesExt(int pos, boolean force) img_info->contains_textures = TRUE; } -void CreateImageTextures(int pos) +void FreeImageTextures(int pos) { - CreateImageTexturesExt(pos, FALSE); + ImageInfo *img_info = getImageInfoEntryFromImageID(pos); + + if (img_info == NULL || !img_info->contains_textures) + return; + + FreeBitmapTextures(img_info->bitmaps); + + img_info->contains_textures = FALSE; } -void ReCreateImageTextures(int pos) +void FreeAllImageTextures() { - CreateImageTexturesExt(pos, TRUE); + int num_images = getImageListSize(); + int i; + + for (i = 0; i < num_images; i++) + FreeImageTextures(i); } void ScaleImage(int pos, int zoom_factor)