From 5b6831420256ace5cacb5440598eb02b8b631b85 Mon Sep 17 00:00:00 2001 From: terencehill Date: Mon, 9 Aug 2010 00:34:07 +0200 Subject: [PATCH] JPG, TGA and PNG are now supported. Also images in subdirs at the first level can be seen. Yes, PNG's day has come... :D I've found out that PNGs produced by the engine are read normally (no crash!), unlike PNGs generated by external apps (though really common apps, such as Gimp and Paint for WinXP). --- qcsrc/menu/xonotic/screenshotlist.c | 58 ++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/qcsrc/menu/xonotic/screenshotlist.c b/qcsrc/menu/xonotic/screenshotlist.c index 175f6149a..0d59a614c 100644 --- a/qcsrc/menu/xonotic/screenshotlist.c +++ b/qcsrc/menu/xonotic/screenshotlist.c @@ -49,34 +49,58 @@ void XonoticScreenshotList_configureXonoticScreenshotList(entity me) string XonoticScreenshotList_screenshotName(entity me, float i ) { string s; - s = search_getfilename(me.listScreenshot, i); - s = substring(s, 12, strlen(s) - 12 - 4); // screenshots/, .jpg + s = bufstr_get(me.listScreenshot, i); + s = substring(s, 12, strlen(s) - 12 - 4); // screenshots/, . return s; } -void XonoticScreenshotList_getScreenshots(entity me) +// if subdir is TRUE look in subdirectories too (1 level) +void getScreenshots_for_ext(entity me, string ext, float subdir) { string s; - - if(me.filterString) - //subdirectory in filterString allowed - s=strcat("screenshots/", me.filterString, ".jpg"); + if (subdir) + s="screenshots/*/"; else - s="screenshots/*.jpg"; - - //dprint("Search screenshots with the pattern ", s, "\n"); - if(me.listScreenshot >= 0) - search_end(me.listScreenshot); - me.listScreenshot = search_begin(s, FALSE, TRUE); - if(me.listScreenshot < 0) - me.nItems=0; + s="screenshots/"; + if(me.filterString) + s=strcat(s, me.filterString, ext); else - me.nItems=search_getsize(me.listScreenshot); + s=strcat(s, "*", ext); + + float list, i, n; + list = search_begin(s, FALSE, TRUE); + if(list >= 0) + { + n = search_getsize(list); + for(i = 0; i < n; ++i) + bufstr_add(me.listScreenshot, search_getfilename(list, i), TRUE); + search_end(list); + } + + if (subdir) + getScreenshots_for_ext(me, ext, FALSE); +} + +void XonoticScreenshotList_getScreenshots(entity me) +{ + if (me.listScreenshot >= 0) + buf_del(me.listScreenshot); + me.listScreenshot = buf_create(); + if (me.listScreenshot < 0) + { + me.nItems = 0; + return; + } + getScreenshots_for_ext(me, ".jpg", TRUE); + getScreenshots_for_ext(me, ".tga", TRUE); + getScreenshots_for_ext(me, ".png", TRUE); + me.nItems = buf_getsize(me.listScreenshot); + buf_sort(me.listScreenshot, 128, FALSE); } void XonoticScreenshotList_destroy(entity me) { - search_end(me.listScreenshot); + buf_del(me.listScreenshot); } void XonoticScreenshotList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) -- 2.39.2