Subversion Repositories wimsdev

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
10 reyssat 1
#include <stdio.h>
2
#include "gd.h"
3
#include "gdfontg.h"
4
#include "gdfonts.h"
5
 
6
int main(void)
7
{
8
        /* Input and output files */
9
        FILE *in;
10
        FILE *out;
11
 
12
        /* Input and output images */
13
        gdImagePtr im_in, im_out;
14
 
15
        /* Brush image */
16
        gdImagePtr brush;
17
 
18
        /* Color indexes */
19
        int white;
20
        int blue;
21
        int red;
22
        int green;
23
 
24
        /* Points for polygon */
25
        gdPoint points[3];
26
 
27
        /* Create output image, 128 by 128 pixels. */
28
        im_out = gdImageCreate(128, 128);
29
 
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.gif and paste part of it into the
37
                output image. */
38
 
39
        in = fopen("demoin.gif", "rb");
40
        if (!in) {
41
                fprintf(stderr, "Can't load source image; this demo\n");
42
                fprintf(stderr, "is much more impressive if demoin.gif\n");
43
                fprintf(stderr, "is available.\n");
44
                im_in = 0;
45
        } else {
46
                im_in = gdImageCreateFromGif(in);
47
                fclose(in);
48
                /* Now copy, and magnify as we do so */
49
                gdImageCopyResized(im_out, im_in,
50
                        16, 16, 0, 0, 96, 96, 127, 127);               
51
        }
52
        red = gdImageColorAllocate(im_out, 255, 0, 0);
53
        green = gdImageColorAllocate(im_out, 0, 255, 0);
54
        blue = gdImageColorAllocate(im_out, 0, 0, 255);
55
        /* Rectangle */
56
        gdImageLine(im_out, 8, 8, 120, 8, green);      
57
        gdImageLine(im_out, 120, 8, 120, 120, green);  
58
        gdImageLine(im_out, 120, 120, 8, 120, green);  
59
        gdImageLine(im_out, 8, 120, 8, 8, green);      
60
        /* Circle */
61
        gdImageArc(im_out, 64, 64, 30, 10, 0, 360, blue);
62
        /* Arc */
63
        gdImageArc(im_out, 64, 64, 20, 20, 45, 135, blue);
64
        /* Flood fill */
65
        gdImageFill(im_out, 4, 4, blue);
66
        /* Polygon */
67
        points[0].x = 32;
68
        points[0].y = 0;
69
        points[1].x = 0;
70
        points[1].y = 64;      
71
        points[2].x = 64;
72
        points[2].y = 64;      
73
        gdImageFilledPolygon(im_out, points, 3, green);
74
        /* Brush. A fairly wild example also involving a line style! */
75
        if (im_in) {
76
                int style[8];
77
                brush = gdImageCreate(8, 8);
78
                gdImageCopyResized(brush, im_in,
79
                        0, 0, 0, 0,
80
                        gdImageSX(brush), gdImageSY(brush),
81
                        gdImageSX(im_in), gdImageSY(im_in));
82
                gdImageSetBrush(im_out, brush);
83
                /* With a style, so they won't overprint each other.
84
                        Normally, they would, yielding a fat-brush effect. */
85
                style[0] = 0;
86
                style[1] = 0;
87
                style[2] = 0;
88
                style[3] = 0;
89
                style[4] = 0;
90
                style[5] = 0;
91
                style[6] = 0;
92
                style[7] = 1;
93
                gdImageSetStyle(im_out, style, 8);
94
                /* Draw the styled, brushed line */
95
                gdImageLine(im_out, 0, 127, 127, 0, gdStyledBrushed);
96
        }
97
        /* Text */
98
        gdImageString(im_out, gdFontGiant, 16, 16, "hi", red);
99
        gdImageStringUp(im_out, gdFontSmall, 32, 32, "hi", red);
100
        /* Make output image interlaced (allows "fade in" in some viewers,
101
                and in the latest web browsers) */
102
        gdImageInterlace(im_out, 1);
103
        out = fopen("demoout.gif", "wb");
104
        /* Write GIF */
105
        gdImageGif(im_out, out);
106
        fclose(out);
107
        gdImageDestroy(im_out);
108
        if (im_in) {
109
                gdImageDestroy(im_in);
110
        }
111
        return 0;
112
}
113