Merge branch 'sev/menu_icons_mipmap' into 'master'
authorMario <zacjardine@y7mail.com>
Thu, 30 Jul 2015 05:26:59 +0000 (05:26 +0000)
committerMario <zacjardine@y7mail.com>
Thu, 30 Jul 2015 05:26:59 +0000 (05:26 +0000)
Fix blurry menu icons

Before I made Luma, new gametype and serverlist icons were added to the existing menu themes.
However, they are too sharp, which causes aliasing in-game.
Seemingly as a quick and dirty fix, some of those images are preloaded with the MIPMAP flag.

This inconsistent drawing of the images causes issues for Luma,
where the icons get too blurry (http://i.imgur.com/9mJCnJA.png).

This branch makes the following fixes:
- All server icons are either fixed or remade, so they don't need MIPMAP.
- Each menu theme can chose itself if the gametype icons need MIPMAP,
with the new theme variable BOOL_GAMETYPELIST_ICON_BLUR.

See merge request !151

31 files changed:
gfx/menu/luma/skinvalues.txt
gfx/menu/luminos/icon_ipv4.tga
gfx/menu/luminos/icon_ipv6.tga
gfx/menu/luminos/icon_mod_.tga
gfx/menu/luminos/icon_mod_MinstaGib.tga
gfx/menu/luminos/icon_mod_NewToys.tga
gfx/menu/luminos/icon_mod_Overkill.tga
gfx/menu/luminos/icon_mod_instagib.tga
gfx/menu/luminos/icon_pure1.tga
gfx/menu/luminos/skinvalues.txt
gfx/menu/wickedx/icon_ipv4.tga
gfx/menu/wickedx/icon_ipv6.tga
gfx/menu/wickedx/icon_mod_.tga
gfx/menu/wickedx/icon_mod_MinstaGib.tga
gfx/menu/wickedx/icon_mod_NewToys.tga
gfx/menu/wickedx/icon_mod_Overkill.tga
gfx/menu/wickedx/icon_mod_instagib.tga
gfx/menu/wickedx/icon_pure1.tga
gfx/menu/wickedx/skinvalues.txt
gfx/menu/xaw/icon_ipv4.tga
gfx/menu/xaw/icon_ipv6.tga
gfx/menu/xaw/icon_mod_.tga
gfx/menu/xaw/icon_mod_MinstaGib.tga
gfx/menu/xaw/icon_mod_NewToys.tga
gfx/menu/xaw/icon_mod_Overkill.tga
gfx/menu/xaw/icon_mod_instagib.tga
gfx/menu/xaw/icon_pure1.tga
gfx/menu/xaw/skinvalues.txt
qcsrc/menu/skin-customizables.inc
qcsrc/menu/xonotic/gametypelist.qc
qcsrc/menu/xonotic/serverlist.qc

index ed335aa..c997fea 100644 (file)
@@ -126,6 +126,9 @@ HEIGHT_NORMAL                 1.45
 HEIGHT_TITLE                  1.45
 HEIGHT_ZOOMEDTITLE            -1
 
+// gametypelist
+BOOL_GAMETYPELIST_ICON_BLUR   0
+
 // inputbox
 COLOR_INPUTBOX_F              '1 1 1'
 COLOR_INPUTBOX_N              '1 1 1'
index a0484f4..74b4413 100644 (file)
Binary files a/gfx/menu/luminos/icon_ipv4.tga and b/gfx/menu/luminos/icon_ipv4.tga differ
index d3fdc03..fe1227c 100644 (file)
Binary files a/gfx/menu/luminos/icon_ipv6.tga and b/gfx/menu/luminos/icon_ipv6.tga differ
index 0b31a34..63738cb 100644 (file)
Binary files a/gfx/menu/luminos/icon_mod_.tga and b/gfx/menu/luminos/icon_mod_.tga differ
index 518fd79..065b844 100644 (file)
Binary files a/gfx/menu/luminos/icon_mod_MinstaGib.tga and b/gfx/menu/luminos/icon_mod_MinstaGib.tga differ
index cf88f77..00acb71 100644 (file)
Binary files a/gfx/menu/luminos/icon_mod_NewToys.tga and b/gfx/menu/luminos/icon_mod_NewToys.tga differ
index 743722e..42e92c6 100644 (file)
Binary files a/gfx/menu/luminos/icon_mod_Overkill.tga and b/gfx/menu/luminos/icon_mod_Overkill.tga differ
index 518fd79..065b844 100644 (file)
Binary files a/gfx/menu/luminos/icon_mod_instagib.tga and b/gfx/menu/luminos/icon_mod_instagib.tga differ
index 62980d2..7f7a130 100644 (file)
Binary files a/gfx/menu/luminos/icon_pure1.tga and b/gfx/menu/luminos/icon_pure1.tga differ
index d465f13..ca0384f 100755 (executable)
@@ -196,6 +196,9 @@ COLOR_DIALOG_SCREENSHOTVIEWER   '1 1 1'
 COLOR_DIALOG_CVARS              '1 0 0'
 COLOR_DIALOG_HUDCONFIRM         '1 0 0'
 
+// gametypelist
+BOOL_GAMETYPELIST_ICON_BLUR     1
+
 // item: input box
 //   uses "inputbox" images
 COLOR_INPUTBOX_N                '1 1 1'
index a0484f4..74b4413 100644 (file)
Binary files a/gfx/menu/wickedx/icon_ipv4.tga and b/gfx/menu/wickedx/icon_ipv4.tga differ
index d3fdc03..fe1227c 100644 (file)
Binary files a/gfx/menu/wickedx/icon_ipv6.tga and b/gfx/menu/wickedx/icon_ipv6.tga differ
index 0b31a34..63738cb 100644 (file)
Binary files a/gfx/menu/wickedx/icon_mod_.tga and b/gfx/menu/wickedx/icon_mod_.tga differ
index 518fd79..065b844 100644 (file)
Binary files a/gfx/menu/wickedx/icon_mod_MinstaGib.tga and b/gfx/menu/wickedx/icon_mod_MinstaGib.tga differ
index cf88f77..00acb71 100644 (file)
Binary files a/gfx/menu/wickedx/icon_mod_NewToys.tga and b/gfx/menu/wickedx/icon_mod_NewToys.tga differ
index 743722e..42e92c6 100644 (file)
Binary files a/gfx/menu/wickedx/icon_mod_Overkill.tga and b/gfx/menu/wickedx/icon_mod_Overkill.tga differ
index 518fd79..065b844 100644 (file)
Binary files a/gfx/menu/wickedx/icon_mod_instagib.tga and b/gfx/menu/wickedx/icon_mod_instagib.tga differ
index 62980d2..7f7a130 100644 (file)
Binary files a/gfx/menu/wickedx/icon_pure1.tga and b/gfx/menu/wickedx/icon_pure1.tga differ
index 09ded4b..b7011a0 100644 (file)
@@ -196,6 +196,9 @@ COLOR_DIALOG_SCREENSHOTVIEWER   '1 1 1'
 COLOR_DIALOG_CVARS              '1 0 0'
 COLOR_DIALOG_HUDCONFIRM         '1 0 0'
 
+// gametypelist
+BOOL_GAMETYPELIST_ICON_BLUR     1
+
 // item: input box
 //   uses "inputbox" images
 COLOR_INPUTBOX_N                '1 1 1'
index a0484f4..74b4413 100644 (file)
Binary files a/gfx/menu/xaw/icon_ipv4.tga and b/gfx/menu/xaw/icon_ipv4.tga differ
index d3fdc03..fe1227c 100644 (file)
Binary files a/gfx/menu/xaw/icon_ipv6.tga and b/gfx/menu/xaw/icon_ipv6.tga differ
index 0b31a34..63738cb 100644 (file)
Binary files a/gfx/menu/xaw/icon_mod_.tga and b/gfx/menu/xaw/icon_mod_.tga differ
index 518fd79..065b844 100644 (file)
Binary files a/gfx/menu/xaw/icon_mod_MinstaGib.tga and b/gfx/menu/xaw/icon_mod_MinstaGib.tga differ
index cf88f77..00acb71 100644 (file)
Binary files a/gfx/menu/xaw/icon_mod_NewToys.tga and b/gfx/menu/xaw/icon_mod_NewToys.tga differ
index 743722e..42e92c6 100644 (file)
Binary files a/gfx/menu/xaw/icon_mod_Overkill.tga and b/gfx/menu/xaw/icon_mod_Overkill.tga differ
index 518fd79..065b844 100644 (file)
Binary files a/gfx/menu/xaw/icon_mod_instagib.tga and b/gfx/menu/xaw/icon_mod_instagib.tga differ
index 62980d2..7f7a130 100644 (file)
Binary files a/gfx/menu/xaw/icon_pure1.tga and b/gfx/menu/xaw/icon_pure1.tga differ
index 00df324..5f4bbaa 100644 (file)
@@ -114,6 +114,9 @@ COLOR_CVARLIST_CHANGED          '1 0 0'
 COLOR_CVARLIST_UNCHANGED        '1 1 1'
 COLOR_CVARLIST_CONTROLS         '1 0 0'
 
+// gametypelist
+BOOL_GAMETYPELIST_ICON_BLUR     1
+
 // item: dialog
 //   uses "border" images
 //   uses "closebutton" images
index bf29683..d5e1f82 100644 (file)
@@ -175,6 +175,9 @@ SKINBEGIN
        SKINVECTOR(COLOR_CLEARBUTTON_F, '1 1 1');
        SKINVECTOR(COLOR_CLEARBUTTON_C, '1 1 1');
 
+       // item: gametype list
+       SKINFLOAT(BOOL_GAMETYPELIST_ICON_BLUR, 1);
+
        // item: key grabber
        SKINVECTOR(COLOR_KEYGRABBER_TITLES, '1 1 1');
        SKINFLOAT(ALPHA_KEYGRABBER_TITLES, 1);
@@ -247,7 +250,6 @@ SKINBEGIN
        SKINVECTOR(COLOR_SERVERLIST_FAVORITE, '1 1 1');
        SKINFLOAT(ALPHA_SERVERLIST_IMPOSSIBLE, 0.7);
        SKINVECTOR(COLOR_SERVERLIST_IMPOSSIBLE, '0.3 0.3 0.3');
-       SKINSTRING(GFX_SERVERLIST_ICON, "icon");
        SKINFLOAT(ALPHA_SERVERLIST_ICON_NONPURE, 0.5);
 
        // item: server info
index 26845f0..030af67 100644 (file)
@@ -36,9 +36,11 @@ void XonoticGametypeList_configureXonoticGametypeList(entity me)
        me.configureXonoticListBox(me);
        me.nItems = GameType_GetCount();
 
-       // we want the pics mipmapped
-       for(int i = 0; i < GameType_GetCount(); ++i)
-               draw_PreloadPictureWithFlags(GameType_GetIcon(i), PRECACHE_PIC_MIPMAP);
+       if(SKINBOOL_GAMETYPELIST_ICON_BLUR)
+       {
+               for(int i = 0; i < GameType_GetCount(); ++i)
+                       draw_PreloadPictureWithFlags(GameType_GetIcon(i), PRECACHE_PIC_MIPMAP);
+       }
 
        me.loadCvars(me);
 }
