]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
Do not load sizes < 0 at all.
authorblub <blub@d7cf8633-e32d-0410-b094-e92efae38249>
Sun, 3 Jan 2010 11:43:08 +0000 (11:43 +0000)
committerblub <blub@d7cf8633-e32d-0410-b094-e92efae38249>
Sun, 3 Jan 2010 11:43:08 +0000 (11:43 +0000)
Trying a different snapping approach for width_of which doesn't ignore fnt->scale in DrawQ_* functions.

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@9771 d7cf8633-e32d-0410-b094-e92efae38249

ft2.c
ft2.h
gl_draw.c

diff --git a/ft2.c b/ft2.c
index ee84d5a67b682b4ee1b855f35aad81ccc7d8d385..0e7d31c6b04e42c58f1c24079658f4dc50f683c8 100644 (file)
--- a/ft2.c
+++ b/ft2.c
@@ -300,7 +300,7 @@ qboolean Font_Attach(ft2_font_t *font, ft2_attachment_t *attachment)
        return true;
 }
 
-static float Font_VirtualToRealSize(float sz)
+float Font_VirtualToRealSize(float sz)
 {
        int vh, vw, si;
        float sn;
@@ -316,7 +316,7 @@ static float Font_VirtualToRealSize(float sz)
        return si;
 }
 
-static float Font_SnapTo(float val, float snapwidth)
+float Font_SnapTo(float val, float snapwidth)
 {
        return floor(val / snapwidth + 0.5f) * snapwidth;
 }
@@ -378,7 +378,7 @@ qboolean Font_LoadFont(const char *name, dp_font_t *dpfnt)
                        break;
                }
                count = 0;
-               for (s = 0; s < MAX_FONT_SIZES; ++s)
+               for (s = 0; s < MAX_FONT_SIZES && dpfnt->req_sizes[s] >= 0; ++s)
                {
                        if (Font_LoadSize(fb, Font_VirtualToRealSize(dpfnt->req_sizes[s]), true, false))
                                ++count;
@@ -405,7 +405,7 @@ qboolean Font_LoadFont(const char *name, dp_font_t *dpfnt)
        }
 
        count = 0;
-       for (s = 0; s < MAX_FONT_SIZES; ++s)
+       for (s = 0; s < MAX_FONT_SIZES && dpfnt->req_sizes[s] >= 0; ++s)
        {
                if (Font_LoadSize(ft2, Font_VirtualToRealSize(dpfnt->req_sizes[s]), false, false))
                        ++count;
diff --git a/ft2.h b/ft2.h
index 99de79a74bd633106c818c8f9bf798d65f0ab254..6c1cf8129cdbba13037ec97975b0942be8a40ca3 100644 (file)
--- a/ft2.h
+++ b/ft2.h
@@ -72,7 +72,8 @@ ft2_font_map_t *Font_MapForIndex(ft2_font_t *font, int index);
 qboolean        Font_LoadFont(const char *name, dp_font_t *dpfnt);
 qboolean        Font_GetKerningForSize(ft2_font_t *font, float w, float h, Uchar left, Uchar right, float *outx, float *outy);
 qboolean        Font_GetKerningForMap(ft2_font_t *font, int map_index, float w, float h, Uchar left, Uchar right, float *outx, float *outy);
-
+float           Font_VirtualToRealSize(float sz);
+float           Font_SnapTo(float val, float snapwidth);
 // since this is used on a font_map_t, let's name it FontMap_*
 ft2_font_map_t *FontMap_FindForChar(ft2_font_map_t *start, Uchar ch);
 #endif // DP_FREETYPE2_H__
index 689a8614447821d2227ba5ca0283baff6b804de2..5bf47364d94e42cb2e18585f3aa36bc282287041 100644 (file)
--- a/gl_draw.c
+++ b/gl_draw.c
@@ -619,8 +619,14 @@ static void LoadFont(qboolean override, const char *name, dp_font_t *fnt)
                                        fnt->width_of[ch] = atof(com_token) + extraspacing;
                                        if (fnt->ft2)
                                        {
-                                               for (i = 0; i < MAX_FONT_SIZES && fnt->req_sizes[i] >= 0; ++i)
-                                                       Font_MapForIndex(fnt->ft2, i)->width_of[ch] = snap_to_pixel_x(fnt->width_of[ch] * fnt->req_sizes[i], 0.4);
+                                               for (i = 0; i < MAX_FONT_SIZES; ++i)
+                                               {
+                                                       //Font_MapForIndex(fnt->ft2, i)->width_of[ch] = snap_to_pixel_x(fnt->width_of[ch] * fnt->req_sizes[i], 0.4);
+                                                       ft2_font_map_t *map = Font_MapForIndex(fnt->ft2, i);
+                                                       if (!map)
+                                                               break;
+                                                       map->width_of[ch] = Font_SnapTo(fnt->width_of[ch], 1/map->size);
+                                               }
                                        }
                                        ch++;
                                        break;
@@ -789,7 +795,6 @@ static void LoadFont_f(void)
        for(i = 1; i < MAX_FONT_SIZES; ++i)
                f->req_sizes[i] = -1;
 
-       // for some reason this argc is 3 even when using 2 arguments here, maybe nexuiz screws up
        if(Cmd_Argc() >= 3)
        {
                for(i = 0; i < Cmd_Argc()-3; ++i)
@@ -1145,7 +1150,7 @@ float DrawQ_TextWidth_UntilWidth_TrackColors_Scale(const char *text, size_t *max
 
        if (fontmap)
        {
-               width_of_factor = 1;
+               width_of_factor = dw;
                width_of = fontmap->width_of;
        }
        else
@@ -1361,7 +1366,7 @@ float DrawQ_String_Scale(float startx, float starty, const char *text, size_t ma
 
        if (fontmap)
        {
-               width_of_factor = 1;
+               width_of_factor = dw;
                width_of = fontmap->width_of;
        }
        else