Fixing Bug: 3273, Removing my goto calls from font.c.

This commit is contained in:
Mika Saari
2005-10-28 15:36:09 +00:00
parent 7cfa2ac608
commit 7ddf38a8b9
2 changed files with 76 additions and 38 deletions

View File

@@ -663,7 +663,14 @@ struct chartrans *text_to_curve(Object *ob, int mode)
} }
vfd= vfont_get_data(vfont); vfd= vfont_get_data(vfont);
if(!vfd) goto errcse;
/* The VFont Data can not be found */
if(!vfd)
{
if(mem)
MEM_freeN(mem);
return 0;
}
/* calc offset and rotation of each char */ /* calc offset and rotation of each char */
ct = chartransdata = ct = chartransdata =
@@ -730,13 +737,28 @@ struct chartrans *text_to_curve(Object *ob, int mode)
} }
#endif #endif
/* No VFont found */
if (vfont==0)
{
if(mem)
MEM_freeN(mem);
MEM_freeN(chartransdata);
return 0;
}
if (vfont==0) goto errcse;
if (vfont != oldvfont) { if (vfont != oldvfont) {
vfd= vfont_get_data(vfont); vfd= vfont_get_data(vfont);
oldvfont = vfont; oldvfont = vfont;
} }
if (!vfd) goto errcse;
/* VFont Data for VFont couldn't be found */
if (!vfd)
{
if(mem)
MEM_freeN(mem);
MEM_freeN(chartransdata);
return 0;
}
// The character wasn't found, propably ascii = 0, then the width shall be 0 as well // The character wasn't found, propably ascii = 0, then the width shall be 0 as well
if(!che) if(!che)
@@ -1159,7 +1181,6 @@ struct chartrans *text_to_curve(Object *ob, int mode)
return chartransdata; return chartransdata;
} }
errcse:
if(mem) if(mem)
MEM_freeN(mem); MEM_freeN(mem);

View File

@@ -66,6 +66,7 @@
#include "BKE_utildefines.h" #include "BKE_utildefines.h"
#include "BKE_font.h" #include "BKE_font.h"
#include "BKE_global.h" #include "BKE_global.h"
#include "datatoc.h" /* std font */
#include "BIF_gl.h" #include "BIF_gl.h"
#include "BIF_graphics.h" #include "BIF_graphics.h"
@@ -1717,6 +1718,7 @@ static void ui_draw_but_CHARTAB(uiBut *but)
wchar_t wstr[2]; wchar_t wstr[2];
unsigned char ustr[16]; unsigned char ustr[16];
PackedFile *pf; PackedFile *pf;
int result = 0;
/* Calculate the size of the button */ /* Calculate the size of the button */
width = abs(but->x2 - but->x1); width = abs(but->x2 - but->x1);
@@ -1824,6 +1826,21 @@ static void ui_draw_but_CHARTAB(uiBut *but)
ex = but->x1 + butw; ex = but->x1 + butw;
} }
glShadeModel(GL_FLAT); glShadeModel(GL_FLAT);
/* Return Font Settings to original */
if(U.fontsize && U.fontname[0])
{
result = FTF_SetFont(U.fontname, 0, U.fontsize);
}
else if (U.fontsize)
{
result = FTF_SetFont(datatoc_bfont_ttf, datatoc_bfont_ttf_size, U.fontsize);
}
if (result == 0)
{
result = FTF_SetFont(datatoc_bfont_ttf, datatoc_bfont_ttf_size, 11);
}
} }
#endif // INTERNATIONAL #endif // INTERNATIONAL