1
2 #include "gd.h"
3 #include <string.h>
4
5 #define PI 3.141592
6 #define DEG2RAD(x) ((x)*PI/180.)
7
8 #define MAX(x,y) ((x) > (y) ? (x) : (y))
9 #define MIN(x,y) ((x) < (y) ? (x) : (y))
10
11 #define MAX4(x,y,z,w) \
12 ((MAX((x),(y))) > (MAX((z),(w))) ? (MAX((x),(y))) : (MAX((z),(w))))
13 #define MIN4(x,y,z,w) \
14 ((MIN((x),(y))) < (MIN((z),(w))) ? (MIN((x),(y))) : (MIN((z),(w))))
15
16 #define MAXX(x) MAX4(x[0],x[2],x[4],x[6])
17 #define MINX(x) MIN4(x[0],x[2],x[4],x[6])
18 #define MAXY(x) MAX4(x[1],x[3],x[5],x[7])
19 #define MINY(x) MIN4(x[1],x[3],x[5],x[7])
20
21 int
main(int argc,char * argv[])22 main (int argc, char *argv[])
23 {
24 #ifndef HAVE_LIBFREETYPE
25 fprintf (stderr, "gd was not compiled with HAVE_LIBFREETYPE defined.\n");
26 fprintf (stderr, "Install the FreeType library, including the\n");
27 fprintf (stderr, "header files. Then edit the gd Makefile, type\n");
28 fprintf (stderr, "make clean, and type make again.\n");
29 return 1;
30 #else
31 gdImagePtr im;
32 int black;
33 int white;
34 int brect[8];
35 int x, y;
36 char *err;
37 FILE *out;
38 #ifdef JISX0208
39 char *s = "Hello. ����ɂ��� Qyjpqg,"; /* String to draw. */
40 #else
41 char *s = "Hello. Qyjpqg,"; /* String to draw. */
42 #endif
43
44 double sz = 40.;
45
46 #if 0
47 double angle = 0.;
48 #else
49 double angle = DEG2RAD (-90);
50 #endif
51
52 #ifdef JISX0208
53 char *f = "/usr/openwin/lib/locale/ja/X11/fonts/TT/HG-MinchoL.ttf"; /* UNICODE */
54 /* char *f = "/usr/local/lib/fonts/truetype/DynaFont/dfpop1.ttf"; *//* SJIS */
55 #else
56 char *f = "times"; /* TrueType font */
57 #endif
58
59 /* obtain brect so that we can size the image */
60 err = gdImageStringFT ((gdImagePtr) NULL, &brect[0], 0, f, sz, angle, 0, 0, s);
61 if (err)
62 {
63 fprintf (stderr, "%s", err);
64 return 1;
65 }
66
67 /* create an image just big enough for the string */
68 x = MAXX (brect) - MINX (brect) + 6;
69 y = MAXY (brect) - MINY (brect) + 6;
70 #if 0
71 im = gdImageCreate (500, 500);
72 #else
73 /* gd 2.0: true color images can use freetype too */
74 im = gdImageCreateTrueColor (x, y);
75 #endif
76
77 /* Background color. gd 2.0: fill the image with it; truecolor
78 images have a black background otherwise. */
79 white = gdImageColorResolve (im, 255, 255, 255);
80 gdImageFilledRectangle (im, 0, 0, x, y, white);
81 black = gdImageColorResolve (im, 0, 0, 0);
82
83 /* render the string, offset origin to center string */
84 x = 0 - MINX (brect) + 3;
85 y = 0 - MINY (brect) + 3;
86
87 err = gdImageStringFT (im, NULL, black, f, sz, angle, x, y, s);
88 if (err)
89 {
90 fprintf (stderr, "%s", err);
91 return 1;
92 }
93 /* TBB: Write img to test/fttest.png */
94 out = fopen ("test/fttest.png", "wb");
95 if (!out)
96 {
97 fprintf (stderr, "Can't create test/fttest.png\n");
98 exit (1);
99 }
100 gdImagePng (im, out);
101 fclose (out);
102 fprintf (stderr, "Test image written to test/fttest.png\n");
103 /* Destroy it */
104 gdImageDestroy (im);
105
106 return 0;
107 #endif /* HAVE_LIBFREETYPE */
108 }
109