X-Git-Url: https://git.octo.it/?a=blobdiff_plain;ds=sidebyside;f=src%2Frrd_gfx.c;h=045892aa2b3c2718f2254f19ff21bb3dd47506b3;hb=ad994d046d175fec8f67cc3b7cddf3cb77d341be;hp=ba4c02c899ae85e0b146edd1618f0c6e13b2384c;hpb=d5817adfc53c7615202119507b84f1011defbe1a;p=rrdtool.git diff --git a/src/rrd_gfx.c b/src/rrd_gfx.c index ba4c02c..045892a 100644 --- a/src/rrd_gfx.c +++ b/src/rrd_gfx.c @@ -1,5 +1,5 @@ /**************************************************************************** - * RRDtool 1.2rc8 Copyright by Tobi Oetiker, 1997-2005 + * RRDtool 1.2.0 Copyright by Tobi Oetiker, 1997-2005 **************************************************************************** * rrd_gfx.c graphics wrapper for rrdtool **************************************************************************/ @@ -372,6 +372,9 @@ gfx_string gfx_string_create(FT_Face face,const char *text, unsigned int n; int error; int gottab = 0; + #ifdef HAVE_MBSTOWCS + wchar_t* w_text; + #endif ft_pen.x = 0; /* start at (0,0) !! */ ft_pen.y = 0; @@ -387,6 +390,11 @@ gfx_string gfx_string_create(FT_Face face,const char *text, string->transform.yx = (FT_Fixed)( sin(M_PI*(rotation)/180.0)*0x10000); string->transform.yy = (FT_Fixed)( cos(M_PI*(rotation)/180.0)*0x10000); + #ifdef HAVE_MBSTOWCS + w_text = (wchar_t) calloc (string->count,sizeof(wchar_t)); + mbstowcs(w_text,text,string->count); + #endif + use_kerning = FT_HAS_KERNING(face); previous = 0; glyph = string->glyphs; @@ -395,7 +403,7 @@ gfx_string gfx_string_create(FT_Face face,const char *text, /* handle the tabs ... have a witespace glyph inserted, but set its width such that the distance of the new right edge is x times tabwidth from 0,0 where x is an integer. */ - char letter = text[n]; + unsigned char letter = text[n]; gottab = 0; if (letter == '\\' && n+1 < string->count && text[n+1] == 't'){ /* we have a tab here so skip the backslash and @@ -414,7 +422,11 @@ gfx_string gfx_string_create(FT_Face face,const char *text, glyph->pos.y = 0; glyph->image = NULL; +#ifdef HAVE_MBSTOWCS + glyph->index = FT_Get_Char_Index( face, w_text[n] ); +#else glyph->index = FT_Get_Char_Index( face, letter ); +#endif /* compute glyph origin */ if ( use_kerning && previous && glyph->index ) { @@ -480,6 +492,10 @@ gfx_string gfx_string_create(FT_Face face,const char *text, string->width = string->bbox.xMax - string->bbox.xMin; } string->height = string->bbox.yMax - string->bbox.yMin; +#ifdef HAVE_MBSTOWSC + free(w_text); +#endif + return string; } @@ -1379,7 +1395,7 @@ static int eps_prologue(eps_state *state) gfx_node_t *node; fputs( "%!PS-Adobe-3.0 EPSF-3.0\n" - "%%Creator: RRDtool 1.2rc8 Tobias Oetiker, http://tobi.oetiker.ch\n" + "%%Creator: RRDtool 1.2.0 Tobias Oetiker, http://tobi.oetiker.ch\n" /* can't like weird chars here */ "%%Title: (RRDtool output)\n" "%%DocumentData: Clean7Bit\n"