/****************************************************************************
- * RRDtool 1.2.12 Copyright by Tobi Oetiker, 1997-2005
+ * RRDtool 1.2.21 Copyright by Tobi Oetiker, 1997-2007
****************************************************************************
* rrd_gfx.c graphics wrapper for rrdtool
**************************************************************************/
/* #define DEBUG */
-#ifdef DEBUG
-# define DPRINTF(...) fprintf(stderr, __VA_ARGS__);
-#else
-# define DPRINTF(...)
-#endif
+/* stupid MSVC doesnt support variadic macros = no debug for now! */
+#ifdef _MSC_VER
+# define RRDPRINTF()
+#else
+# ifdef DEBUG
+# define RRDPRINTF(...) fprintf(stderr, __VA_ARGS__);
+# else
+# define RRDPRINTF(...)
+# endif /* DEBUG */
+#endif /* _MSC_VER */
#include "rrd_tool.h"
#include <png.h>
#include <ft2build.h>
canvas->aa_type == AA_LIGHT ? FT_LOAD_TARGET_LIGHT :
FT_LOAD_TARGET_MONO : FT_LOAD_TARGET_MONO);
if (error) {
- DPRINTF("couldn't load glyph: %c\n", letter)
+ RRDPRINTF("couldn't load glyph: %c\n", letter)
continue;
}
error = FT_Get_Glyph (slot, &glyph->image);
if (error) {
- DPRINTF("couldn't get glyph %c from slot %d\n", letter, (int)slot)
+ RRDPRINTF("couldn't get glyph %c from slot %d\n", letter, (int)slot)
continue;
}
/* if we are in tabbing mode, we replace the tab with a space and shift the position
FT_Vector_Transform (&vec, &string->transform);
error = FT_Glyph_Transform (glyph->image, &string->transform, &vec);
if (error) {
- DPRINTF("couldn't transform glyph id %d\n", letter)
+ RRDPRINTF("couldn't transform glyph id %d\n", letter)
continue;
}
canvas->aa_type == AA_LIGHT ? FT_RENDER_MODE_LIGHT :
FT_RENDER_MODE_MONO : FT_RENDER_MODE_MONO, 0, 1);
if (error) {
- DPRINTF("couldn't convert glyph id %d to bitmap\n", letter)
+ RRDPRINTF("couldn't convert glyph id %d to bitmap\n", letter)
continue;
}
(long)(node->size*64),
(long)(100*canvas->zoom),
(long)(100*canvas->zoom));
- if ( error ) break;
+ if ( error ) {
+ FT_Done_Face(face);
+ break;
+ }
pen_x = node->x * canvas->zoom;
pen_y = node->y * canvas->zoom;
string = gfx_string_create (canvas, face, node->text, node->angle, node->tabwidth, node->size);
+ FT_Done_Face(face);
+
switch(node->halign){
case GFX_H_RIGHT: vec.x = -string->bbox.xMax;
break;
/* long buf_x,comp_n; */
/* make copy to transform */
if (! glyph->image) {
- DPRINTF("no image\n")
+ RRDPRINTF("no image\n")
continue;
}
error = FT_Glyph_Copy (glyph->image, &image);
if (error) {
- DPRINTF("couldn't copy image\n")
+ RRDPRINTF("couldn't copy image\n")
continue;
}
text_count = mbstowcs(cstr, "Enc-Err", 6);
p = cstr;
#else
- const unsigned char *p = text, ch;
+ unsigned char *p = text;
+ unsigned char *cstr;
+ char ch;
if (!p)
return;
#endif
ch = afm_fix_osx_charset(ch); /* unsafe macro */
switch (ch) {
case 0:
-#ifdef HAVE_MBSTOWCS
+#ifdef HAVE_MBSTOWCS
free(cstr);
#endif
return;
case '"': fputs(""", fp); break;
default:
if (ch == 32) {
+#ifdef HAVE_MBSTOWCS
if (p <= cstr + 1 || !*p || *p == 32)
fputs(" ", fp); /* non-breaking space in unicode */
else
+#endif
fputc(32, fp);
} else if (ch < 32 || ch >= 127)
fprintf(fp, "&#%d;", (int)ch);
text_count = mbstowcs(cstr, "Enc-Err", 6);
p = cstr;
#else
- const unsigned char *p = node->text, ch;
+ const unsigned char *p = node->text;
+ unsigned char ch;
if (!p)
return;
#endif
default:
if (ch > 255) {
pdf_put_char(buf, '?');
- } else if (ch >= 126 || ch < 32) {
+ } else if (ch > 125 || ch < 32) {
pdf_put_char(buf, ch);
- } else if (ch >= 0 && ch <= 255) {
+ } else {
char tmp[10];
snprintf(tmp, sizeof(tmp), "\\%03o", (int)ch);
pdf_puts(buf, tmp);