Annotation of embedaddon/php/ext/gd/libgd/gdtestft.c, revision 1.1.1.1
1.1 misho 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
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_FREETYPE */
108: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>