Annotation of embedaddon/php/ext/gd/libgd/gddemo.c, revision 1.1.1.1
1.1 misho 1: #include <stdio.h>
2: #include "gd.h"
3: #include "gdfontg.h"
4: #include "gdfonts.h"
5:
6: int
7: main (void)
8: {
9: /* Input and output files */
10: FILE *in;
11: FILE *out;
12:
13: /* Input and output images */
14: gdImagePtr im_in = 0, im_out = 0;
15:
16: /* Brush image */
17: gdImagePtr brush;
18:
19: /* Color indexes */
20: int white;
21: int blue;
22: int red;
23: int green;
24:
25: /* Points for polygon */
26: gdPoint points[3];
27:
28: /* Create output image, 256 by 256 pixels, true color. */
29: im_out = gdImageCreateTrueColor (256, 256);
30: /* First color allocated is background. */
31: white = gdImageColorAllocate (im_out, 255, 255, 255);
32:
33: /* Set transparent color. */
34: gdImageColorTransparent (im_out, white);
35:
36: /* Try to load demoin.png and paste part of it into the
37: output image. */
38: in = fopen ("demoin.png", "rb");
39: if (!in)
40: {
41: fprintf (stderr, "Can't load source image; this demo\n");
42: fprintf (stderr, "is much more impressive if demoin.png\n");
43: fprintf (stderr, "is available.\n");
44: im_in = 0;
45: }
46: else
47: {
48: im_in = gdImageCreateFromPng (in);
49: fclose (in);
50: /* Now copy, and magnify as we do so */
51: gdImageCopyResized (im_out, im_in,
52: 32, 32, 0, 0, 192, 192, 255, 255);
53: }
54: red = gdImageColorAllocate (im_out, 255, 0, 0);
55: green = gdImageColorAllocate (im_out, 0, 255, 0);
56: blue = gdImageColorAllocate (im_out, 0, 0, 255);
57: /* Rectangle */
58: gdImageLine (im_out, 16, 16, 240, 16, green);
59: gdImageLine (im_out, 240, 16, 240, 240, green);
60: gdImageLine (im_out, 240, 240, 16, 240, green);
61: gdImageLine (im_out, 16, 240, 16, 16, green);
62: /* Circle */
63: gdImageArc (im_out, 128, 128, 60, 20, 0, 720, blue);
64: /* Arc */
65: gdImageArc (im_out, 128, 128, 40, 40, 90, 270, blue);
66: /* Flood fill: doesn't do much on a continuously
67: variable tone jpeg original. */
68: gdImageFill (im_out, 8, 8, blue);
69: /* Polygon */
70: points[0].x = 64;
71: points[0].y = 0;
72: points[1].x = 0;
73: points[1].y = 128;
74: points[2].x = 128;
75: points[2].y = 128;
76: gdImageFilledPolygon (im_out, points, 3, green);
77: /* Brush. A fairly wild example also involving a line style! */
78: if (im_in)
79: {
80: int style[8];
81: brush = gdImageCreateTrueColor (16, 16);
82: gdImageCopyResized (brush, im_in,
83: 0, 0, 0, 0,
84: gdImageSX (brush), gdImageSY (brush),
85: gdImageSX (im_in), gdImageSY (im_in));
86: gdImageSetBrush (im_out, brush);
87: /* With a style, so they won't overprint each other.
88: Normally, they would, yielding a fat-brush effect. */
89: style[0] = 0;
90: style[1] = 0;
91: style[2] = 0;
92: style[3] = 0;
93: style[4] = 0;
94: style[5] = 0;
95: style[6] = 0;
96: style[7] = 1;
97: gdImageSetStyle (im_out, style, 8);
98: /* Draw the styled, brushed line */
99: gdImageLine (im_out, 0, 255, 255, 0, gdStyledBrushed);
100: }
101: /* Text */
102: gdImageString (im_out, gdFontGiant, 32, 32,
103: (unsigned char *) "hi", red);
104: gdImageStringUp (im_out, gdFontSmall, 64, 64,
105: (unsigned char *) "hi", red);
106: /* Make output image interlaced (progressive, in the case of JPEG) */
107: gdImageInterlace (im_out, 1);
108: out = fopen ("demoout.png", "wb");
109: /* Write PNG */
110: gdImagePng (im_out, out);
111: fclose (out);
112: gdImageDestroy (im_out);
113: if (im_in)
114: {
115: gdImageDestroy (im_in);
116: }
117: return 0;
118: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>