]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
JPG, TGA and PNG are now supported. Also images in subdirs at the first level can...
authorterencehill <piuntn@gmail.com>
Sun, 8 Aug 2010 22:34:07 +0000 (00:34 +0200)
committerterencehill <piuntn@gmail.com>
Sun, 8 Aug 2010 22:34:07 +0000 (00:34 +0200)
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

index 175f6149a2eb8079b48298af9f844a9518e72fd1..0d59a614cba1a18657e04d09b909636b8308921f 100644 (file)
@@ -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/, .<ext>
        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)