index 8bf70cc..33203c5 100644 (file)
@@ -1160,57 +1160,46 @@ void XonoticServerList_drawListBoxItem(entity me, int i, vector absSize, bool is
        iconPos_x = (me.columnIconsSize - 3 * iconSize.x) * 0.5;
        iconPos_y = (1 - iconSize.y) * 0.5;
 
-       string n;
-
-       if (!(me.seenIPv4 && me.seenIPv6))
-       {
-               iconPos.x += iconSize.x * 0.5;
-       }
-       else if(me.seenIPv4 && me.seenIPv6)
+       // IP
+       if(me.seenIPv4 && me.seenIPv6)
        {
-               n = string_null;
                if(isv6)
-                       draw_PreloadPictureWithFlags(n = strcat(SKINGFX_SERVERLIST_ICON, "_ipv6"), 0); // PRECACHE_PIC_MIPMAP
+                       draw_Picture(iconPos, "icon_ipv6", iconSize, '1 1 1', 1);
                else if(isv4)
-                       draw_PreloadPictureWithFlags(n = strcat(SKINGFX_SERVERLIST_ICON, "_ipv4"), 0); // PRECACHE_PIC_MIPMAP
-               if(n)
-                       draw_Picture(iconPos, n, iconSize, '1 1 1', 1);
-               iconPos.x += iconSize.x;
+                       draw_Picture(iconPos, "icon_ipv4", iconSize, '1 1 1', 1);
        }
 
+       iconPos.x += iconSize.x;
+
+       // AES
        if(q > 0)
-       {
-               draw_PreloadPictureWithFlags(n = strcat(SKINGFX_SERVERLIST_ICON, "_aeslevel", ftos(q)), 0); // PRECACHE_PIC_MIPMAP
-               draw_Picture(iconPos, n, iconSize, '1 1 1', 1);
-       }
+               draw_Picture(iconPos, strcat("icon_aeslevel", ftos(q)), iconSize, '1 1 1', 1);
+
        iconPos.x += iconSize.x;
 
+       // Mod
        if(modname == "Xonotic")
        {
                if(pure == 0)
-               {
-                       draw_PreloadPictureWithFlags(n = strcat(SKINGFX_SERVERLIST_ICON, "_pure1"), PRECACHE_PIC_MIPMAP);
-                       draw_Picture(iconPos, n, iconSize, '1 1 1', 1);
-               }
+                       draw_Picture(iconPos, "icon_pure1", iconSize, '1 1 1', 1);
        }
        else
        {
-               draw_PreloadPictureWithFlags(n = strcat(SKINGFX_SERVERLIST_ICON, "_mod_", modname), PRECACHE_PIC_MIPMAP);
-               if(draw_PictureSize(n) == '0 0 0')
-                       draw_PreloadPictureWithFlags(n = strcat(SKINGFX_SERVERLIST_ICON, "_mod_"), PRECACHE_PIC_MIPMAP);
+               string icon = strcat("icon_mod_", modname);
+               if(draw_PictureSize(icon) == '0 0 0')
+                       icon = "icon_mod_";
+
                if(pure == 0)
-                       draw_Picture(iconPos, n, iconSize, '1 1 1', 1);
+                       draw_Picture(iconPos, icon, iconSize, '1 1 1', 1);
                else
-                       draw_Picture(iconPos, n, iconSize, '1 1 1', SKINALPHA_SERVERLIST_ICON_NONPURE);
+                       draw_Picture(iconPos, icon, iconSize, '1 1 1', SKINALPHA_SERVERLIST_ICON_NONPURE);
        }
+
        iconPos.x += iconSize.x;
 
+       // Stats
        if(sflags >= 0 && (sflags & SERVERFLAG_PLAYERSTATS))
-       {
-               draw_PreloadPictureWithFlags(n = strcat(SKINGFX_SERVERLIST_ICON, "_stats1"), 0); // PRECACHE_PIC_MIPMAP
-               draw_Picture(iconPos, n, iconSize, '1 1 1', 1);
-       }
-       iconPos.x += iconSize.x;
+               draw_Picture(iconPos, "icon_stats1", iconSize, '1 1 1', 1);
 
        // --------------
        //  RENDER TEXT