📄 gd.h
字号:
#ifndef GD_H#define GD_H 1#ifdef __cplusplusextern "C" {#endif#include "php_compat.h"#ifndef WIN32/* default fontpath for unix systems */#define DEFAULT_FONTPATH "/usr/X11R6/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/truetype:/usr/X11R6/lib/X11/fonts/TTF:/usr/share/fonts/TrueType:/usr/share/fonts/truetype:/usr/openwin/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/Type1:."#define PATHSEPARATOR ":"#else/* default fontpath for windows systems */#define DEFAULT_FONTPATH "c:\\winnt\\fonts;c:\\windows\\fonts;."#define PATHSEPARATOR ";"#endif/* 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"void php_gd_error_ex(int type, const char *format, ...);void php_gd_error(const char *format, ...);/* 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)#define gdEffectReplace 0#define gdEffectAlphaBlend 1#define gdEffectNormal 2#define gdEffectOverlay 3/* 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 antialias functions be used */ int antialias; /* 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; /* 2.0.12: anti-aliased globals */ int AA; int AA_color; int AA_dont_blend; unsigned char **AA_opacity; int AA_polygon; /* Stored and pre-computed variables for determining the perpendicular * distance from a point to the anti-aliased line being drawn: */ int AAL_x1; int AAL_y1; int AAL_x2; int AAL_y2; int AAL_Bx_Ax; int AAL_By_Ay; int AAL_LAB_2; float AAL_LAB; /* 2.0.12: simple clipping rectangle. These values must be checked for safety when set; please use gdImageSetClip */ int cx1; int cy1; int cx2; int cy2;} 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)#define gdAntiAliased (-7)/* 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, int ignore_warning);gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile, int ignore_warning);/* 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 gdImageXbmCtx(gdImagePtr image, char* file_name, int fg, gdIOCtx * out);gdImagePtr gdImageCreateFromXpm (char *filename);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 gdImageAABlend(gdImagePtr im);void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color);void gdImageAALine(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);void gdImageSetClip(gdImagePtr im, int x1, int y1, int x2, int y2);void gdImageGetClip(gdImagePtr im, int *x1P, int *y1P, int *x2P, int *y2P);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);/* 2.0.16: for thread-safe use of gdImageStringFT and friends, * call this before allowing any thread to call gdImageStringFT. * Otherwise it is invoked by the first thread to invoke * gdImageStringFT, with a very small but real risk of a race condition. * Return 0 on success, nonzero on failure to initialize freetype. */int gdFontCacheSetup(void);/* Optional: clean up after application is done using fonts in gdImageStringFT(). */void gdFontCacheShutdown(void);/* Calls gdImageStringFT. Provided for backwards compatibility only. */char *gdImageStringTTF(gdImage *im, int *brect, int fg, char *fontlist, double ptsize, double angle, int x, int y, char *string);/* FreeType 2 text output */char *gdImageStringFT(gdImage *im, int *brect, int fg, char *fontlist, double ptsize, double angle, int x, int y, char *string);typedef struct { double linespacing; /* fine tune line spacing for '\n' */ int flags; /* Logical OR of gdFTEX_ values */ int charmap; /* TBB: 2.0.12: may be gdFTEX_Unicode, gdFTEX_Shift_JIS, or gdFTEX_Big5; when not specified, maps are searched for in the above order. */ int hdpi; int vdpi;} gdFTStringExtra, *gdFTStringExtraPtr;#define gdFTEX_LINESPACE 1#define gdFTEX_CHARMAP 2#define gdFTEX_RESOLUTION 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -