[829] | 1 | #ifndef GD_H
|
---|
| 2 | #define GD_H 1
|
---|
| 3 |
|
---|
| 4 | /* gd.h: declarations file for the gifdraw module.
|
---|
| 5 |
|
---|
| 6 | Written by Tom Boutell, 5/94.
|
---|
| 7 | Copyright 1994, Cold Spring Harbor Labs.
|
---|
| 8 | Permission granted to use this code in any fashion provided
|
---|
| 9 | that this notice is retained and any alterations are
|
---|
| 10 | labeled as such. It is requested, but not required, that
|
---|
| 11 | you share extensions to this module with us so that we
|
---|
| 12 | can incorporate them into new versions. */
|
---|
| 13 |
|
---|
| 14 | /* stdio is needed for file I/O. */
|
---|
| 15 | #include <stdio.h>
|
---|
| 16 |
|
---|
| 17 | /* This can't be changed, it's part of the GIF specification. */
|
---|
| 18 |
|
---|
| 19 | #define gdMaxColors 256
|
---|
| 20 |
|
---|
| 21 | /* Image type. See functions below; you will not need to change
|
---|
| 22 | the elements directly. Use the provided macros to
|
---|
| 23 | access sx, sy, the color table, and colorsTotal for
|
---|
| 24 | read-only purposes. */
|
---|
| 25 |
|
---|
| 26 | typedef struct gdImageStruct {
|
---|
| 27 | unsigned char ** pixels;
|
---|
| 28 | int sx;
|
---|
| 29 | int sy;
|
---|
| 30 | int colorsTotal;
|
---|
| 31 | int red[gdMaxColors];
|
---|
| 32 | int green[gdMaxColors];
|
---|
| 33 | int blue[gdMaxColors];
|
---|
| 34 | int open[gdMaxColors];
|
---|
| 35 | int transparent;
|
---|
| 36 | int *polyInts;
|
---|
| 37 | int polyAllocated;
|
---|
| 38 | struct gdImageStruct *brush;
|
---|
| 39 | struct gdImageStruct *tile;
|
---|
| 40 | int brushColorMap[gdMaxColors];
|
---|
| 41 | int tileColorMap[gdMaxColors];
|
---|
| 42 | int styleLength;
|
---|
| 43 | int stylePos;
|
---|
| 44 | int *style;
|
---|
| 45 | int interlace;
|
---|
| 46 | } gdImage;
|
---|
| 47 |
|
---|
| 48 | typedef gdImage * gdImagePtr;
|
---|
| 49 |
|
---|
| 50 | typedef struct {
|
---|
| 51 | /* # of characters in font */
|
---|
| 52 | int nchars;
|
---|
| 53 | /* First character is numbered... (usually 32 = space) */
|
---|
| 54 | int offset;
|
---|
| 55 | /* Character width and height */
|
---|
| 56 | int w;
|
---|
| 57 | int h;
|
---|
| 58 | /* Font data; array of characters, one row after another.
|
---|
| 59 | Easily included in code, also easily loaded from
|
---|
| 60 | data files. */
|
---|
| 61 | char *data;
|
---|
| 62 | } gdFont;
|
---|
| 63 |
|
---|
| 64 | /* Text functions take these. */
|
---|
| 65 | typedef gdFont *gdFontPtr;
|
---|
| 66 |
|
---|
| 67 | /* For backwards compatibility only. Use gdImageSetStyle()
|
---|
| 68 | for MUCH more flexible line drawing. Also see
|
---|
| 69 | gdImageSetBrush(). */
|
---|
| 70 | #define gdDashSize 4
|
---|
| 71 |
|
---|
| 72 | /* Special colors. */
|
---|
| 73 |
|
---|
| 74 | #define gdStyled (-2)
|
---|
| 75 | #define gdBrushed (-3)
|
---|
| 76 | #define gdStyledBrushed (-4)
|
---|
| 77 | #define gdTiled (-5)
|
---|
| 78 |
|
---|
| 79 | /* NOT the same as the transparent color index.
|
---|
| 80 | This is used in line styles only. */
|
---|
| 81 | #define gdTransparent (-6)
|
---|
| 82 |
|
---|
| 83 | /* Functions to manipulate images. */
|
---|
| 84 |
|
---|
| 85 | gdImagePtr gdImageCreate(int sx, int sy);
|
---|
| 86 | gdImagePtr gdImageCreateFromGif(FILE *fd);
|
---|
| 87 | gdImagePtr gdImageCreateFromGd(FILE *in);
|
---|
| 88 | gdImagePtr gdImageCreateFromXbm(FILE *fd);
|
---|
| 89 | void gdImageDestroy(gdImagePtr im);
|
---|
| 90 | void gdImageSetPixel(gdImagePtr im, int x, int y, int color);
|
---|
| 91 | int gdImageGetPixel(gdImagePtr im, int x, int y);
|
---|
| 92 | void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color);
|
---|
| 93 | /* For backwards compatibility only. Use gdImageSetStyle()
|
---|
| 94 | for much more flexible line drawing. */
|
---|
| 95 | void gdImageDashedLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color);
|
---|
| 96 | /* Corners specified (not width and height). Upper left first, lower right
|
---|
| 97 | second. */
|
---|
| 98 | void gdImageRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color);
|
---|
| 99 | /* Solid bar. Upper left corner first, lower right corner second. */
|
---|
| 100 | void gdImageFilledRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color);
|
---|
| 101 | int gdImageBoundsSafe(gdImagePtr im, int x, int y);
|
---|
| 102 | void gdImageChar(gdImagePtr im, gdFontPtr f, int x, int y, int c, int color);
|
---|
| 103 | void gdImageCharUp(gdImagePtr im, gdFontPtr f, int x, int y, char c, int color);
|
---|
| 104 | void gdImageString(gdImagePtr im, gdFontPtr f, int x, int y, char *s, int color);
|
---|
| 105 | void gdImageStringUp(gdImagePtr im, gdFontPtr f, int x, int y, char *s, int color);
|
---|
| 106 |
|
---|
| 107 | /* Point type for use in polygon drawing. */
|
---|
| 108 |
|
---|
| 109 | typedef struct {
|
---|
| 110 | int x, y;
|
---|
| 111 | } gdPoint, *gdPointPtr;
|
---|
| 112 |
|
---|
| 113 | void gdImagePolygon(gdImagePtr im, gdPointPtr p, int n, int c);
|
---|
| 114 | void gdImageFilledPolygon(gdImagePtr im, gdPointPtr p, int n, int c);
|
---|
| 115 |
|
---|
| 116 | int gdImageColorAllocate(gdImagePtr im, int r, int g, int b);
|
---|
| 117 | int gdImageColorClosest(gdImagePtr im, int r, int g, int b);
|
---|
| 118 | int gdImageColorExact(gdImagePtr im, int r, int g, int b);
|
---|
| 119 | void gdImageColorDeallocate(gdImagePtr im, int color);
|
---|
| 120 | void gdImageColorTransparent(gdImagePtr im, int color);
|
---|
| 121 | void gdImageGif(gdImagePtr im, FILE *out);
|
---|
| 122 | void gdImageGd(gdImagePtr im, FILE *out);
|
---|
| 123 | void gdImageArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color);
|
---|
| 124 | void gdImageFillToBorder(gdImagePtr im, int x, int y, int border, int color);
|
---|
| 125 | void gdImageFill(gdImagePtr im, int x, int y, int color);
|
---|
| 126 | void gdImageCopy(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h);
|
---|
| 127 | /* Stretches or shrinks to fit, as needed */
|
---|
| 128 | void gdImageCopyResized(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH);
|
---|
| 129 | void gdImageSetBrush(gdImagePtr im, gdImagePtr brush);
|
---|
| 130 | void gdImageSetTile(gdImagePtr im, gdImagePtr tile);
|
---|
| 131 | void gdImageSetStyle(gdImagePtr im, int *style, int noOfPixels);
|
---|
| 132 | /* On or off (1 or 0) */
|
---|
| 133 | void gdImageInterlace(gdImagePtr im, int interlaceArg);
|
---|
| 134 |
|
---|
| 135 | /* Macros to access information about images. READ ONLY. Changing
|
---|
| 136 | these values will NOT have the desired result. */
|
---|
| 137 | #define gdImageSX(im) ((im)->sx)
|
---|
| 138 | #define gdImageSY(im) ((im)->sy)
|
---|
| 139 | #define gdImageColorsTotal(im) ((im)->colorsTotal)
|
---|
| 140 | #define gdImageRed(im, c) ((im)->red[(c)])
|
---|
| 141 | #define gdImageGreen(im, c) ((im)->green[(c)])
|
---|
| 142 | #define gdImageBlue(im, c) ((im)->blue[(c)])
|
---|
| 143 | #define gdImageGetTransparent(im) ((im)->transparent)
|
---|
| 144 | #define gdImageGetInterlaced(im) ((im)->interlace)
|
---|
| 145 | #endif
|
---|