1
/* GDCHART 0.10.0dev GDC.C 2 Nov 2000 */
2
/* Copyright Bruce Verderaime 1998, 1999, 2000 */
8
struct GDC_FONT_T GDC_fontc[GDC_numfonts] = { (gdFontPtr)NULL, 8, 5,
10
(gdFontPtr)NULL, 12, 6,
11
(gdFontPtr)NULL, 13, 7,
12
(gdFontPtr)NULL, 16, 8,
13
(gdFontPtr)NULL, 15, 9 };
15
/* ------------------------------------------------------------------- *\
16
* convert from enum GDC_font_size to gd fonts
17
* for now load them all
18
* #defines and #ifdefs might enable loading only needed fonts
19
\* ------------------------------------------------------------------- */
21
load_font_conversions()
23
GDC_fontc[GDC_pad].f = gdFontTiny;
24
GDC_fontc[GDC_TINY].f = gdFontTiny;
25
GDC_fontc[GDC_SMALL].f = gdFontSmall;
26
GDC_fontc[GDC_MEDBOLD].f = gdFontMediumBold;
27
GDC_fontc[GDC_LARGE].f = gdFontLarge;
28
GDC_fontc[GDC_GIANT].f = gdFontGiant;
31
/* ------------------------------------------------------------------ *\
32
* count (natural) substrings (new line sep)
33
\* ------------------------------------------------------------------ */
36
int *len ) /* strlen - max seg */
39
short max_seg_len = 0;
54
max_seg_len = MAX( tmplen, max_seg_len );
63
*len = MAX( tmplen, max_seg_len ); /* don't forget last seg */
67
/* ------------------------------------------------------------------ *\
68
* gd out a string with '\n's
69
\* ------------------------------------------------------------------ */
71
GDCImageStringNL( gdImagePtr im,
77
GDC_justify_t justify )
82
short strs_num = cnt_nl( str, &max_len );
83
char sub_str[max_len+1];
92
sub_str[len] = *(str+i);
93
if( *(str+i) == '\n' ||
102
case GDC_JUSTIFY_LEFT: xpos = x; break;
103
case GDC_JUSTIFY_RIGHT: xpos = x+f->w*(max_len-len); break;
104
case GDC_JUSTIFY_CENTER:
105
default: xpos = x+f->w*(max_len-len)/2;
110
y + (f->h-1)*strs_num,
119
/* ------------------------------------------------------------------------ *\
121
* really get a unique color from the color map *
122
\* ------------------------------------------------------------------------ */
124
get_uniq_color( gdImagePtr im )
129
/* ------------------------------------------------------------------------ */
131
GDC_destroy_image(void *im)
134
gdImageDestroy( (gdImagePtr)im );
137
/* ------------------------------------------------------------------------ */
139
out_err( int IMGWIDTH,
142
unsigned long BGColor,
143
unsigned long LineColor,
152
if( (GDC_hold_img & GDC_REUSE_IMAGE) &&
153
GDC_image != (void*)NULL )
156
im = gdImageCreate( IMGWIDTH, IMGHEIGHT );
158
bgclr = gdImageColorAllocate( im, l2gdcal(BGColor) );
159
lineclr = gdImageColorAllocate( im, l2gdcal(LineColor) );
163
IMGWIDTH/2 - GDC_fontc[GDC_MEDBOLD].w*strlen(err_str)/2,
168
/* usually GDC_generate_img is used in conjunction with hard or hold options */
169
if( GDC_generate_img )
171
fflush(fptr); // clear anything buffered
172
switch( GDC_image_type )
174
case GDC_PNG: gdImagePng( im, fptr ); break;
176
case GDC_JPEG: gdImageJpeg( im, fptr, GDC_jpeg_quality ); break;
178
case GDC_WBMP: gdImageWBMP( im, lineclr, fptr ); break;
180
default: /* gdImageGif( im, fptr); */ gdImagePng( im, fptr );
184
if( GDC_hold_img & GDC_EXPOSE_IMAGE )
185
GDC_image = (void*)im;