📄 gd.h
字号:
#ifndef GD_H#define GD_H 1#ifdef __cplusplusextern "C" {#endif/* default fontpath for unix systems */#define DEFAULT_FONTPATH "/usr/share/fonts/truetype"#define PATHSEPARATOR ":"/* gd.h: declarations file for the graphic-draw module. * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation. This software is provided "AS IS." Thomas Boutell and * Boutell.Com, Inc. disclaim all warranties, either express or implied, * including but not limited to implied warranties of merchantability and * fitness for a particular purpose, with respect to this code and accompanying * documentation. *//* stdio is needed for file I/O. */#include <stdio.h>#include <gd_io.h>#include <gd_clip.h>/* The maximum number of palette entries in palette-based images. In the wonderful new world of gd 2.0, you can of course have many more colors when using truecolor mode. */#define gdMaxColors 256/* Image type. See functions below; you will not need to change the elements directly. Use the provided macros to access sx, sy, the color table, and colorsTotal for read-only purposes. *//* If 'truecolor' is set true, the image is truecolor; pixels are represented by integers, which must be 32 bits wide or more. True colors are repsented as follows: ARGB Where 'A' (alpha channel) occupies only the LOWER 7 BITS of the MSB. This very small loss of alpha channel resolution allows gd 2.x to keep backwards compatibility by allowing signed integers to be used to represent colors, and negative numbers to represent special cases, just as in gd 1.x. */#define gdAlphaMax 127#define gdAlphaOpaque 0#define gdAlphaTransparent 127#define gdRedMax 255#define gdGreenMax 255#define gdBlueMax 255#define gdTrueColorGetAlpha(c) (((c) & 0x7F000000) >> 24)#define gdTrueColorGetRed(c) (((c) & 0xFF0000) >> 16)#define gdTrueColorGetGreen(c) (((c) & 0x00FF00) >> 8)#define gdTrueColorGetBlue(c) ((c) & 0x0000FF)/* This function accepts truecolor pixel values only. The source color is composited with the destination color based on the alpha channel value of the source color. The resulting color is opaque. */int gdAlphaBlend(int dest, int src);typedef struct gdImageStruct { /* Palette-based image pixels */ unsigned char ** pixels; int sx; int sy; /* These are valid in palette images only. See also 'alpha', which appears later in the structure to preserve binary backwards compatibility */ int colorsTotal; int red[gdMaxColors]; int green[gdMaxColors]; int blue[gdMaxColors]; int open[gdMaxColors]; /* For backwards compatibility, this is set to the first palette entry with 100% transparency, and is also set and reset by the gdImageColorTransparent function. Newer applications can allocate palette entries with any desired level of transparency; however, bear in mind that many viewers, notably many web browsers, fail to implement full alpha channel for PNG and provide support for full opacity or transparency only. */ int transparent; int *polyInts; int polyAllocated; struct gdImageStruct *brush; struct gdImageStruct *tile; int brushColorMap[gdMaxColors]; int tileColorMap[gdMaxColors]; int styleLength; int stylePos; int *style; int interlace; /* New in 2.0: thickness of line. Initialized to 1. */ int thick; /* New in 2.0: alpha channel for palettes. Note that only Macintosh Internet Explorer and (possibly) Netscape 6 really support multiple levels of transparency in palettes, to my knowledge, as of 2/15/01. Most common browsers will display 100% opaque and 100% transparent correctly, and do something unpredictable and/or undesirable for levels in between. TBB */ int alpha[gdMaxColors]; /* Truecolor flag and pixels. New 2.0 fields appear here at the end to minimize breakage of existing object code. */ int trueColor; int ** tpixels; /* Should alpha channel be copied, or applied, each time a pixel is drawn? This applies to truecolor images only. No attempt is made to alpha-blend in palette images, even if semitransparent palette entries exist. To do that, build your image as a truecolor image, then quantize down to 8 bits. */ int alphaBlendingFlag; /* Should the alpha channel of the image be saved? This affects PNG at the moment; other future formats may also have that capability. JPEG doesn't. */ int saveAlphaFlag; gdClipSet* clip; /* See <gd_clip.h> */ int * _tpixels; /* contiguous pixel array */} gdImage;typedef gdImage * gdImagePtr;typedef struct { /* # of characters in font */ int nchars; /* First character is numbered... (usually 32 = space) */ int offset; /* Character width and height */ int w; int h; /* Font data; array of characters, one row after another. Easily included in code, also easily loaded from data files. */ char *data;} gdFont;/* Text functions take these. */typedef gdFont *gdFontPtr;/* For backwards compatibility only. Use gdImageSetStyle() for MUCH more flexible line drawing. Also see gdImageSetBrush(). */#define gdDashSize 4/* Special colors. */#define gdStyled (-2)#define gdBrushed (-3)#define gdStyledBrushed (-4)#define gdTiled (-5)/* NOT the same as the transparent color index. This is used in line styles only. */#define gdTransparent (-6)/* Functions to manipulate images. *//* Creates a palette-based image (up to 256 colors). */gdImagePtr gdImageCreate(int sx, int sy);/* An alternate name for the above (2.0). */#define gdImageCreatePalette gdImageCreate/* Creates a truecolor image (millions of colors). */gdImagePtr gdImageCreateTrueColor(int sx, int sy);/* Creates an image from various file types. These functions return a palette or truecolor image based on the nature of the file being loaded. Truecolor PNG stays truecolor; palette PNG stays palette-based; JPEG is always truecolor. */gdImagePtr gdImageCreateFromPng(FILE *fd);gdImagePtr gdImageCreateFromPngCtx(gdIOCtxPtr in);gdImagePtr gdImageCreateFromWBMP(FILE *inFile);gdImagePtr gdImageCreateFromWBMPCtx(gdIOCtx *infile); gdImagePtr gdImageCreateFromJpeg(FILE *infile);gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile);/* ClipSet addition */void gdClipSetFree(gdImagePtr im);void gdClipSetReset(gdImagePtr im);void gdClipSetAdd(gdImagePtr im,gdClipRectanglePtr rect);/* A custom data source. *//* The source function must return -1 on error, otherwise the number of bytes fetched. 0 is EOF, not an error! *//* context will be passed to your source function. */typedef struct { int (*source) (void *context, char *buffer, int len); void *context;} gdSource, *gdSourcePtr;gdImagePtr gdImageCreateFromPngSource(gdSourcePtr in);gdImagePtr gdImageCreateFromGd(FILE *in);gdImagePtr gdImageCreateFromGdCtx(gdIOCtxPtr in);gdImagePtr gdImageCreateFromGd2(FILE *in);gdImagePtr gdImageCreateFromGd2Ctx(gdIOCtxPtr in);gdImagePtr gdImageCreateFromGd2Part(FILE *in, int srcx, int srcy, int w, int h);gdImagePtr gdImageCreateFromGd2PartCtx(gdIOCtxPtr in, int srcx, int srcy, int w, int h);gdImagePtr gdImageCreateFromXbm(FILE *fd);void gdImageDestroy(gdImagePtr im);/* Replaces or blends with the background depending on the most recent call to gdImageAlphaBlending and the alpha channel value of 'color'; default is to overwrite. Tiling and line styling are also implemented here. All other gd drawing functions pass through this call, allowing for many useful effects. */ void gdImageSetPixel(gdImagePtr im, int x, int y, int color);int gdImageGetPixel(gdImagePtr im, int x, int y);void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color);/* For backwards compatibility only. Use gdImageSetStyle() for much more flexible line drawing. */void gdImageDashedLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color);/* Corners specified (not width and height). Upper left first, lower right second. */void gdImageRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color);/* Solid bar. Upper left corner first, lower right corner second. */void gdImageFilledRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color);int gdImageBoundsSafe(gdImagePtr im, int x, int y);void gdImageChar(gdImagePtr im, gdFontPtr f, int x, int y, int c, int color);void gdImageCharUp(gdImagePtr im, gdFontPtr f, int x, int y, int c, int color);void gdImageString(gdImagePtr im, gdFontPtr f, int x, int y, unsigned char *s, int color);void gdImageStringUp(gdImagePtr im, gdFontPtr f, int x, int y, unsigned char *s, int color);void gdImageString16(gdImagePtr im, gdFontPtr f, int x, int y, unsigned short *s, int color);void gdImageStringUp16(gdImagePtr im, gdFontPtr f, int x, int y, unsigned short *s, int color);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -