Back to index

wims  3.65+svn20090927
Functions
gddemo.c File Reference
#include <stdio.h>
#include "gd.h"
#include "gdfontg.h"
#include "gdfonts.h"

Go to the source code of this file.

Functions

int main (void)

Function Documentation

int main ( void  )

Definition at line 6 of file gddemo.c.

{
       /* Input and output files */
       FILE *in;
       FILE *out;

       /* Input and output images */
       gdImagePtr im_in, im_out;

       /* Brush image */
       gdImagePtr brush;

       /* Color indexes */
       int white;
       int blue;
       int red;
       int green;

       /* Points for polygon */
       gdPoint points[3];

       /* Create output image, 128 by 128 pixels. */
       im_out = gdImageCreate(128, 128);

       /* First color allocated is background. */
       white = gdImageColorAllocate(im_out, 255, 255, 255);

       /* Set transparent color. */
       gdImageColorTransparent(im_out, white);

       /* Try to load demoin.gif and paste part of it into the
              output image. */

       in = fopen("demoin.gif", "rb");
       if (!in) {
              fprintf(stderr, "Can't load source image; this demo\n");
              fprintf(stderr, "is much more impressive if demoin.gif\n");
              fprintf(stderr, "is available.\n");
              im_in = 0;
       } else {
              im_in = gdImageCreateFromGif(in);
              fclose(in);
              /* Now copy, and magnify as we do so */
              gdImageCopyResized(im_out, im_in, 
                     16, 16, 0, 0, 96, 96, 127, 127);          
       }
       red = gdImageColorAllocate(im_out, 255, 0, 0);
       green = gdImageColorAllocate(im_out, 0, 255, 0);
       blue = gdImageColorAllocate(im_out, 0, 0, 255);
       /* Rectangle */
       gdImageLine(im_out, 8, 8, 120, 8, green); 
       gdImageLine(im_out, 120, 8, 120, 120, green);    
       gdImageLine(im_out, 120, 120, 8, 120, green);    
       gdImageLine(im_out, 8, 120, 8, 8, green); 
       /* Circle */
       gdImageArc(im_out, 64, 64, 30, 10, 0, 360, blue);
       /* Arc */
       gdImageArc(im_out, 64, 64, 20, 20, 45, 135, blue);
       /* Flood fill */
       gdImageFill(im_out, 4, 4, blue);
       /* Polygon */
       points[0].x = 32;
       points[0].y = 0;
       points[1].x = 0;
       points[1].y = 64;    
       points[2].x = 64;
       points[2].y = 64;    
       gdImageFilledPolygon(im_out, points, 3, green);
       /* Brush. A fairly wild example also involving a line style! */
       if (im_in) {
              int style[8];
              brush = gdImageCreate(8, 8);
              gdImageCopyResized(brush, im_in,
                     0, 0, 0, 0, 
                     gdImageSX(brush), gdImageSY(brush),
                     gdImageSX(im_in), gdImageSY(im_in));
              gdImageSetBrush(im_out, brush);    
              /* With a style, so they won't overprint each other.
                     Normally, they would, yielding a fat-brush effect. */
              style[0] = 0;
              style[1] = 0;
              style[2] = 0;
              style[3] = 0;
              style[4] = 0;
              style[5] = 0;
              style[6] = 0;
              style[7] = 1;
              gdImageSetStyle(im_out, style, 8);
              /* Draw the styled, brushed line */
              gdImageLine(im_out, 0, 127, 127, 0, gdStyledBrushed);
       }
       /* Text */
       gdImageString(im_out, gdFontGiant, 16, 16, "hi", red);
       gdImageStringUp(im_out, gdFontSmall, 32, 32, "hi", red);
       /* Make output image interlaced (allows "fade in" in some viewers,
              and in the latest web browsers) */
       gdImageInterlace(im_out, 1);
       out = fopen("demoout.gif", "wb");
       /* Write GIF */
       gdImageGif(im_out, out);
       fclose(out);
       gdImageDestroy(im_out);
       if (im_in) {
              gdImageDestroy(im_in);
       }
       return 0;
}

Here is the call graph for this function: