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>