root/ext/gd/libgd/gddemo.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. main

   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 }

/* [<][>][^][v][top][bottom][index][help] */