Annotation of embedaddon/php/ext/gd/libgd/gddemo.c, revision 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>