Lines 27-32
Link Here
|
27 |
*/ |
27 |
*/ |
28 |
|
28 |
|
29 |
#include <math.h> |
29 |
#include <math.h> |
|
|
30 |
#include <stdlib.h> |
30 |
#include <stdio.h> |
31 |
#include <stdio.h> |
31 |
#include <string.h> |
32 |
#include <string.h> |
32 |
#include <sys/types.h> |
33 |
#include <sys/types.h> |
Lines 34-39
Link Here
|
34 |
#include <gdfontt.h> |
35 |
#include <gdfontt.h> |
35 |
#include <gdfonts.h> |
36 |
#include <gdfonts.h> |
36 |
#include <gdfontmb.h> |
37 |
#include <gdfontmb.h> |
|
|
38 |
#include <iconv.h> |
37 |
|
39 |
|
38 |
#include "webalizer.h" |
40 |
#include "webalizer.h" |
39 |
#include "lang.h" |
41 |
#include "lang.h" |
Lines 60-65
Link Here
|
60 |
|
62 |
|
61 |
void init_graph(char *, int, int); |
63 |
void init_graph(char *, int, int); |
62 |
struct pie_data *calc_arc(float, float); |
64 |
struct pie_data *calc_arc(float, float); |
|
|
65 |
int koi2utf(char *code, char *buf, int out_len); |
66 |
void gdImageStringRus(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color); |
67 |
void gdImageStringUpRus(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color); |
63 |
|
68 |
|
64 |
/* common public declarations */ |
69 |
/* common public declarations */ |
65 |
|
70 |
|
Lines 73-78
Link Here
|
73 |
float percent; /* percent storage */ |
78 |
float percent; /* percent storage */ |
74 |
u_long julday; /* julday value */ |
79 |
u_long julday; /* julday value */ |
75 |
|
80 |
|
|
|
81 |
int koi2utf(char *code, char *buf, int out_len) { |
82 |
iconv_t cd; |
83 |
size_t k, f, t; |
84 |
int se; |
85 |
const char* in = code; |
86 |
char* out = buf; |
87 |
|
88 |
cd = iconv_open("UTF-8", "KOI8-R"); |
89 |
if( cd == (iconv_t)(-1) ) |
90 |
perror("iconv_open"); |
91 |
f = strlen(code); |
92 |
t = out_len; |
93 |
memset( buf, 0, out_len); |
94 |
errno = 0; |
95 |
k = iconv(cd, (char **)&in, &f, &out, &t); |
96 |
se = errno; |
97 |
if(se != 0) { |
98 |
perror("Error converting"); |
99 |
return 1; |
100 |
} |
101 |
|
102 |
iconv_close(cd); |
103 |
return 0; |
104 |
} |
105 |
|
106 |
void gdImageStringRus(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color) |
107 |
{ |
108 |
int rect[8]; |
109 |
char *buf; |
110 |
int buflen; |
111 |
|
112 |
buflen = strlen(s) * 2; // Unicode string |
113 |
buf = (char *)malloc(buflen); |
114 |
koi2utf(s, buf, buflen); |
115 |
gdImageStringFT(NULL, &rect[0], color, FontName, FontSize, 0.0, x, y, buf); |
116 |
gdImageStringFT(im, &rect[0], color, FontName, FontSize, 0.0, x, y+FontSize, buf); |
117 |
free(buf); |
118 |
} |
119 |
|
120 |
void gdImageStringUpRus(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color) |
121 |
{ |
122 |
int rect[8]; |
123 |
char *buf; |
124 |
int buflen; |
125 |
|
126 |
buflen = strlen(s) * 2; // Unicode string |
127 |
buf = (char *)malloc(buflen); |
128 |
koi2utf(s, buf, buflen); |
129 |
gdImageStringFT(NULL, &rect[0], color, FontName, FontSize, 1.57, x, y, buf); |
130 |
gdImageStringFT(im, &rect[0], color, FontName, FontSize, 1.57, x+FontSize, y, buf); |
131 |
free(buf); |
132 |
} |
133 |
|
76 |
struct pie_data { int x; int y; /* line x,y */ |
134 |
struct pie_data { int x; int y; /* line x,y */ |
77 |
int mx; int my; }; /* midpoint x,y */ |
135 |
int mx; int my; }; /* midpoint x,y */ |
78 |
/* colors */ |
136 |
/* colors */ |
Lines 128-134
Link Here
|
128 |
s_mth = fmonth; |
186 |
s_mth = fmonth; |
129 |
for (i=0;i<12;i++) |
187 |
for (i=0;i<12;i++) |
130 |
{ |
188 |
{ |
131 |
gdImageString(im,gdFontSmall,28+(i*23), /* use language */ |
189 |
gdImageStringRus(im,gdFontSmall,28+(i*23), /* use language */ |
132 |
238,s_month[s_mth-1],black); /* specific array */ |
190 |
238,s_month[s_mth-1],black); /* specific array */ |
133 |
s_mth++; |
191 |
s_mth++; |
134 |
if (s_mth > 12) s_mth = 1; |
192 |
if (s_mth > 12) s_mth = 1; |
Lines 138-175
Link Here
|
138 |
} |
196 |
} |
139 |
if (maxval <= 0) maxval = 1; |
197 |
if (maxval <= 0) maxval = 1; |
140 |
sprintf(maxvaltxt, "%lu", maxval); |
198 |
sprintf(maxvaltxt, "%lu", maxval); |
141 |
gdImageStringUp(im,gdFontSmall,8,26+(strlen(maxvaltxt)*6),maxvaltxt,black); |
199 |
gdImageStringUpRus(im,gdFontSmall,8,26+(strlen(maxvaltxt)*6),maxvaltxt,black); |
142 |
|
200 |
|
143 |
if (graph_legend) /* print color coded legends? */ |
201 |
if (graph_legend) /* print color coded legends? */ |
144 |
{ |
202 |
{ |
145 |
/* Kbytes Legend */ |
203 |
/* Kbytes Legend */ |
146 |
i = (strlen(msg_h_xfer)*6); |
204 |
i = (strlen(msg_h_xfer)*6); |
147 |
gdImageString(im,gdFontSmall,491-i,239,msg_h_xfer,dkgrey); |
205 |
gdImageStringRus(im,gdFontSmall,491-i,239,msg_h_xfer,dkgrey); |
148 |
gdImageString(im,gdFontSmall,490-i,238,msg_h_xfer,COLOR4); |
206 |
gdImageStringRus(im,gdFontSmall,490-i,238,msg_h_xfer,COLOR4); |
149 |
|
207 |
|
150 |
/* Sites/Visits Legend */ |
208 |
/* Sites/Visits Legend */ |
151 |
i = (strlen(msg_h_visits)*6); |
209 |
i = (strlen(msg_h_visits)*6); |
152 |
j = (strlen(msg_h_sites)*6); |
210 |
j = (strlen(msg_h_sites)*6); |
153 |
gdImageString(im,gdFontSmall,491-i-j-12,11,msg_h_visits,dkgrey); |
211 |
gdImageStringRus(im,gdFontSmall,491-i-j-12,11,msg_h_visits,dkgrey); |
154 |
gdImageString(im,gdFontSmall,490-i-j-12,10,msg_h_visits,COLOR6); |
212 |
gdImageStringRus(im,gdFontSmall,490-i-j-12,10,msg_h_visits,COLOR6); |
155 |
gdImageString(im,gdFontSmall,491-j-9,11,"/",dkgrey); |
213 |
gdImageStringRus(im,gdFontSmall,491-j-9,11,"/",dkgrey); |
156 |
gdImageString(im,gdFontSmall,490-j-9,10,"/",black); |
214 |
gdImageStringRus(im,gdFontSmall,490-j-9,10,"/",black); |
157 |
gdImageString(im,gdFontSmall,491-j,11,msg_h_sites,dkgrey); |
215 |
gdImageStringRus(im,gdFontSmall,491-j,11,msg_h_sites,dkgrey); |
158 |
gdImageString(im,gdFontSmall,490-j,10,msg_h_sites,COLOR3); |
216 |
gdImageStringRus(im,gdFontSmall,490-j,10,msg_h_sites,COLOR3); |
159 |
|
217 |
|
160 |
/* Hits/Files/Pages Legend */ |
218 |
/* Hits/Files/Pages Legend */ |
161 |
i = (strlen(msg_h_pages)*6); |
219 |
i = (strlen(msg_h_pages)*6); |
162 |
j = (strlen(msg_h_files)*6); |
220 |
j = (strlen(msg_h_files)*6); |
163 |
gdImageStringUp(im,gdFontSmall,8,231,msg_h_pages,dkgrey); |
221 |
gdImageStringUpRus(im,gdFontSmall,8,231,msg_h_pages,dkgrey); |
164 |
gdImageStringUp(im,gdFontSmall,7,230,msg_h_pages,COLOR5); |
222 |
gdImageStringUpRus(im,gdFontSmall,7,230,msg_h_pages,COLOR5); |
165 |
gdImageStringUp(im,gdFontSmall,8,231-i-3,"/",dkgrey); |
223 |
gdImageStringUpRus(im,gdFontSmall,8,231-i-3,"/",dkgrey); |
166 |
gdImageStringUp(im,gdFontSmall,7,230-i-3,"/",black); |
224 |
gdImageStringUpRus(im,gdFontSmall,7,230-i-3,"/",black); |
167 |
gdImageStringUp(im,gdFontSmall,8,231-i-12,msg_h_files,dkgrey); |
225 |
gdImageStringUpRus(im,gdFontSmall,8,231-i-12,msg_h_files,dkgrey); |
168 |
gdImageStringUp(im,gdFontSmall,7,230-i-12,msg_h_files,COLOR2); |
226 |
gdImageStringUpRus(im,gdFontSmall,7,230-i-12,msg_h_files,COLOR2); |
169 |
gdImageStringUp(im,gdFontSmall,8,231-i-j-15,"/",dkgrey); |
227 |
gdImageStringUpRus(im,gdFontSmall,8,231-i-j-15,"/",dkgrey); |
170 |
gdImageStringUp(im,gdFontSmall,7,230-i-j-15,"/",black); |
228 |
gdImageStringUpRus(im,gdFontSmall,7,230-i-j-15,"/",black); |
171 |
gdImageStringUp(im,gdFontSmall,8,231-i-j-24,msg_h_hits,dkgrey); |
229 |
gdImageStringUpRus(im,gdFontSmall,8,231-i-j-24,msg_h_hits,dkgrey); |
172 |
gdImageStringUp(im,gdFontSmall,7,230-i-j-24,msg_h_hits,COLOR1); |
230 |
gdImageStringUpRus(im,gdFontSmall,7,230-i-j-24,msg_h_hits,COLOR1); |
173 |
} |
231 |
} |
174 |
|
232 |
|
175 |
/* data1 */ |
233 |
/* data1 */ |
Lines 222-228
Link Here
|
222 |
} |
280 |
} |
223 |
if (maxval <= 0) maxval = 1; |
281 |
if (maxval <= 0) maxval = 1; |
224 |
sprintf(maxvaltxt, "%lu", maxval); |
282 |
sprintf(maxvaltxt, "%lu", maxval); |
225 |
gdImageStringUp(im, gdFontSmall,493,26+(strlen(maxvaltxt)*6), |
283 |
gdImageStringUpRus(im, gdFontSmall,493,26+(strlen(maxvaltxt)*6), |
226 |
maxvaltxt, black); |
284 |
maxvaltxt, black); |
227 |
|
285 |
|
228 |
/* data6 */ |
286 |
/* data6 */ |
Lines 258-264
Link Here
|
258 |
if (data4[i] > fmaxval) fmaxval = data4[i]; /* get max val */ |
316 |
if (data4[i] > fmaxval) fmaxval = data4[i]; /* get max val */ |
259 |
if (fmaxval <= 0.0) fmaxval = 1.0; |
317 |
if (fmaxval <= 0.0) fmaxval = 1.0; |
260 |
sprintf(maxvaltxt, "%.0f", fmaxval); |
318 |
sprintf(maxvaltxt, "%.0f", fmaxval); |
261 |
gdImageStringUp(im, gdFontSmall,493,130+(strlen(maxvaltxt)*6), |
319 |
gdImageStringUpRus(im, gdFontSmall,493,130+(strlen(maxvaltxt)*6), |
262 |
maxvaltxt,black); |
320 |
maxvaltxt,black); |
263 |
|
321 |
|
264 |
/* data4 */ |
322 |
/* data4 */ |
Lines 340-348
Link Here
|
340 |
for (i=0;i<31;i++) |
398 |
for (i=0;i<31;i++) |
341 |
{ |
399 |
{ |
342 |
if ((julday % 7 == 6) || (julday % 7 == 0)) |
400 |
if ((julday % 7 == 6) || (julday % 7 == 0)) |
343 |
gdImageString(im,gdFontSmall,25+(i*15),382,numchar[i+1],COLOR1); |
401 |
gdImageStringRus(im,gdFontSmall,25+(i*15),382,numchar[i+1],COLOR1); |
344 |
else |
402 |
else |
345 |
gdImageString(im,gdFontSmall,25+(i*15),382,numchar[i+1],black); |
403 |
gdImageStringRus(im,gdFontSmall,25+(i*15),382,numchar[i+1],black); |
346 |
julday++; |
404 |
julday++; |
347 |
} |
405 |
} |
348 |
|
406 |
|
Lines 355-392
Link Here
|
355 |
} |
413 |
} |
356 |
if (maxval <= 0) maxval = 1; |
414 |
if (maxval <= 0) maxval = 1; |
357 |
sprintf(maxvaltxt, "%lu", maxval); |
415 |
sprintf(maxvaltxt, "%lu", maxval); |
358 |
gdImageStringUp(im, gdFontSmall,8,26+(strlen(maxvaltxt)*6), |
416 |
gdImageStringUpRus(im, gdFontSmall,8,26+(strlen(maxvaltxt)*6), |
359 |
maxvaltxt,black); |
417 |
maxvaltxt,black); |
360 |
|
418 |
|
361 |
if (graph_legend) /* Print color coded legends? */ |
419 |
if (graph_legend) /* Print color coded legends? */ |
362 |
{ |
420 |
{ |
363 |
/* Kbytes Legend */ |
421 |
/* Kbytes Legend */ |
364 |
gdImageStringUp(im,gdFontSmall,494,376,msg_h_xfer,dkgrey); |
422 |
gdImageStringUpRus(im,gdFontSmall,494,376,msg_h_xfer,dkgrey); |
365 |
gdImageStringUp(im,gdFontSmall,493,375,msg_h_xfer,COLOR4); |
423 |
gdImageStringUpRus(im,gdFontSmall,493,375,msg_h_xfer,COLOR4); |
366 |
|
424 |
|
367 |
/* Sites/Visits Legend */ |
425 |
/* Sites/Visits Legend */ |
368 |
i = (strlen(msg_h_sites)*6); |
426 |
i = (strlen(msg_h_sites)*6); |
369 |
gdImageStringUp(im,gdFontSmall,494,276,msg_h_sites,dkgrey); |
427 |
gdImageStringUpRus(im,gdFontSmall,494,276,msg_h_sites,dkgrey); |
370 |
gdImageStringUp(im,gdFontSmall,493,275,msg_h_sites,COLOR3); |
428 |
gdImageStringUpRus(im,gdFontSmall,493,275,msg_h_sites,COLOR3); |
371 |
gdImageStringUp(im,gdFontSmall,494,276-i-3,"/",dkgrey); |
429 |
gdImageStringUpRus(im,gdFontSmall,494,276-i-3,"/",dkgrey); |
372 |
gdImageStringUp(im,gdFontSmall,493,275-i-3,"/",black); |
430 |
gdImageStringUpRus(im,gdFontSmall,493,275-i-3,"/",black); |
373 |
gdImageStringUp(im,gdFontSmall,494,276-i-12,msg_h_visits,dkgrey); |
431 |
gdImageStringUpRus(im,gdFontSmall,494,276-i-12,msg_h_visits,dkgrey); |
374 |
gdImageStringUp(im,gdFontSmall,493,275-i-12,msg_h_visits,COLOR6); |
432 |
gdImageStringUpRus(im,gdFontSmall,493,275-i-12,msg_h_visits,COLOR6); |
375 |
|
433 |
|
376 |
/* Pages/Files/Hits Legend */ |
434 |
/* Pages/Files/Hits Legend */ |
377 |
s = ( i=(strlen(msg_h_pages)*6) )+ |
435 |
s = ( i=(strlen(msg_h_pages)*6) )+ |
378 |
( j=(strlen(msg_h_files)*6) )+ |
436 |
( j=(strlen(msg_h_files)*6) )+ |
379 |
( strlen(msg_h_hits)*6 )+ 52; |
437 |
( strlen(msg_h_hits)*6 )+ 52; |
380 |
gdImageStringUp(im,gdFontSmall,494,s,msg_h_pages,dkgrey); |
438 |
gdImageStringUpRus(im,gdFontSmall,494,s,msg_h_pages,dkgrey); |
381 |
gdImageStringUp(im,gdFontSmall,493,s-1,msg_h_pages,COLOR5); |
439 |
gdImageStringUpRus(im,gdFontSmall,493,s-1,msg_h_pages,COLOR5); |
382 |
gdImageStringUp(im,gdFontSmall,494,s-i-3,"/",dkgrey); |
440 |
gdImageStringUpRus(im,gdFontSmall,494,s-i-3,"/",dkgrey); |
383 |
gdImageStringUp(im,gdFontSmall,493,s-i-4,"/",black); |
441 |
gdImageStringUpRus(im,gdFontSmall,493,s-i-4,"/",black); |
384 |
gdImageStringUp(im,gdFontSmall,494,s-i-12,msg_h_files,dkgrey); |
442 |
gdImageStringUpRus(im,gdFontSmall,494,s-i-12,msg_h_files,dkgrey); |
385 |
gdImageStringUp(im,gdFontSmall,493,s-i-13,msg_h_files,COLOR2); |
443 |
gdImageStringUpRus(im,gdFontSmall,493,s-i-13,msg_h_files,COLOR2); |
386 |
gdImageStringUp(im,gdFontSmall,494,s-i-j-15,"/",dkgrey); |
444 |
gdImageStringUpRus(im,gdFontSmall,494,s-i-j-15,"/",dkgrey); |
387 |
gdImageStringUp(im,gdFontSmall,493,s-i-j-16,"/",black); |
445 |
gdImageStringUpRus(im,gdFontSmall,493,s-i-j-16,"/",black); |
388 |
gdImageStringUp(im,gdFontSmall,494,s-i-j-24,msg_h_hits,dkgrey); |
446 |
gdImageStringUpRus(im,gdFontSmall,494,s-i-j-24,msg_h_hits,dkgrey); |
389 |
gdImageStringUp(im,gdFontSmall,493,s-i-j-25,msg_h_hits,COLOR1); |
447 |
gdImageStringUpRus(im,gdFontSmall,493,s-i-j-25,msg_h_hits,COLOR1); |
390 |
} |
448 |
} |
391 |
|
449 |
|
392 |
/* data1 */ |
450 |
/* data1 */ |
Lines 435-441
Link Here
|
435 |
} |
493 |
} |
436 |
if (maxval <= 0) maxval = 1; |
494 |
if (maxval <= 0) maxval = 1; |
437 |
sprintf(maxvaltxt, "%lu", maxval); |
495 |
sprintf(maxvaltxt, "%lu", maxval); |
438 |
gdImageStringUp(im, gdFontSmall,8,180+(strlen(maxvaltxt)*6), |
496 |
gdImageStringUpRus(im, gdFontSmall,8,180+(strlen(maxvaltxt)*6), |
439 |
maxvaltxt, black); |
497 |
maxvaltxt, black); |
440 |
|
498 |
|
441 |
/* data 6 */ |
499 |
/* data 6 */ |
Lines 468-474
Link Here
|
468 |
if (data4[i]>fmaxval) fmaxval = data4[i]; |
526 |
if (data4[i]>fmaxval) fmaxval = data4[i]; |
469 |
if (fmaxval <= 0.0) fmaxval = 1.0; |
527 |
if (fmaxval <= 0.0) fmaxval = 1.0; |
470 |
sprintf(maxvaltxt, "%.0f", fmaxval/1024); |
528 |
sprintf(maxvaltxt, "%.0f", fmaxval/1024); |
471 |
gdImageStringUp(im, gdFontSmall,8,280+(strlen(maxvaltxt)*6), |
529 |
gdImageStringUpRus(im, gdFontSmall,8,280+(strlen(maxvaltxt)*6), |
472 |
maxvaltxt, black); |
530 |
maxvaltxt, black); |
473 |
|
531 |
|
474 |
for (i=0; i<31; i++) |
532 |
for (i=0; i<31; i++) |
Lines 525-538
Link Here
|
525 |
/* x-axis legend */ |
583 |
/* x-axis legend */ |
526 |
for (i=0;i<24;i++) |
584 |
for (i=0;i<24;i++) |
527 |
{ |
585 |
{ |
528 |
gdImageString(im,gdFontSmall,33+(i*19),238,numchar[i],black); |
586 |
gdImageStringRus(im,gdFontSmall,33+(i*19),238,numchar[i],black); |
529 |
if (data1[i] > maxval) maxval = data1[i]; /* get max val */ |
587 |
if (data1[i] > maxval) maxval = data1[i]; /* get max val */ |
530 |
if (data2[i] > maxval) maxval = data2[i]; |
588 |
if (data2[i] > maxval) maxval = data2[i]; |
531 |
if (data3[i] > maxval) maxval = data3[i]; |
589 |
if (data3[i] > maxval) maxval = data3[i]; |
532 |
} |
590 |
} |
533 |
if (maxval <= 0) maxval = 1; |
591 |
if (maxval <= 0) maxval = 1; |
534 |
sprintf(maxvaltxt, "%lu", maxval); |
592 |
sprintf(maxvaltxt, "%lu", maxval); |
535 |
gdImageStringUp(im, gdFontSmall, 8, 26+(strlen(maxvaltxt)*6), |
593 |
gdImageStringUpRus(im, gdFontSmall, 8, 26+(strlen(maxvaltxt)*6), |
536 |
maxvaltxt, black); |
594 |
maxvaltxt, black); |
537 |
|
595 |
|
538 |
if (graph_legend) /* print color coded legends? */ |
596 |
if (graph_legend) /* print color coded legends? */ |
Lines 541-556
Link Here
|
541 |
s = ( i=(strlen(msg_h_pages)*6) )+ |
599 |
s = ( i=(strlen(msg_h_pages)*6) )+ |
542 |
( j=(strlen(msg_h_files)*6) )+ |
600 |
( j=(strlen(msg_h_files)*6) )+ |
543 |
( strlen(msg_h_hits)*6 )+ 52; |
601 |
( strlen(msg_h_hits)*6 )+ 52; |
544 |
gdImageStringUp(im,gdFontSmall,494,s,msg_h_pages,dkgrey); |
602 |
gdImageStringUpRus(im,gdFontSmall,494,s,msg_h_pages,dkgrey); |
545 |
gdImageStringUp(im,gdFontSmall,493,s-1,msg_h_pages,COLOR5); |
603 |
gdImageStringUpRus(im,gdFontSmall,493,s-1,msg_h_pages,COLOR5); |
546 |
gdImageStringUp(im,gdFontSmall,494,s-i-3,"/",dkgrey); |
604 |
gdImageStringUpRus(im,gdFontSmall,494,s-i-3,"/",dkgrey); |
547 |
gdImageStringUp(im,gdFontSmall,493,s-i-4,"/",black); |
605 |
gdImageStringUpRus(im,gdFontSmall,493,s-i-4,"/",black); |
548 |
gdImageStringUp(im,gdFontSmall,494,s-i-12,msg_h_files,dkgrey); |
606 |
gdImageStringUpRus(im,gdFontSmall,494,s-i-12,msg_h_files,dkgrey); |
549 |
gdImageStringUp(im,gdFontSmall,493,s-i-13,msg_h_files,COLOR2); |
607 |
gdImageStringUpRus(im,gdFontSmall,493,s-i-13,msg_h_files,COLOR2); |
550 |
gdImageStringUp(im,gdFontSmall,494,s-i-j-15,"/",dkgrey); |
608 |
gdImageStringUpRus(im,gdFontSmall,494,s-i-j-15,"/",dkgrey); |
551 |
gdImageStringUp(im,gdFontSmall,493,s-i-j-16,"/",black); |
609 |
gdImageStringUpRus(im,gdFontSmall,493,s-i-j-16,"/",black); |
552 |
gdImageStringUp(im,gdFontSmall,494,s-i-j-24,msg_h_hits,dkgrey); |
610 |
gdImageStringUpRus(im,gdFontSmall,494,s-i-j-24,msg_h_hits,dkgrey); |
553 |
gdImageStringUp(im,gdFontSmall,493,s-i-j-25,msg_h_hits,COLOR1); |
611 |
gdImageStringUpRus(im,gdFontSmall,493,s-i-j-25,msg_h_hits,COLOR1); |
554 |
} |
612 |
} |
555 |
|
613 |
|
556 |
/* data1 */ |
614 |
/* data1 */ |
Lines 656-663
Link Here
|
656 |
|
714 |
|
657 |
sprintf(buffer,"%s (%d%%)",legend[i], percent); |
715 |
sprintf(buffer,"%s (%d%%)",legend[i], percent); |
658 |
x=480-(strlen(buffer)*7); |
716 |
x=480-(strlen(buffer)*7); |
659 |
gdImageString(im,gdFontMediumBold, x+1, y+1, buffer, black); |
717 |
gdImageStringRus(im,gdFontMediumBold, x+1, y+1, buffer, black); |
660 |
gdImageString(im,gdFontMediumBold, x, y, buffer, i+4); |
718 |
gdImageStringRus(im,gdFontMediumBold, x, y, buffer, i+4); |
661 |
y+=20; |
719 |
y+=20; |
662 |
} |
720 |
} |
663 |
} |
721 |
} |
Lines 669-676
Link Here
|
669 |
gdImageFill(im, gdata.mx, gdata.my, white); |
727 |
gdImageFill(im, gdata.mx, gdata.my, white); |
670 |
sprintf(buffer,"%s (%d%%)",msg_h_other,100-(int)(s_arc*100)); |
728 |
sprintf(buffer,"%s (%d%%)",msg_h_other,100-(int)(s_arc*100)); |
671 |
x=480-(strlen(buffer)*7); |
729 |
x=480-(strlen(buffer)*7); |
672 |
gdImageString(im,gdFontMediumBold, x+1, y+1, buffer, black); |
730 |
gdImageStringRus(im,gdFontMediumBold, x+1, y+1, buffer, black); |
673 |
gdImageString(im,gdFontMediumBold, x, y, buffer, white); |
731 |
gdImageStringRus(im,gdFontMediumBold, x, y, buffer, white); |
674 |
} |
732 |
} |
675 |
|
733 |
|
676 |
/* save png image */ |
734 |
/* save png image */ |
Lines 746-752
Link Here
|
746 |
gdImageRectangle(im, 0, 0, xsize-1, ysize-1, black); |
804 |
gdImageRectangle(im, 0, 0, xsize-1, ysize-1, black); |
747 |
|
805 |
|
748 |
/* display the graph title */ |
806 |
/* display the graph title */ |
749 |
gdImageString(im, gdFontMediumBold, 20, 8, title, blue); |
807 |
gdImageStringRus(im, gdFontMediumBold, 20, 8, title, blue); |
750 |
|
808 |
|
751 |
return; |
809 |
return; |
752 |
} |
810 |
} |