Blame src/gd.h

Packit ed3af9
#ifdef __cplusplus
Packit ed3af9
extern "C" {
Packit ed3af9
#endif
Packit ed3af9
Packit ed3af9
#include <stdlib.h>
Packit ed3af9
Packit ed3af9
#ifndef GD_H
Packit ed3af9
#define GD_H 1
Packit ed3af9
Packit ed3af9
/* Version information.  This gets parsed by build scripts as well as
Packit ed3af9
 * gcc so each #define line in this group must also be splittable on
Packit ed3af9
 * whitespace, take the form GD_*_VERSION and contain the magical
Packit ed3af9
 * trailing comment. */
Packit ed3af9
#define GD_MAJOR_VERSION    2           /*version605b5d1778*/
Packit ed3af9
#define GD_MINOR_VERSION    2           /*version605b5d1778*/
Packit ed3af9
#define GD_RELEASE_VERSION  5           /*version605b5d1778*/
Packit ed3af9
#define GD_EXTRA_VERSION    ""          /*version605b5d1778*/
Packit ed3af9
/* End parsable section. */
Packit ed3af9
Packit ed3af9
/* The version string.  This is constructed from the version number
Packit ed3af9
 * parts above via macro abuse^Wtrickery. */
Packit ed3af9
#define GDXXX_VERSION_STR(mjr, mnr, rev, ext) mjr "." mnr "." rev ext
Packit ed3af9
#define GDXXX_STR(s) GDXXX_SSTR(s)  /* Two levels needed to expand args. */
Packit ed3af9
#define GDXXX_SSTR(s) #s
Packit ed3af9
Packit ed3af9
#define GD_VERSION_STRING                                               \
Packit ed3af9
    GDXXX_VERSION_STR(GDXXX_STR(GD_MAJOR_VERSION),                      \
Packit ed3af9
                      GDXXX_STR(GD_MINOR_VERSION),                      \
Packit ed3af9
                      GDXXX_STR(GD_RELEASE_VERSION),                    \
Packit ed3af9
                      GD_EXTRA_VERSION)
Packit ed3af9
Packit ed3af9
    
Packit ed3af9
/* Do the DLL dance: dllexport when building the DLL,
Packit ed3af9
   dllimport when importing from it, nothing when
Packit ed3af9
   not on Silly Silly Windows (tm Aardman Productions). */
Packit ed3af9
Packit ed3af9
/* 2.0.20: for headers */
Packit ed3af9
Packit ed3af9
/* 2.0.24: __stdcall also needed for Visual BASIC
Packit ed3af9
   and other languages. This breaks ABI compatibility
Packit ed3af9
   with previous DLL revs, but it's necessary. */
Packit ed3af9
Packit ed3af9
/* 2.0.29: WIN32 programmers can declare the NONDLL macro if they
Packit ed3af9
   wish to build gd as a static library or by directly including
Packit ed3af9
   the gd sources in a project. */
Packit ed3af9
Packit ed3af9
/* http://gcc.gnu.org/wiki/Visibility */
Packit ed3af9
#if defined(_WIN32) || defined(CYGWIN) || defined(_WIN32_WCE)
Packit ed3af9
# ifdef BGDWIN32
Packit ed3af9
#  ifdef NONDLL
Packit ed3af9
#   define BGD_EXPORT_DATA_PROT
Packit ed3af9
#  else
Packit ed3af9
#   ifdef __GNUC__
Packit ed3af9
#    define BGD_EXPORT_DATA_PROT __attribute__ ((dllexport))
Packit ed3af9
#   else
Packit ed3af9
#    define BGD_EXPORT_DATA_PROT __declspec(dllexport)
Packit ed3af9
#   endif
Packit ed3af9
#  endif
Packit ed3af9
# else
Packit ed3af9
#  ifdef __GNUC__
Packit ed3af9
#   define BGD_EXPORT_DATA_PROT __attribute__ ((dllimport))
Packit ed3af9
#  else
Packit ed3af9
#   define BGD_EXPORT_DATA_PROT __declspec(dllimport)
Packit ed3af9
#  endif
Packit ed3af9
# endif
Packit ed3af9
# define BGD_STDCALL __stdcall
Packit ed3af9
# define BGD_EXPORT_DATA_IMPL
Packit ed3af9
#else
Packit ed3af9
# if defined(__GNUC__) || defined(__clang__)
Packit ed3af9
#  define BGD_EXPORT_DATA_PROT __attribute__ ((visibility ("default")))
Packit ed3af9
#  define BGD_EXPORT_DATA_IMPL __attribute__ ((visibility ("hidden")))
Packit ed3af9
# else
Packit ed3af9
#  define BGD_EXPORT_DATA_PROT
Packit ed3af9
#  define BGD_EXPORT_DATA_IMPL
Packit ed3af9
# endif
Packit ed3af9
# define BGD_STDCALL
Packit ed3af9
#endif
Packit ed3af9
Packit ed3af9
#define BGD_DECLARE(rt) BGD_EXPORT_DATA_PROT rt BGD_STDCALL
Packit ed3af9
Packit ed3af9
/* VS2012+ disable keyword macroizing unless _ALLOW_KEYWORD_MACROS is set
Packit ed3af9
   We define inline, snprintf, and strcasecmp if they're missing 
Packit ed3af9
*/
Packit ed3af9
#ifdef _MSC_VER
Packit ed3af9
#  define _ALLOW_KEYWORD_MACROS
Packit ed3af9
#  ifndef inline
Packit ed3af9
#    define inline __inline
Packit ed3af9
#  endif 
Packit ed3af9
#  ifndef strcasecmp
Packit ed3af9
#    define strcasecmp _stricmp
Packit ed3af9
#  endif 
Packit ed3af9
#if _MSC_VER < 1900
Packit ed3af9
     extern int snprintf(char*, size_t, const char*, ...);
Packit ed3af9
#endif
Packit ed3af9
#endif 
Packit ed3af9
Packit ed3af9
#ifdef __cplusplus
Packit ed3af9
	extern "C"
Packit ed3af9
	{
Packit ed3af9
#endif
Packit ed3af9
Packit ed3af9
/* gd.h: declarations file for the graphic-draw module.
Packit ed3af9
 * Permission to use, copy, modify, and distribute this software and its
Packit ed3af9
 * documentation for any purpose and without fee is hereby granted, provided
Packit ed3af9
 * that the above copyright notice appear in all copies and that both that
Packit ed3af9
 * copyright notice and this permission notice appear in supporting
Packit ed3af9
 * documentation.  This software is provided "AS IS." Thomas Boutell and
Packit ed3af9
 * Boutell.Com, Inc. disclaim all warranties, either express or implied,
Packit ed3af9
 * including but not limited to implied warranties of merchantability and
Packit ed3af9
 * fitness for a particular purpose, with respect to this code and accompanying
Packit ed3af9
 * documentation. */
Packit ed3af9
Packit ed3af9
/* stdio is needed for file I/O. */
Packit ed3af9
#include <stdio.h>
Packit ed3af9
#include <stdarg.h>
Packit ed3af9
#include "gd_io.h"
Packit ed3af9
Packit ed3af9
/* The maximum number of palette entries in palette-based images.
Packit ed3af9
   In the wonderful new world of gd 2.0, you can of course have
Packit ed3af9
   many more colors when using truecolor mode. */
Packit ed3af9
Packit ed3af9
#define gdMaxColors 256
Packit ed3af9
Packit ed3af9
/* Image type. See functions below; you will not need to change
Packit ed3af9
   the elements directly. Use the provided macros to
Packit ed3af9
   access sx, sy, the color table, and colorsTotal for
Packit ed3af9
   read-only purposes. */
Packit ed3af9
Packit ed3af9
/* If 'truecolor' is set true, the image is truecolor;
Packit ed3af9
   pixels are represented by integers, which
Packit ed3af9
   must be 32 bits wide or more.
Packit ed3af9
Packit ed3af9
   True colors are repsented as follows:
Packit ed3af9
   
Packit ed3af9
   ARGB
Packit ed3af9
	
Packit ed3af9
   Where 'A' (alpha channel) occupies only the
Packit ed3af9
   LOWER 7 BITS of the MSB. This very small
Packit ed3af9
   loss of alpha channel resolution allows gd 2.x
Packit ed3af9
   to keep backwards compatibility by allowing
Packit ed3af9
   signed integers to be used to represent colors,
Packit ed3af9
   and negative numbers to represent special cases,
Packit ed3af9
   just as in gd 1.x. */
Packit ed3af9
Packit ed3af9
#define gdAlphaMax 127
Packit ed3af9
#define gdAlphaOpaque 0
Packit ed3af9
#define gdAlphaTransparent 127
Packit ed3af9
#define gdRedMax 255
Packit ed3af9
#define gdGreenMax 255
Packit ed3af9
#define gdBlueMax 255
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: Color Decomposition
Packit ed3af9
 */
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdTrueColorGetAlpha
Packit ed3af9
 *
Packit ed3af9
 * Gets the alpha channel value
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   c - The color
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdTrueColorAlpha>
Packit ed3af9
 */
Packit ed3af9
#define gdTrueColorGetAlpha(c) (((c) & 0x7F000000) >> 24)
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdTrueColorGetRed
Packit ed3af9
 *
Packit ed3af9
 * Gets the red channel value
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   c - The color
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdTrueColorAlpha>
Packit ed3af9
 */
Packit ed3af9
#define gdTrueColorGetRed(c) (((c) & 0xFF0000) >> 16)
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdTrueColorGetGreen
Packit ed3af9
 *
Packit ed3af9
 * Gets the green channel value
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   c - The color
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdTrueColorAlpha>
Packit ed3af9
 */
Packit ed3af9
#define gdTrueColorGetGreen(c) (((c) & 0x00FF00) >> 8)
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdTrueColorGetBlue
Packit ed3af9
 *
Packit ed3af9
 * Gets the blue channel value
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   c - The color
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdTrueColorAlpha>
Packit ed3af9
 */
Packit ed3af9
#define gdTrueColorGetBlue(c) ((c) & 0x0000FF)
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: Effects
Packit ed3af9
 *
Packit ed3af9
 * The layering effect
Packit ed3af9
 * 
Packit ed3af9
 * When pixels are drawn the new colors are "mixed" with the background
Packit ed3af9
 * depending on the effect.
Packit ed3af9
 *
Packit ed3af9
 * Note that the effect does not apply to palette images, where pixels
Packit ed3af9
 * are always replaced.
Packit ed3af9
 *
Packit ed3af9
 * Modes:
Packit ed3af9
 *   gdEffectReplace    - replace pixels
Packit ed3af9
 *   gdEffectAlphaBlend - blend pixels, see <gdAlphaBlend>
Packit ed3af9
 *   gdEffectNormal     - default mode; same as gdEffectAlphaBlend
Packit ed3af9
 *   gdEffectOverlay    - overlay pixels, see <gdLayerOverlay>
Packit ed3af9
 *   gdEffectMultiply   - overlay pixels with multiply effect, see
Packit ed3af9
 *                        <gdLayerMultiply>
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageAlphaBlending>
Packit ed3af9
 */
Packit ed3af9
#define gdEffectReplace 0
Packit ed3af9
#define gdEffectAlphaBlend 1
Packit ed3af9
#define gdEffectNormal 2
Packit ed3af9
#define gdEffectOverlay 3
Packit ed3af9
#define gdEffectMultiply 4
Packit ed3af9
Packit ed3af9
#define GD_TRUE 1
Packit ed3af9
#define GD_FALSE 0
Packit ed3af9
Packit ed3af9
#define GD_EPSILON 1e-6
Packit ed3af9
#ifndef M_PI
Packit ed3af9
# define M_PI 3.14159265358979323846
Packit ed3af9
#endif
Packit ed3af9
Packit ed3af9
/* This function accepts truecolor pixel values only. The
Packit ed3af9
   source color is composited with the destination color
Packit ed3af9
   based on the alpha channel value of the source color.
Packit ed3af9
   The resulting color is opaque. */
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdAlphaBlend (int dest, int src);
Packit ed3af9
BGD_DECLARE(int) gdLayerOverlay (int dest, int src);
Packit ed3af9
BGD_DECLARE(int) gdLayerMultiply (int dest, int src);
Packit ed3af9
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: Color Quantization
Packit ed3af9
 *
Packit ed3af9
 * Enum: gdPaletteQuantizationMethod
Packit ed3af9
 *
Packit ed3af9
 * Constants:
Packit ed3af9
 *   GD_QUANT_DEFAULT  - GD_QUANT_LIQ if libimagequant is available,
Packit ed3af9
 *                       GD_QUANT_JQUANT otherwise.
Packit ed3af9
 *   GD_QUANT_JQUANT   - libjpeg's old median cut. Fast, but only uses 16-bit
Packit ed3af9
 *                       color.
Packit ed3af9
 *   GD_QUANT_NEUQUANT - NeuQuant - approximation using Kohonen neural network.
Packit ed3af9
 *   GD_QUANT_LIQ      - A combination of algorithms used in libimagequant
Packit ed3af9
 *                       aiming for the highest quality at cost of speed.
Packit ed3af9
 *
Packit ed3af9
 * Note that GD_QUANT_JQUANT does not retain the alpha channel, and
Packit ed3af9
 * GD_QUANT_NEUQUANT does not support dithering.
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageTrueColorToPaletteSetMethod>
Packit ed3af9
 */
Packit ed3af9
enum gdPaletteQuantizationMethod {
Packit ed3af9
	GD_QUANT_DEFAULT = 0,
Packit ed3af9
	GD_QUANT_JQUANT = 1,
Packit ed3af9
	GD_QUANT_NEUQUANT = 2,
Packit ed3af9
	GD_QUANT_LIQ = 3
Packit ed3af9
};
Packit ed3af9
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: Transform
Packit ed3af9
 *
Packit ed3af9
 * Constants: gdInterpolationMethod
Packit ed3af9
 *
Packit ed3af9
 *  GD_BELL				 - Bell
Packit ed3af9
 *  GD_BESSEL			 - Bessel
Packit ed3af9
 *  GD_BILINEAR_FIXED 	 - fixed point bilinear 
Packit ed3af9
 *  GD_BICUBIC 			 - Bicubic
Packit ed3af9
 *  GD_BICUBIC_FIXED 	 - fixed point bicubic integer
Packit ed3af9
 *  GD_BLACKMAN			 - Blackman
Packit ed3af9
 *  GD_BOX				 - Box
Packit ed3af9
 *  GD_BSPLINE			 - BSpline
Packit ed3af9
 *  GD_CATMULLROM		 - Catmullrom
Packit ed3af9
 *  GD_GAUSSIAN			 - Gaussian
Packit ed3af9
 *  GD_GENERALIZED_CUBIC - Generalized cubic
Packit ed3af9
 *  GD_HERMITE			 - Hermite
Packit ed3af9
 *  GD_HAMMING			 - Hamming
Packit ed3af9
 *  GD_HANNING			 - Hannig
Packit ed3af9
 *  GD_MITCHELL			 - Mitchell
Packit ed3af9
 *  GD_NEAREST_NEIGHBOUR - Nearest neighbour interpolation
Packit ed3af9
 *  GD_POWER			 - Power
Packit ed3af9
 *  GD_QUADRATIC		 - Quadratic
Packit ed3af9
 *  GD_SINC				 - Sinc
Packit ed3af9
 *  GD_TRIANGLE			 - Triangle
Packit ed3af9
 *  GD_WEIGHTED4		 - 4 pixels weighted bilinear interpolation
Packit ed3af9
 *  GD_LINEAR            - bilinear interpolation
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *  - <gdImageSetInterpolationMethod>
Packit ed3af9
 *  - <gdImageGetInterpolationMethod>
Packit ed3af9
 */
Packit ed3af9
typedef enum {
Packit ed3af9
	GD_DEFAULT          = 0,
Packit ed3af9
	GD_BELL,
Packit ed3af9
	GD_BESSEL,
Packit ed3af9
	GD_BILINEAR_FIXED,
Packit ed3af9
	GD_BICUBIC,
Packit ed3af9
	GD_BICUBIC_FIXED,
Packit ed3af9
	GD_BLACKMAN,
Packit ed3af9
	GD_BOX,
Packit ed3af9
	GD_BSPLINE,
Packit ed3af9
	GD_CATMULLROM,
Packit ed3af9
	GD_GAUSSIAN,
Packit ed3af9
	GD_GENERALIZED_CUBIC,
Packit ed3af9
	GD_HERMITE,
Packit ed3af9
	GD_HAMMING,
Packit ed3af9
	GD_HANNING,
Packit ed3af9
	GD_MITCHELL,
Packit ed3af9
	GD_NEAREST_NEIGHBOUR,
Packit ed3af9
	GD_POWER,
Packit ed3af9
	GD_QUADRATIC,
Packit ed3af9
	GD_SINC,
Packit ed3af9
	GD_TRIANGLE,
Packit ed3af9
	GD_WEIGHTED4,
Packit ed3af9
	GD_LINEAR,
Packit ed3af9
	GD_METHOD_COUNT = 23
Packit ed3af9
} gdInterpolationMethod;
Packit ed3af9
Packit ed3af9
/* define struct with name and func ptr and add it to gdImageStruct gdInterpolationMethod interpolation; */
Packit ed3af9
Packit ed3af9
/* Interpolation function ptr */
Packit ed3af9
typedef double (* interpolation_method )(double);
Packit ed3af9
Packit ed3af9
Packit ed3af9
/*
Packit ed3af9
   Group: Types
Packit ed3af9
 
Packit ed3af9
   typedef: gdImage
Packit ed3af9
Packit ed3af9
   typedef: gdImagePtr
Packit ed3af9
Packit ed3af9
   The data structure in which gd stores images. <gdImageCreate>,
Packit ed3af9
   <gdImageCreateTrueColor> and the various image file-loading functions
Packit ed3af9
   return a pointer to this type, and the other functions expect to
Packit ed3af9
   receive a pointer to this type as their first argument.
Packit ed3af9
Packit ed3af9
   *gdImagePtr* is a pointer to *gdImage*.
Packit ed3af9
Packit ed3af9
   See also:
Packit ed3af9
     <Accessor Macros>
Packit ed3af9
Packit ed3af9
   (Previous versions of this library encouraged directly manipulating
Packit ed3af9
   the contents ofthe struct but we are attempting to move away from
Packit ed3af9
   this practice so the fields are no longer documented here.  If you
Packit ed3af9
   need to poke at the internals of this struct, feel free to look at
Packit ed3af9
   *gd.h*.)
Packit ed3af9
*/
Packit ed3af9
typedef struct gdImageStruct {
Packit ed3af9
	/* Palette-based image pixels */
Packit ed3af9
	unsigned char **pixels;
Packit ed3af9
	int sx;
Packit ed3af9
	int sy;
Packit ed3af9
	/* These are valid in palette images only. See also
Packit ed3af9
	   'alpha', which appears later in the structure to
Packit ed3af9
	   preserve binary backwards compatibility */
Packit ed3af9
	int colorsTotal;
Packit ed3af9
	int red[gdMaxColors];
Packit ed3af9
	int green[gdMaxColors];
Packit ed3af9
	int blue[gdMaxColors];
Packit ed3af9
	int open[gdMaxColors];
Packit ed3af9
	/* For backwards compatibility, this is set to the
Packit ed3af9
	   first palette entry with 100% transparency,
Packit ed3af9
	   and is also set and reset by the
Packit ed3af9
	   gdImageColorTransparent function. Newer
Packit ed3af9
	   applications can allocate palette entries
Packit ed3af9
	   with any desired level of transparency; however,
Packit ed3af9
	   bear in mind that many viewers, notably
Packit ed3af9
	   many web browsers, fail to implement
Packit ed3af9
	   full alpha channel for PNG and provide
Packit ed3af9
	   support for full opacity or transparency only. */
Packit ed3af9
	int transparent;
Packit ed3af9
	int *polyInts;
Packit ed3af9
	int polyAllocated;
Packit ed3af9
	struct gdImageStruct *brush;
Packit ed3af9
	struct gdImageStruct *tile;
Packit ed3af9
	int brushColorMap[gdMaxColors];
Packit ed3af9
	int tileColorMap[gdMaxColors];
Packit ed3af9
	int styleLength;
Packit ed3af9
	int stylePos;
Packit ed3af9
	int *style;
Packit ed3af9
	int interlace;
Packit ed3af9
	/* New in 2.0: thickness of line. Initialized to 1. */
Packit ed3af9
	int thick;
Packit ed3af9
	/* New in 2.0: alpha channel for palettes. Note that only
Packit ed3af9
	   Macintosh Internet Explorer and (possibly) Netscape 6
Packit ed3af9
	   really support multiple levels of transparency in
Packit ed3af9
	   palettes, to my knowledge, as of 2/15/01. Most
Packit ed3af9
	   common browsers will display 100% opaque and
Packit ed3af9
	   100% transparent correctly, and do something
Packit ed3af9
	   unpredictable and/or undesirable for levels
Packit ed3af9
	   in between. TBB */
Packit ed3af9
	int alpha[gdMaxColors];
Packit ed3af9
	/* Truecolor flag and pixels. New 2.0 fields appear here at the
Packit ed3af9
	   end to minimize breakage of existing object code. */
Packit ed3af9
	int trueColor;
Packit ed3af9
	int **tpixels;
Packit ed3af9
	/* Should alpha channel be copied, or applied, each time a
Packit ed3af9
	   pixel is drawn? This applies to truecolor images only.
Packit ed3af9
	   No attempt is made to alpha-blend in palette images,
Packit ed3af9
	   even if semitransparent palette entries exist.
Packit ed3af9
	   To do that, build your image as a truecolor image,
Packit ed3af9
	   then quantize down to 8 bits. */
Packit ed3af9
	int alphaBlendingFlag;
Packit ed3af9
	/* Should the alpha channel of the image be saved? This affects
Packit ed3af9
	   PNG at the moment; other future formats may also
Packit ed3af9
	   have that capability. JPEG doesn't. */
Packit ed3af9
	int saveAlphaFlag;
Packit ed3af9
Packit ed3af9
	/* There should NEVER BE ACCESSOR MACROS FOR ITEMS BELOW HERE, so this
Packit ed3af9
	   part of the structure can be safely changed in new releases. */
Packit ed3af9
Packit ed3af9
	/* 2.0.12: anti-aliased globals. 2.0.26: just a few vestiges after
Packit ed3af9
	  switching to the fast, memory-cheap implementation from PHP-gd. */
Packit ed3af9
	int AA;
Packit ed3af9
	int AA_color;
Packit ed3af9
	int AA_dont_blend;
Packit ed3af9
Packit ed3af9
	/* 2.0.12: simple clipping rectangle. These values
Packit ed3af9
	  must be checked for safety when set; please use
Packit ed3af9
	  gdImageSetClip */
Packit ed3af9
	int cx1;
Packit ed3af9
	int cy1;
Packit ed3af9
	int cx2;
Packit ed3af9
	int cy2;
Packit ed3af9
Packit ed3af9
	/* 2.1.0: allows to specify resolution in dpi */
Packit ed3af9
	unsigned int res_x;
Packit ed3af9
	unsigned int res_y;
Packit ed3af9
Packit ed3af9
	/* Selects quantization method, see gdImageTrueColorToPaletteSetMethod() and gdPaletteQuantizationMethod enum. */
Packit ed3af9
	int paletteQuantizationMethod;
Packit ed3af9
	/* speed/quality trade-off. 1 = best quality, 10 = best speed. 0 = method-specific default.
Packit ed3af9
	   Applicable to GD_QUANT_LIQ and GD_QUANT_NEUQUANT. */
Packit ed3af9
	int paletteQuantizationSpeed;
Packit ed3af9
	/* Image will remain true-color if conversion to palette cannot achieve given quality.
Packit ed3af9
	   Value from 1 to 100, 1 = ugly, 100 = perfect. Applicable to GD_QUANT_LIQ.*/
Packit ed3af9
	int paletteQuantizationMinQuality;
Packit ed3af9
	/* Image will use minimum number of palette colors needed to achieve given quality. Must be higher than paletteQuantizationMinQuality
Packit ed3af9
	   Value from 1 to 100, 1 = ugly, 100 = perfect. Applicable to GD_QUANT_LIQ.*/
Packit ed3af9
	int paletteQuantizationMaxQuality;
Packit ed3af9
	gdInterpolationMethod interpolation_id;
Packit ed3af9
	interpolation_method interpolation;
Packit ed3af9
}
Packit ed3af9
gdImage;
Packit ed3af9
Packit ed3af9
typedef gdImage *gdImagePtr;
Packit ed3af9
Packit ed3af9
Packit ed3af9
/* Point type for use in polygon drawing. */
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: Types
Packit ed3af9
 *
Packit ed3af9
 * typedef: gdPointF
Packit ed3af9
 *  Defines a point in a 2D coordinate system using floating point
Packit ed3af9
 *  values.
Packit ed3af9
 * x - Floating point position (increase from left to right)
Packit ed3af9
 * y - Floating point Row position (increase from top to bottom)
Packit ed3af9
 *
Packit ed3af9
 * typedef: gdPointFPtr
Packit ed3af9
 *  Pointer to a <gdPointF>
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *  <gdImageCreate>, <gdImageCreateTrueColor>,
Packit ed3af9
 **/
Packit ed3af9
typedef struct
Packit ed3af9
{
Packit ed3af9
	double x, y;
Packit ed3af9
}
Packit ed3af9
gdPointF, *gdPointFPtr;
Packit ed3af9
Packit ed3af9
Packit ed3af9
/*
Packit ed3af9
  Group: Types
Packit ed3af9
Packit ed3af9
  typedef: gdFont
Packit ed3af9
Packit ed3af9
  typedef: gdFontPtr
Packit ed3af9
Packit ed3af9
  A font structure, containing the bitmaps of all characters in a
Packit ed3af9
  font.  Used to declare the characteristics of a font. Text-output
Packit ed3af9
  functions expect these as their second argument, following the
Packit ed3af9
  <gdImagePtr> argument.  <gdFontGetSmall> and <gdFontGetLarge> both
Packit ed3af9
  return one.
Packit ed3af9
Packit ed3af9
  You can provide your own font data by providing such a structure and
Packit ed3af9
  the associated pixel array. You can determine the width and height
Packit ed3af9
  of a single character in a font by examining the w and h members of
Packit ed3af9
  the structure. If you will not be creating your own fonts, you will
Packit ed3af9
  not need to concern yourself with the rest of the components of this
Packit ed3af9
  structure.
Packit ed3af9
Packit ed3af9
  Please see the files gdfontl.c and gdfontl.h for an example of
Packit ed3af9
  the proper declaration of this structure. 
Packit ed3af9
Packit ed3af9
  > typedef struct {
Packit ed3af9
  >   // # of characters in font
Packit ed3af9
  >   int nchars;
Packit ed3af9
  >   // First character is numbered... (usually 32 = space)
Packit ed3af9
  >   int offset;
Packit ed3af9
  >   // Character width and height
Packit ed3af9
  >   int w;
Packit ed3af9
  >   int h;
Packit ed3af9
  >   // Font data; array of characters, one row after another.
Packit ed3af9
  >   // Easily included in code, also easily loaded from
Packit ed3af9
  >   // data files.
Packit ed3af9
  >   char *data;
Packit ed3af9
  > } gdFont;
Packit ed3af9
Packit ed3af9
  gdFontPtr is a pointer to gdFont.
Packit ed3af9
Packit ed3af9
*/
Packit ed3af9
typedef struct {
Packit ed3af9
	/* # of characters in font */
Packit ed3af9
	int nchars;
Packit ed3af9
	/* First character is numbered... (usually 32 = space) */
Packit ed3af9
	int offset;
Packit ed3af9
	/* Character width and height */
Packit ed3af9
	int w;
Packit ed3af9
	int h;
Packit ed3af9
	/* Font data; array of characters, one row after another.
Packit ed3af9
	   Easily included in code, also easily loaded from
Packit ed3af9
	   data files. */
Packit ed3af9
	char *data;
Packit ed3af9
}
Packit ed3af9
gdFont;
Packit ed3af9
Packit ed3af9
/* Text functions take these. */
Packit ed3af9
typedef gdFont *gdFontPtr;
Packit ed3af9
Packit ed3af9
typedef void(*gdErrorMethod)(int, const char *, va_list);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdSetErrorMethod(gdErrorMethod);
Packit ed3af9
BGD_DECLARE(void) gdClearErrorMethod(void);
Packit ed3af9
Packit ed3af9
/* For backwards compatibility only. Use gdImageSetStyle()
Packit ed3af9
   for MUCH more flexible line drawing. Also see
Packit ed3af9
   gdImageSetBrush(). */
Packit ed3af9
#define gdDashSize 4
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: Colors
Packit ed3af9
 *
Packit ed3af9
 * Colors are always of type int which is supposed to be at least 32 bit large.
Packit ed3af9
 *
Packit ed3af9
 * Kinds of colors:
Packit ed3af9
 *   true colors     - ARGB values where the alpha channel is stored as most
Packit ed3af9
 *                     significant, and the blue channel as least significant
Packit ed3af9
 *                     byte. Note that the alpha channel only uses the 7 least
Packit ed3af9
 *                     significant bits.
Packit ed3af9
 *                     Don't rely on the internal representation, though, and
Packit ed3af9
 *                     use <gdTrueColorAlpha> to compose a truecolor value, and
Packit ed3af9
 *                     <gdTrueColorGetAlpha>, <gdTrueColorGetRed>,
Packit ed3af9
 *                     <gdTrueColorGetGreen> and <gdTrueColorGetBlue> to access
Packit ed3af9
 *                     the respective channels.
Packit ed3af9
 *   palette indexes - The index of a color palette entry (0-255).
Packit ed3af9
 *   special colors  - As listed in the following section.
Packit ed3af9
 *
Packit ed3af9
 * Constants: Special Colors
Packit ed3af9
 *   gdStyled        - use the current style, see <gdImageSetStyle>
Packit ed3af9
 *   gdBrushed       - use the current brush, see <gdImageSetBrush>
Packit ed3af9
 *   gdStyledBrushed - use the current style and brush
Packit ed3af9
 *   gdTiled         - use the current tile, see <gdImageSetTile>
Packit ed3af9
 *   gdTransparent   - indicate transparency, what is not the same as the
Packit ed3af9
 *                     transparent color index; used for lines only
Packit ed3af9
 *   gdAntiAliased   - draw anti aliased
Packit ed3af9
 */
Packit ed3af9
Packit ed3af9
#define gdStyled (-2)
Packit ed3af9
#define gdBrushed (-3)
Packit ed3af9
#define gdStyledBrushed (-4)
Packit ed3af9
#define gdTiled (-5)
Packit ed3af9
#define gdTransparent (-6)
Packit ed3af9
#define gdAntiAliased (-7)
Packit ed3af9
Packit ed3af9
/* Functions to manipulate images. */
Packit ed3af9
Packit ed3af9
/* Creates a palette-based image (up to 256 colors). */
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreate (int sx, int sy);
Packit ed3af9
Packit ed3af9
/* An alternate name for the above (2.0). */
Packit ed3af9
#define gdImageCreatePalette gdImageCreate
Packit ed3af9
Packit ed3af9
/* Creates a truecolor image (millions of colors). */
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateTrueColor (int sx, int sy);
Packit ed3af9
Packit ed3af9
/* Creates an image from various file types. These functions
Packit ed3af9
   return a palette or truecolor image based on the
Packit ed3af9
   nature of the file being loaded. Truecolor PNG
Packit ed3af9
   stays truecolor; palette PNG stays palette-based;
Packit ed3af9
   JPEG is always truecolor. */
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromPng (FILE * fd);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtxPtr in);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromPngPtr (int size, void *data);
Packit ed3af9
Packit ed3af9
/* These read the first frame only */
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGif (FILE * fd);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGifCtx (gdIOCtxPtr in);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGifPtr (int size, void *data);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMP (FILE * inFile);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMPCtx (gdIOCtx * infile);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMPPtr (int size, void *data);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromJpeg (FILE * infile);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegEx (FILE * infile, int ignore_warning);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegCtx (gdIOCtx * infile);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegCtxEx (gdIOCtx * infile, int ignore_warning);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegPtr (int size, void *data);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegPtrEx (int size, void *data, int ignore_warning);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromWebp (FILE * inFile);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromWebpPtr (int size, void *data);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromWebpCtx (gdIOCtx * infile);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromTiff(FILE *inFile);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffPtr(int size, void *data);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromTga( FILE * fp );
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaCtx(gdIOCtx* ctx);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaPtr(int size, void *data);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromBmp (FILE * inFile);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromBmpPtr (int size, void *data);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromBmpCtx (gdIOCtxPtr infile);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromFile(const char *filename);
Packit ed3af9
Packit ed3af9
Packit ed3af9
/*
Packit ed3af9
  Group: Types
Packit ed3af9
Packit ed3af9
  typedef: gdSource
Packit ed3af9
Packit ed3af9
  typedef: gdSourcePtr
Packit ed3af9
Packit ed3af9
    *Note:* This interface is *obsolete* and kept only for
Packit ed3af9
    *compatibility.  Use <gdIOCtx> instead.
Packit ed3af9
Packit ed3af9
    Represents a source from which a PNG can be read. Programmers who
Packit ed3af9
    do not wish to read PNGs from a file can provide their own
Packit ed3af9
    alternate input mechanism, using the <gdImageCreateFromPngSource>
Packit ed3af9
    function. See the documentation of that function for an example of
Packit ed3af9
    the proper use of this type.
Packit ed3af9
Packit ed3af9
    > typedef struct {
Packit ed3af9
    >         int (*source) (void *context, char *buffer, int len);
Packit ed3af9
    >         void *context;
Packit ed3af9
    > } gdSource, *gdSourcePtr;
Packit ed3af9
Packit ed3af9
    The source function must return -1 on error, otherwise the number
Packit ed3af9
    of bytes fetched. 0 is EOF, not an error!
Packit ed3af9
Packit ed3af9
   'context' will be passed to your source function.
Packit ed3af9
Packit ed3af9
*/
Packit ed3af9
typedef struct {
Packit ed3af9
	int (*source) (void *context, char *buffer, int len);
Packit ed3af9
	void *context;
Packit ed3af9
}
Packit ed3af9
gdSource, *gdSourcePtr;
Packit ed3af9
Packit ed3af9
/* Deprecated in favor of gdImageCreateFromPngCtx */
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromPngSource (gdSourcePtr in);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd (FILE * in);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGdCtx (gdIOCtxPtr in);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGdPtr (int size, void *data);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2 (FILE * in);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ptr (int size, void *data);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Part (FILE * in, int srcx, int srcy, int w,
Packit ed3af9
						  int h);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartCtx (gdIOCtxPtr in, int srcx, int srcy,
Packit ed3af9
						     int w, int h);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartPtr (int size, void *data, int srcx, int srcy,
Packit ed3af9
						     int w, int h);
Packit ed3af9
/* 2.0.10: prototype was missing */
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm (FILE * in);
Packit ed3af9
BGD_DECLARE(void) gdImageXbmCtx(gdImagePtr image, char* file_name, int fg, gdIOCtx * out);
Packit ed3af9
Packit ed3af9
/* NOTE: filename, not FILE */
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreateFromXpm (char *filename);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageDestroy (gdImagePtr im);
Packit ed3af9
Packit ed3af9
/* Replaces or blends with the background depending on the
Packit ed3af9
   most recent call to gdImageAlphaBlending and the
Packit ed3af9
   alpha channel value of 'color'; default is to overwrite.
Packit ed3af9
   Tiling and line styling are also implemented
Packit ed3af9
   here. All other gd drawing functions pass through this call,
Packit ed3af9
   allowing for many useful effects. 
Packit ed3af9
   Overlay and multiply effects are used when gdImageAlphaBlending
Packit ed3af9
   is passed gdEffectOverlay and gdEffectMultiply */
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageSetPixel (gdImagePtr im, int x, int y, int color);
Packit ed3af9
/* FreeType 2 text output with hook to extra flags */
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdImageGetPixel (gdImagePtr im, int x, int y);
Packit ed3af9
BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageAABlend (gdImagePtr im);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color);
Packit ed3af9
Packit ed3af9
/* For backwards compatibility only. Use gdImageSetStyle()
Packit ed3af9
   for much more flexible line drawing. */
Packit ed3af9
BGD_DECLARE(void) gdImageDashedLine (gdImagePtr im, int x1, int y1, int x2, int y2,
Packit ed3af9
                                     int color);
Packit ed3af9
/* Corners specified (not width and height). Upper left first, lower right
Packit ed3af9
   second. */
Packit ed3af9
BGD_DECLARE(void) gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
Packit ed3af9
                                    int color);
Packit ed3af9
/* Solid bar. Upper left corner first, lower right corner second. */
Packit ed3af9
BGD_DECLARE(void) gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
Packit ed3af9
					  int color);
Packit ed3af9
BGD_DECLARE(void) gdImageSetClip(gdImagePtr im, int x1, int y1, int x2, int y2);
Packit ed3af9
BGD_DECLARE(void) gdImageGetClip(gdImagePtr im, int *x1P, int *y1P, int *x2P, int *y2P);
Packit ed3af9
BGD_DECLARE(void) gdImageSetResolution(gdImagePtr im, const unsigned int res_x, const unsigned int res_y);
Packit ed3af9
BGD_DECLARE(int) gdImageBoundsSafe (gdImagePtr im, int x, int y);
Packit ed3af9
BGD_DECLARE(void) gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c,
Packit ed3af9
                               int color);
Packit ed3af9
BGD_DECLARE(void) gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c,
Packit ed3af9
                                 int color);
Packit ed3af9
BGD_DECLARE(void) gdImageString (gdImagePtr im, gdFontPtr f, int x, int y,
Packit ed3af9
                                 unsigned char *s, int color);
Packit ed3af9
BGD_DECLARE(void) gdImageStringUp (gdImagePtr im, gdFontPtr f, int x, int y,
Packit ed3af9
                                   unsigned char *s, int color);
Packit ed3af9
BGD_DECLARE(void) gdImageString16 (gdImagePtr im, gdFontPtr f, int x, int y,
Packit ed3af9
                                   unsigned short *s, int color);
Packit ed3af9
BGD_DECLARE(void) gdImageStringUp16 (gdImagePtr im, gdFontPtr f, int x, int y,
Packit ed3af9
                                     unsigned short *s, int color);
Packit ed3af9
Packit ed3af9
/* 2.0.16: for thread-safe use of gdImageStringFT and friends,
Packit ed3af9
   call this before allowing any thread to call gdImageStringFT.
Packit ed3af9
   Otherwise it is invoked by the first thread to invoke
Packit ed3af9
   gdImageStringFT, with a very small but real risk of a race condition.
Packit ed3af9
   Return 0 on success, nonzero on failure to initialize freetype. */
Packit ed3af9
BGD_DECLARE(int) gdFontCacheSetup (void);
Packit ed3af9
Packit ed3af9
/* Optional: clean up after application is done using fonts in
Packit ed3af9
   gdImageStringFT(). */
Packit ed3af9
BGD_DECLARE(void) gdFontCacheShutdown (void);
Packit ed3af9
/* 2.0.20: for backwards compatibility. A few applications did start calling
Packit ed3af9
   this function when it first appeared although it was never documented.
Packit ed3af9
   Simply invokes gdFontCacheShutdown. */
Packit ed3af9
BGD_DECLARE(void) gdFreeFontCache (void);
Packit ed3af9
Packit ed3af9
/* Calls gdImageStringFT. Provided for backwards compatibility only. */
Packit ed3af9
BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, char *fontlist,
Packit ed3af9
                                      double ptsize, double angle, int x, int y,
Packit ed3af9
                                      char *string);
Packit ed3af9
Packit ed3af9
/* FreeType 2 text output */
Packit ed3af9
BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist,
Packit ed3af9
                                     double ptsize, double angle, int x, int y,
Packit ed3af9
                                     char *string);
Packit ed3af9
Packit ed3af9
Packit ed3af9
/*
Packit ed3af9
  Group: Types
Packit ed3af9
Packit ed3af9
  typedef: gdFTStringExtra
Packit ed3af9
Packit ed3af9
  typedef: gdFTStringExtraPtr
Packit ed3af9
Packit ed3af9
  A structure and associated pointer type used to pass additional
Packit ed3af9
  parameters to the <gdImageStringFTEx> function. See
Packit ed3af9
  <gdImageStringFTEx> for the structure definition.
Packit ed3af9
Packit ed3af9
  Thanks to Wez Furlong.
Packit ed3af9
*/
Packit ed3af9
Packit ed3af9
/* 2.0.5: provides an extensible way to pass additional parameters.
Packit ed3af9
   Thanks to Wez Furlong, sorry for the delay. */
Packit ed3af9
typedef struct {
Packit ed3af9
	int flags;		/* Logical OR of gdFTEX_ values */
Packit ed3af9
	double linespacing;	/* fine tune line spacing for '\n' */
Packit ed3af9
	int charmap;		/* TBB: 2.0.12: may be gdFTEX_Unicode,
Packit ed3af9
				   gdFTEX_Shift_JIS, gdFTEX_Big5,
Packit ed3af9
				   or gdFTEX_Adobe_Custom;
Packit ed3af9
				   when not specified, maps are searched
Packit ed3af9
				   for in the above order. */
Packit ed3af9
	int hdpi;                /* if (flags & gdFTEX_RESOLUTION) */
Packit ed3af9
	int vdpi;		 /* if (flags & gdFTEX_RESOLUTION) */
Packit ed3af9
	char *xshow;             /* if (flags & gdFTEX_XSHOW)
Packit ed3af9
				    then, on return, xshow is a malloc'ed
Packit ed3af9
				    string containing xshow position data for
Packit ed3af9
				    the last string.
Packit ed3af9
				    
Packit ed3af9
				    NB. The caller is responsible for gdFree'ing
Packit ed3af9
				    the xshow string.
Packit ed3af9
				 */
Packit ed3af9
	char *fontpath;	         /* if (flags & gdFTEX_RETURNFONTPATHNAME)
Packit ed3af9
				    then, on return, fontpath is a malloc'ed
Packit ed3af9
				    string containing the actual font file path name
Packit ed3af9
				    used, which can be interesting when fontconfig
Packit ed3af9
				    is in use.
Packit ed3af9
				    
Packit ed3af9
				    The caller is responsible for gdFree'ing the
Packit ed3af9
				    fontpath string.
Packit ed3af9
				 */
Packit ed3af9
Packit ed3af9
}
Packit ed3af9
gdFTStringExtra, *gdFTStringExtraPtr;
Packit ed3af9
Packit ed3af9
#define gdFTEX_LINESPACE 1
Packit ed3af9
#define gdFTEX_CHARMAP 2
Packit ed3af9
#define gdFTEX_RESOLUTION 4
Packit ed3af9
#define gdFTEX_DISABLE_KERNING 8
Packit ed3af9
#define gdFTEX_XSHOW 16
Packit ed3af9
/* The default unless gdFTUseFontConfig(1); has been called:
Packit ed3af9
   fontlist is a full or partial font file pathname or list thereof
Packit ed3af9
   (i.e. just like before 2.0.29) */
Packit ed3af9
#define gdFTEX_FONTPATHNAME 32
Packit ed3af9
/* Necessary to use fontconfig patterns instead of font pathnames
Packit ed3af9
   as the fontlist argument, unless gdFTUseFontConfig(1); has
Packit ed3af9
   been called. New in 2.0.29 */
Packit ed3af9
#define gdFTEX_FONTCONFIG 64
Packit ed3af9
/* Sometimes interesting when fontconfig is used: the fontpath
Packit ed3af9
   element of the structure above will contain a gdMalloc'd string
Packit ed3af9
   copy of the actual font file pathname used, if this flag is set
Packit ed3af9
   when the call is made */
Packit ed3af9
#define gdFTEX_RETURNFONTPATHNAME 128
Packit ed3af9
Packit ed3af9
/* If flag is nonzero, the fontlist parameter to gdImageStringFT
Packit ed3af9
   and gdImageStringFTEx shall be assumed to be a fontconfig font pattern
Packit ed3af9
   if fontconfig was compiled into gd. This function returns zero
Packit ed3af9
   if fontconfig is not available, nonzero otherwise. */
Packit ed3af9
BGD_DECLARE(int) gdFTUseFontConfig(int flag);
Packit ed3af9
Packit ed3af9
/* These are NOT flags; set one in 'charmap' if you set the
Packit ed3af9
   gdFTEX_CHARMAP bit in 'flags'. */
Packit ed3af9
#define gdFTEX_Unicode 0
Packit ed3af9
#define gdFTEX_Shift_JIS 1
Packit ed3af9
#define gdFTEX_Big5 2
Packit ed3af9
#define gdFTEX_Adobe_Custom 3
Packit ed3af9
Packit ed3af9
BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *fontlist,
Packit ed3af9
                                       double ptsize, double angle, int x, int y,
Packit ed3af9
                                       char *string, gdFTStringExtraPtr strex);
Packit ed3af9
Packit ed3af9
Packit ed3af9
/*
Packit ed3af9
  Group: Types
Packit ed3af9
Packit ed3af9
  typedef: gdPoint
Packit ed3af9
Packit ed3af9
  typedef: gdPointPtr
Packit ed3af9
Packit ed3af9
  Represents a point in the coordinate space of the image; used by
Packit ed3af9
  <gdImagePolygon>, <gdImageOpenPolygon> and <gdImageFilledPolygon>
Packit ed3af9
  for polygon drawing.
Packit ed3af9
Packit ed3af9
  > typedef struct {
Packit ed3af9
  >     int x, y;
Packit ed3af9
  > } gdPoint, *gdPointPtr;
Packit ed3af9
Packit ed3af9
*/
Packit ed3af9
typedef struct {
Packit ed3af9
	int x, y;
Packit ed3af9
}
Packit ed3af9
gdPoint, *gdPointPtr;
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Typedef: gdRect
Packit ed3af9
 *
Packit ed3af9
 * A rectangle in the coordinate space of the image
Packit ed3af9
 *
Packit ed3af9
 * Members:
Packit ed3af9
 *   x      - The x-coordinate of the upper left corner.
Packit ed3af9
 *   y      - The y-coordinate of the upper left corner.
Packit ed3af9
 *   width  - The width.
Packit ed3af9
 *   height - The height.
Packit ed3af9
 *
Packit ed3af9
 * Typedef: gdRectPtr
Packit ed3af9
 *
Packit ed3af9
 * A pointer to a <gdRect>
Packit ed3af9
 */
Packit ed3af9
typedef struct {
Packit ed3af9
	int x, y;
Packit ed3af9
	int width, height;
Packit ed3af9
}
Packit ed3af9
gdRect, *gdRectPtr;
Packit ed3af9
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c);
Packit ed3af9
BGD_DECLARE(void) gdImageOpenPolygon (gdImagePtr im, gdPointPtr p, int n, int c);
Packit ed3af9
BGD_DECLARE(void) gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int c);
Packit ed3af9
Packit ed3af9
/* These functions still work with truecolor images,
Packit ed3af9
   for which they never return error. */
Packit ed3af9
BGD_DECLARE(int) gdImageColorAllocate (gdImagePtr im, int r, int g, int b);
Packit ed3af9
/* gd 2.0: palette entries with non-opaque transparency are permitted. */
Packit ed3af9
BGD_DECLARE(int) gdImageColorAllocateAlpha (gdImagePtr im, int r, int g, int b, int a);
Packit ed3af9
/* Assumes opaque is the preferred alpha channel value */
Packit ed3af9
BGD_DECLARE(int) gdImageColorClosest (gdImagePtr im, int r, int g, int b);
Packit ed3af9
/* Closest match taking all four parameters into account.
Packit ed3af9
   A slightly different color with the same transparency
Packit ed3af9
   beats the exact same color with radically different
Packit ed3af9
   transparency */
Packit ed3af9
BGD_DECLARE(int) gdImageColorClosestAlpha (gdImagePtr im, int r, int g, int b, int a);
Packit ed3af9
/* An alternate method */
Packit ed3af9
BGD_DECLARE(int) gdImageColorClosestHWB (gdImagePtr im, int r, int g, int b);
Packit ed3af9
/* Returns exact, 100% opaque matches only */
Packit ed3af9
BGD_DECLARE(int) gdImageColorExact (gdImagePtr im, int r, int g, int b);
Packit ed3af9
/* Returns an exact match only, including alpha */
Packit ed3af9
BGD_DECLARE(int) gdImageColorExactAlpha (gdImagePtr im, int r, int g, int b, int a);
Packit ed3af9
/* Opaque only */
Packit ed3af9
BGD_DECLARE(int) gdImageColorResolve (gdImagePtr im, int r, int g, int b);
Packit ed3af9
/* Based on gdImageColorExactAlpha and gdImageColorClosestAlpha */
Packit ed3af9
BGD_DECLARE(int) gdImageColorResolveAlpha (gdImagePtr im, int r, int g, int b, int a);
Packit ed3af9
Packit ed3af9
/* A simpler way to obtain an opaque truecolor value for drawing on a
Packit ed3af9
   truecolor image. Not for use with palette images! */
Packit ed3af9
Packit ed3af9
#define gdTrueColor(r, g, b) (((r) << 16) + \
Packit ed3af9
			      ((g) << 8) +  \
Packit ed3af9
			      (b))
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: Color Composition
Packit ed3af9
 *
Packit ed3af9
 * Macro: gdTrueColorAlpha
Packit ed3af9
 *
Packit ed3af9
 * Compose a truecolor value from its components
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   r - The red channel (0-255)
Packit ed3af9
 *   g - The green channel (0-255)
Packit ed3af9
 *   b - The blue channel (0-255)
Packit ed3af9
 *   a - The alpha channel (0-127, where 127 is fully transparent, and 0 is
Packit ed3af9
 *       completely opaque).
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdTrueColorGetAlpha>
Packit ed3af9
 *   - <gdTrueColorGetRed>
Packit ed3af9
 *   - <gdTrueColorGetGreen>
Packit ed3af9
 *   - <gdTrueColorGetBlue>
Packit ed3af9
 *   - <gdImageColorExactAlpha>
Packit ed3af9
 */
Packit ed3af9
#define gdTrueColorAlpha(r, g, b, a) (((a) << 24) + \
Packit ed3af9
				      ((r) << 16) + \
Packit ed3af9
				      ((g) << 8) +  \
Packit ed3af9
				      (b))
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageColorDeallocate (gdImagePtr im, int color);
Packit ed3af9
Packit ed3af9
/* Converts a truecolor image to a palette-based image,
Packit ed3af9
   using a high-quality two-pass quantization routine
Packit ed3af9
   which attempts to preserve alpha channel information
Packit ed3af9
   as well as R/G/B color information when creating
Packit ed3af9
   a palette. If ditherFlag is set, the image will be
Packit ed3af9
   dithered to approximate colors better, at the expense
Packit ed3af9
   of some obvious "speckling." colorsWanted can be
Packit ed3af9
   anything up to 256. If the original source image
Packit ed3af9
   includes photographic information or anything that
Packit ed3af9
   came out of a JPEG, 256 is strongly recommended.
Packit ed3af9
   
Packit ed3af9
   Better yet, don't use these function -- write real
Packit ed3af9
   truecolor PNGs and JPEGs. The disk space gain of
Packit ed3af9
   conversion to palette is not great (for small images
Packit ed3af9
   it can be negative) and the quality loss is ugly.
Packit ed3af9
   
Packit ed3af9
   DIFFERENCES: gdImageCreatePaletteFromTrueColor creates and
Packit ed3af9
   returns a new image. gdImageTrueColorToPalette modifies
Packit ed3af9
   an existing image, and the truecolor pixels are discarded.
Packit ed3af9
   
Packit ed3af9
   gdImageTrueColorToPalette() returns TRUE on success, FALSE on failure.
Packit ed3af9
*/
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCreatePaletteFromTrueColor (gdImagePtr im, int ditherFlag,
Packit ed3af9
							   int colorsWanted);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdImageTrueColorToPalette (gdImagePtr im, int ditherFlag,
Packit ed3af9
					    int colorsWanted);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdImagePaletteToTrueColor(gdImagePtr src);
Packit ed3af9
Packit ed3af9
/* An attempt at getting the results of gdImageTrueColorToPalette to
Packit ed3af9
 * look a bit more like the original (im1 is the original and im2 is
Packit ed3af9
 * the palette version */
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdImageColorMatch(gdImagePtr im1, gdImagePtr im2);
Packit ed3af9
Packit ed3af9
/* Selects quantization method used for subsequent gdImageTrueColorToPalette calls.
Packit ed3af9
   See gdPaletteQuantizationMethod enum (e.g. GD_QUANT_NEUQUANT, GD_QUANT_LIQ).
Packit ed3af9
   Speed is from 1 (highest quality) to 10 (fastest).
Packit ed3af9
   Speed 0 selects method-specific default (recommended).
Packit ed3af9
Packit ed3af9
   Returns FALSE if the given method is invalid or not available.
Packit ed3af9
*/
Packit ed3af9
BGD_DECLARE(int) gdImageTrueColorToPaletteSetMethod (gdImagePtr im, int method, int speed);
Packit ed3af9
Packit ed3af9
/*
Packit ed3af9
  Chooses quality range that subsequent call to gdImageTrueColorToPalette will aim for.
Packit ed3af9
  Min and max quality is in range 1-100 (1 = ugly, 100 = perfect). Max must be higher than min.
Packit ed3af9
  If palette cannot represent image with at least min_quality, then image will remain true-color.
Packit ed3af9
  If palette can represent image with quality better than max_quality, then lower number of colors will be used.
Packit ed3af9
  This function has effect only when GD_QUANT_LIQ method has been selected and the source image is true-color.
Packit ed3af9
*/
Packit ed3af9
BGD_DECLARE(void) gdImageTrueColorToPaletteSetQuality (gdImagePtr im, int min_quality, int max_quality);
Packit ed3af9
Packit ed3af9
/* Specifies a color index (if a palette image) or an
Packit ed3af9
   RGB color (if a truecolor image) which should be
Packit ed3af9
   considered 100% transparent. FOR TRUECOLOR IMAGES,
Packit ed3af9
   THIS IS IGNORED IF AN ALPHA CHANNEL IS BEING
Packit ed3af9
   SAVED. Use gdImageSaveAlpha(im, 0); to
Packit ed3af9
   turn off the saving of a full alpha channel in
Packit ed3af9
   a truecolor image. Note that gdImageColorTransparent
Packit ed3af9
   is usually compatible with older browsers that
Packit ed3af9
   do not understand full alpha channels well. TBB */
Packit ed3af9
BGD_DECLARE(void) gdImageColorTransparent (gdImagePtr im, int color);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImagePaletteCopy (gdImagePtr dst, gdImagePtr src);
Packit ed3af9
Packit ed3af9
typedef int (*gdCallbackImageColor)(gdImagePtr im, int src);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdImageColorReplace(gdImagePtr im, int src, int dst);
Packit ed3af9
BGD_DECLARE(int) gdImageColorReplaceThreshold(gdImagePtr im, int src, int dst, float threshold);
Packit ed3af9
BGD_DECLARE(int) gdImageColorReplaceArray(gdImagePtr im, int len, int *src, int *dst);
Packit ed3af9
BGD_DECLARE(int) gdImageColorReplaceCallback(gdImagePtr im, gdCallbackImageColor callback);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageGif (gdImagePtr im, FILE * out);
Packit ed3af9
BGD_DECLARE(void) gdImagePng (gdImagePtr im, FILE * out);
Packit ed3af9
BGD_DECLARE(void) gdImagePngCtx (gdImagePtr im, gdIOCtx * out);
Packit ed3af9
BGD_DECLARE(void) gdImageGifCtx (gdImagePtr im, gdIOCtx * out);
Packit ed3af9
BGD_DECLARE(void) gdImageTiff(gdImagePtr im, FILE *outFile);
Packit ed3af9
BGD_DECLARE(void *) gdImageTiffPtr(gdImagePtr im, int *size);
Packit ed3af9
BGD_DECLARE(void) gdImageTiffCtx(gdImagePtr image, gdIOCtx *out);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void *) gdImageBmpPtr(gdImagePtr im, int *size, int compression);
Packit ed3af9
BGD_DECLARE(void) gdImageBmp(gdImagePtr im, FILE *outFile, int compression);
Packit ed3af9
BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression);
Packit ed3af9
Packit ed3af9
/* 2.0.12: Compression level: 0-9 or -1, where 0 is NO COMPRESSION at all,
Packit ed3af9
   1 is FASTEST but produces larger files, 9 provides the best
Packit ed3af9
   compression (smallest files) but takes a long time to compress, and
Packit ed3af9
   -1 selects the default compiled into the zlib library. */
Packit ed3af9
BGD_DECLARE(void) gdImagePngEx (gdImagePtr im, FILE * out, int level);
Packit ed3af9
BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * out, int level);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageWBMP (gdImagePtr image, int fg, FILE * out);
Packit ed3af9
BGD_DECLARE(void) gdImageWBMPCtx (gdImagePtr image, int fg, gdIOCtx * out);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdImageFile(gdImagePtr im, const char *filename);
Packit ed3af9
BGD_DECLARE(int) gdSupportsFileType(const char *filename, int writing);
Packit ed3af9
Packit ed3af9
Packit ed3af9
/* Guaranteed to correctly free memory returned by the gdImage*Ptr
Packit ed3af9
   functions */
Packit ed3af9
BGD_DECLARE(void) gdFree (void *m);
Packit ed3af9
Packit ed3af9
/* Best to free this memory with gdFree(), not free() */
Packit ed3af9
BGD_DECLARE(void *) gdImageWBMPPtr (gdImagePtr im, int *size, int fg);
Packit ed3af9
Packit ed3af9
/* 100 is highest quality (there is always a little loss with JPEG).
Packit ed3af9
   0 is lowest. 10 is about the lowest useful setting. */
Packit ed3af9
BGD_DECLARE(void) gdImageJpeg (gdImagePtr im, FILE * out, int quality);
Packit ed3af9
BGD_DECLARE(void) gdImageJpegCtx (gdImagePtr im, gdIOCtx * out, int quality);
Packit ed3af9
Packit ed3af9
/* Best to free this memory with gdFree(), not free() */
Packit ed3af9
BGD_DECLARE(void *) gdImageJpegPtr (gdImagePtr im, int *size, int quality);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageWebpEx (gdImagePtr im, FILE * outFile, int quantization);
Packit ed3af9
BGD_DECLARE(void) gdImageWebp (gdImagePtr im, FILE * outFile);
Packit ed3af9
BGD_DECLARE(void *) gdImageWebpPtr (gdImagePtr im, int *size);
Packit ed3af9
BGD_DECLARE(void *) gdImageWebpPtrEx (gdImagePtr im, int *size, int quantization);
Packit ed3af9
BGD_DECLARE(void) gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quantization);
Packit ed3af9
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: GifAnim
Packit ed3af9
 * 
Packit ed3af9
 *   Legal values for Disposal. gdDisposalNone is always used by
Packit ed3af9
 *   the built-in optimizer if previm is passed.
Packit ed3af9
 *
Packit ed3af9
 * Constants: gdImageGifAnim
Packit ed3af9
 *
Packit ed3af9
 *   gdDisposalUnknown              - Not recommended
Packit ed3af9
 *   gdDisposalNone                 - Preserve previous frame
Packit ed3af9
 *   gdDisposalRestoreBackground    - First allocated color of palette
Packit ed3af9
 *   gdDisposalRestorePrevious      - Restore to before start of frame
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageGifAnimAdd>
Packit ed3af9
 */
Packit ed3af9
enum {
Packit ed3af9
	gdDisposalUnknown,
Packit ed3af9
	gdDisposalNone,
Packit ed3af9
	gdDisposalRestoreBackground,
Packit ed3af9
	gdDisposalRestorePrevious
Packit ed3af9
};
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageGifAnimBegin(gdImagePtr im, FILE *outFile, int GlobalCM, int Loops);
Packit ed3af9
BGD_DECLARE(void) gdImageGifAnimAdd(gdImagePtr im, FILE *outFile, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm);
Packit ed3af9
BGD_DECLARE(void) gdImageGifAnimEnd(FILE *outFile);
Packit ed3af9
BGD_DECLARE(void) gdImageGifAnimBeginCtx(gdImagePtr im, gdIOCtx *out, int GlobalCM, int Loops);
Packit ed3af9
BGD_DECLARE(void) gdImageGifAnimAddCtx(gdImagePtr im, gdIOCtx *out, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm);
Packit ed3af9
BGD_DECLARE(void) gdImageGifAnimEndCtx(gdIOCtx *out);
Packit ed3af9
BGD_DECLARE(void *) gdImageGifAnimBeginPtr(gdImagePtr im, int *size, int GlobalCM, int Loops);
Packit ed3af9
BGD_DECLARE(void *) gdImageGifAnimAddPtr(gdImagePtr im, int *size, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm);
Packit ed3af9
BGD_DECLARE(void *) gdImageGifAnimEndPtr(int *size);
Packit ed3af9
Packit ed3af9
Packit ed3af9
Packit ed3af9
/*
Packit ed3af9
  Group: Types
Packit ed3af9
Packit ed3af9
  typedef: gdSink
Packit ed3af9
Packit ed3af9
  typedef: gdSinkPtr
Packit ed3af9
Packit ed3af9
    *Note:* This interface is *obsolete* and kept only for
Packit ed3af9
    *compatibility*.  Use <gdIOCtx> instead.
Packit ed3af9
Packit ed3af9
    Represents a "sink" (destination) to which a PNG can be
Packit ed3af9
    written. Programmers who do not wish to write PNGs to a file can
Packit ed3af9
    provide their own alternate output mechanism, using the
Packit ed3af9
    <gdImagePngToSink> function. See the documentation of that
Packit ed3af9
    function for an example of the proper use of this type.
Packit ed3af9
Packit ed3af9
    > typedef struct {
Packit ed3af9
    >     int (*sink) (void *context, char *buffer, int len);
Packit ed3af9
    >     void *context;
Packit ed3af9
    > } gdSink, *gdSinkPtr;
Packit ed3af9
Packit ed3af9
    The _sink_ function must return -1 on error, otherwise the number of
Packit ed3af9
    bytes written, which must be equal to len.
Packit ed3af9
Packit ed3af9
    _context_ will be passed to your sink function.
Packit ed3af9
Packit ed3af9
*/
Packit ed3af9
Packit ed3af9
typedef struct {
Packit ed3af9
	int (*sink) (void *context, const char *buffer, int len);
Packit ed3af9
	void *context;
Packit ed3af9
}
Packit ed3af9
gdSink, *gdSinkPtr;
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImagePngToSink (gdImagePtr im, gdSinkPtr out);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageGd (gdImagePtr im, FILE * out);
Packit ed3af9
BGD_DECLARE(void) gdImageGd2 (gdImagePtr im, FILE * out, int cs, int fmt);
Packit ed3af9
Packit ed3af9
/* Best to free this memory with gdFree(), not free() */
Packit ed3af9
BGD_DECLARE(void *) gdImageGifPtr (gdImagePtr im, int *size);
Packit ed3af9
Packit ed3af9
/* Best to free this memory with gdFree(), not free() */
Packit ed3af9
BGD_DECLARE(void *) gdImagePngPtr (gdImagePtr im, int *size);
Packit ed3af9
BGD_DECLARE(void *) gdImagePngPtrEx (gdImagePtr im, int *size, int level);
Packit ed3af9
Packit ed3af9
/* Best to free this memory with gdFree(), not free() */
Packit ed3af9
BGD_DECLARE(void *) gdImageGdPtr (gdImagePtr im, int *size);
Packit ed3af9
Packit ed3af9
/* Best to free this memory with gdFree(), not free() */
Packit ed3af9
BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size);
Packit ed3af9
Packit ed3af9
/* Style is a bitwise OR ( | operator ) of these.
Packit ed3af9
   gdArc and gdChord are mutually exclusive;
Packit ed3af9
   gdChord just connects the starting and ending
Packit ed3af9
   angles with a straight line, while gdArc produces
Packit ed3af9
   a rounded edge. gdPie is a synonym for gdArc.
Packit ed3af9
   gdNoFill indicates that the arc or chord should be
Packit ed3af9
   outlined, not filled. gdEdged, used together with
Packit ed3af9
   gdNoFill, indicates that the beginning and ending
Packit ed3af9
   angles should be connected to the center; this is
Packit ed3af9
   a good way to outline (rather than fill) a
Packit ed3af9
   'pie slice'. */
Packit ed3af9
#define gdArc   0
Packit ed3af9
#define gdPie   gdArc
Packit ed3af9
#define gdChord 1
Packit ed3af9
#define gdNoFill 2
Packit ed3af9
#define gdEdged 4
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h, int s,
Packit ed3af9
                                    int e, int color, int style);
Packit ed3af9
BGD_DECLARE(void) gdImageArc (gdImagePtr im, int cx, int cy, int w, int h, int s, int e,
Packit ed3af9
                              int color);
Packit ed3af9
BGD_DECLARE(void) gdImageEllipse(gdImagePtr im, int cx, int cy, int w, int h, int color);
Packit ed3af9
BGD_DECLARE(void) gdImageFilledEllipse (gdImagePtr im, int cx, int cy, int w, int h,
Packit ed3af9
                                        int color);
Packit ed3af9
BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border,
Packit ed3af9
                                       int color);
Packit ed3af9
BGD_DECLARE(void) gdImageFill (gdImagePtr im, int x, int y, int color);
Packit ed3af9
BGD_DECLARE(void) gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
Packit ed3af9
                               int srcX, int srcY, int w, int h);
Packit ed3af9
BGD_DECLARE(void) gdImageCopyMerge (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
Packit ed3af9
                                    int srcX, int srcY, int w, int h, int pct);
Packit ed3af9
BGD_DECLARE(void) gdImageCopyMergeGray (gdImagePtr dst, gdImagePtr src, int dstX,
Packit ed3af9
                                        int dstY, int srcX, int srcY, int w, int h,
Packit ed3af9
                                        int pct);
Packit ed3af9
Packit ed3af9
/* Stretches or shrinks to fit, as needed. Does NOT attempt
Packit ed3af9
   to average the entire set of source pixels that scale down onto the
Packit ed3af9
   destination pixel. */
Packit ed3af9
BGD_DECLARE(void) gdImageCopyResized (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
Packit ed3af9
                                      int srcX, int srcY, int dstW, int dstH, int srcW,
Packit ed3af9
                                      int srcH);
Packit ed3af9
Packit ed3af9
/* gd 2.0: stretches or shrinks to fit, as needed. When called with a
Packit ed3af9
   truecolor destination image, this function averages the
Packit ed3af9
   entire set of source pixels that scale down onto the
Packit ed3af9
   destination pixel, taking into account what portion of the
Packit ed3af9
   destination pixel each source pixel represents. This is a
Packit ed3af9
   floating point operation, but this is not a performance issue
Packit ed3af9
   on modern hardware, except for some embedded devices. If the
Packit ed3af9
   destination is a palette image, gdImageCopyResized is
Packit ed3af9
   substituted automatically. */
Packit ed3af9
BGD_DECLARE(void) gdImageCopyResampled (gdImagePtr dst, gdImagePtr src, int dstX,
Packit ed3af9
                                        int dstY, int srcX, int srcY, int dstW, int dstH,
Packit ed3af9
                                        int srcW, int srcH);
Packit ed3af9
Packit ed3af9
/* gd 2.0.8: gdImageCopyRotated is added. Source
Packit ed3af9
   is a rectangle, with its upper left corner at
Packit ed3af9
   srcX and srcY. Destination is the *center* of
Packit ed3af9
   the rotated copy. Angle is in degrees, same as
Packit ed3af9
   gdImageArc. Floating point destination center
Packit ed3af9
   coordinates allow accurate rotation of
Packit ed3af9
   objects of odd-numbered width or height. */
Packit ed3af9
BGD_DECLARE(void) gdImageCopyRotated (gdImagePtr dst,
Packit ed3af9
                                      gdImagePtr src,
Packit ed3af9
                                      double dstX, double dstY,
Packit ed3af9
                                      int srcX, int srcY,
Packit ed3af9
                                      int srcWidth, int srcHeight, int angle);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageClone (gdImagePtr src);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageSetBrush (gdImagePtr im, gdImagePtr brush);
Packit ed3af9
BGD_DECLARE(void) gdImageSetTile (gdImagePtr im, gdImagePtr tile);
Packit ed3af9
BGD_DECLARE(void) gdImageSetAntiAliased (gdImagePtr im, int c);
Packit ed3af9
BGD_DECLARE(void) gdImageSetAntiAliasedDontBlend (gdImagePtr im, int c, int dont_blend);
Packit ed3af9
BGD_DECLARE(void) gdImageSetStyle (gdImagePtr im, int *style, int noOfPixels);
Packit ed3af9
/* Line thickness (defaults to 1). Affects lines, ellipses,
Packit ed3af9
   rectangles, polygons and so forth. */
Packit ed3af9
BGD_DECLARE(void) gdImageSetThickness (gdImagePtr im, int thickness);
Packit ed3af9
/* On or off (1 or 0) for all three of these. */
Packit ed3af9
BGD_DECLARE(void) gdImageInterlace (gdImagePtr im, int interlaceArg);
Packit ed3af9
BGD_DECLARE(void) gdImageAlphaBlending (gdImagePtr im, int alphaBlendingArg);
Packit ed3af9
BGD_DECLARE(void) gdImageSaveAlpha (gdImagePtr im, int saveAlphaArg);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageNeuQuant(gdImagePtr im, const int max_color, int sample_factor);
Packit ed3af9
Packit ed3af9
enum gdPixelateMode {
Packit ed3af9
	GD_PIXELATE_UPPERLEFT,
Packit ed3af9
	GD_PIXELATE_AVERAGE
Packit ed3af9
};
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdImagePixelate(gdImagePtr im, int block_size, const unsigned int mode);
Packit ed3af9
Packit ed3af9
typedef struct {
Packit ed3af9
	int sub;
Packit ed3af9
	int plus;
Packit ed3af9
	unsigned int num_colors;
Packit ed3af9
	int *colors;
Packit ed3af9
	unsigned int seed;
Packit ed3af9
} gdScatter, *gdScatterPtr;
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdImageScatter(gdImagePtr im, int sub, int plus);
Packit ed3af9
BGD_DECLARE(int) gdImageScatterColor(gdImagePtr im, int sub, int plus, int colors[], unsigned int num_colors);
Packit ed3af9
BGD_DECLARE(int) gdImageScatterEx(gdImagePtr im, gdScatterPtr s);
Packit ed3af9
BGD_DECLARE(int) gdImageSmooth(gdImagePtr im, float weight);
Packit ed3af9
BGD_DECLARE(int) gdImageMeanRemoval(gdImagePtr im);
Packit ed3af9
BGD_DECLARE(int) gdImageEmboss(gdImagePtr im);
Packit ed3af9
BGD_DECLARE(int) gdImageGaussianBlur(gdImagePtr im);
Packit ed3af9
BGD_DECLARE(int) gdImageEdgeDetectQuick(gdImagePtr src);
Packit ed3af9
BGD_DECLARE(int) gdImageSelectiveBlur( gdImagePtr src);
Packit ed3af9
BGD_DECLARE(int) gdImageConvolution(gdImagePtr src, float filter[3][3], float filter_div, float offset);
Packit ed3af9
BGD_DECLARE(int) gdImageColor(gdImagePtr src, const int red, const int green, const int blue, const int alpha);
Packit ed3af9
BGD_DECLARE(int) gdImageContrast(gdImagePtr src, double contrast);
Packit ed3af9
BGD_DECLARE(int) gdImageBrightness(gdImagePtr src, int brightness);
Packit ed3af9
BGD_DECLARE(int) gdImageGrayScale(gdImagePtr src);
Packit ed3af9
BGD_DECLARE(int) gdImageNegate(gdImagePtr src);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCopyGaussianBlurred(gdImagePtr src, int radius,
Packit ed3af9
                                                   double sigma);
Packit ed3af9
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: Accessor Macros
Packit ed3af9
 */
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageTrueColor
Packit ed3af9
 *
Packit ed3af9
 * Whether an image is a truecolor image.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *
Packit ed3af9
 * Returns:
Packit ed3af9
 *   Non-zero if the image is a truecolor image, zero for palette images.
Packit ed3af9
 */
Packit ed3af9
#define gdImageTrueColor(im) ((im)->trueColor)
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageSX
Packit ed3af9
 *
Packit ed3af9
 * Gets the width (in pixels) of an image.
Packit ed3af9
 * 
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 */
Packit ed3af9
#define gdImageSX(im) ((im)->sx)
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageSY
Packit ed3af9
 *
Packit ed3af9
 * Gets the height (in pixels) of an image.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 */
Packit ed3af9
#define gdImageSY(im) ((im)->sy)
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageColorsTotal
Packit ed3af9
 *
Packit ed3af9
 * Gets the number of colors in the palette.
Packit ed3af9
 *
Packit ed3af9
 * This macro is only valid for palette images.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image
Packit ed3af9
 */
Packit ed3af9
#define gdImageColorsTotal(im) ((im)->colorsTotal)
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageRed
Packit ed3af9
 *
Packit ed3af9
 * Gets the red component value of a given color.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *   c  - The color.
Packit ed3af9
 */
Packit ed3af9
#define gdImageRed(im, c) ((im)->trueColor ? gdTrueColorGetRed(c) : \
Packit ed3af9
			   (im)->red[(c)])
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageGreen
Packit ed3af9
 *
Packit ed3af9
 * Gets the green component value of a given color.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *   c  - The color.
Packit ed3af9
 */
Packit ed3af9
#define gdImageGreen(im, c) ((im)->trueColor ? gdTrueColorGetGreen(c) : \
Packit ed3af9
			     (im)->green[(c)])
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageBlue
Packit ed3af9
 *
Packit ed3af9
 * Gets the blue component value of a given color.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *   c  - The color.
Packit ed3af9
 */
Packit ed3af9
#define gdImageBlue(im, c) ((im)->trueColor ? gdTrueColorGetBlue(c) : \
Packit ed3af9
			    (im)->blue[(c)])
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageAlpha
Packit ed3af9
 *
Packit ed3af9
 * Gets the alpha component value of a given color.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *   c  - The color.
Packit ed3af9
 */
Packit ed3af9
#define gdImageAlpha(im, c) ((im)->trueColor ? gdTrueColorGetAlpha(c) : \
Packit ed3af9
			     (im)->alpha[(c)])
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageGetTransparent
Packit ed3af9
 *
Packit ed3af9
 * Gets the transparent color of the image.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageColorTransparent>
Packit ed3af9
 */
Packit ed3af9
#define gdImageGetTransparent(im) ((im)->transparent)
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageGetInterlaced
Packit ed3af9
 *
Packit ed3af9
 * Whether an image is interlaced.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *
Packit ed3af9
 * Returns:
Packit ed3af9
 *   Non-zero for interlaced images, zero otherwise.
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageInterlace>
Packit ed3af9
 */
Packit ed3af9
#define gdImageGetInterlaced(im) ((im)->interlace)
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImagePalettePixel
Packit ed3af9
 *
Packit ed3af9
 * Gets the color of a pixel.
Packit ed3af9
 *
Packit ed3af9
 * Calling this macro is only valid for palette images.
Packit ed3af9
 * No bounds checking is done for the coordinates.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *   x  - The x-coordinate.
Packit ed3af9
 *   y  - The y-coordinate.
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageTrueColorPixel>
Packit ed3af9
 *   - <gdImageGetPixel>
Packit ed3af9
 */
Packit ed3af9
#define gdImagePalettePixel(im, x, y) (im)->pixels[(y)][(x)]
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageTrueColorPixel
Packit ed3af9
 *
Packit ed3af9
 * Gets the color of a pixel.
Packit ed3af9
 *
Packit ed3af9
 * Calling this macro is only valid for truecolor images.
Packit ed3af9
 * No bounds checking is done for the coordinates.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *   x  - The x-coordinate.
Packit ed3af9
 *   y  - The y-coordinate.
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImagePalettePixel>
Packit ed3af9
 *   - <gdImageGetTrueColorPixel>
Packit ed3af9
 */
Packit ed3af9
#define gdImageTrueColorPixel(im, x, y) (im)->tpixels[(y)][(x)]
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageResolutionX
Packit ed3af9
 *
Packit ed3af9
 * Gets the horizontal resolution in DPI.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageResolutionY>
Packit ed3af9
 *   - <gdImageSetResolution>
Packit ed3af9
 */
Packit ed3af9
#define gdImageResolutionX(im) (im)->res_x
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Macro: gdImageResolutionY
Packit ed3af9
 *
Packit ed3af9
 * Gets the vertical resolution in DPI.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageResolutionX>
Packit ed3af9
 *   - <gdImageSetResolution>
Packit ed3af9
 */
Packit ed3af9
#define gdImageResolutionY(im) (im)->res_y
Packit ed3af9
Packit ed3af9
/* I/O Support routines. */
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdIOCtx *) gdNewFileCtx (FILE *);
Packit ed3af9
/* If data is null, size is ignored and an initial data buffer is
Packit ed3af9
   allocated automatically. NOTE: this function assumes gd has the right
Packit ed3af9
   to free or reallocate "data" at will! Also note that gd will free
Packit ed3af9
   "data" when the IO context is freed. If data is not null, it must point
Packit ed3af9
   to memory allocated with gdMalloc, or by a call to gdImage[something]Ptr.
Packit ed3af9
   If not, see gdNewDynamicCtxEx for an alternative. */
Packit ed3af9
BGD_DECLARE(gdIOCtx *) gdNewDynamicCtx (int size, void *data);
Packit ed3af9
/* 2.0.21: if freeFlag is nonzero, gd will free and/or reallocate "data" as
Packit ed3af9
   needed as described above. If freeFlag is zero, gd will never free
Packit ed3af9
   or reallocate "data", which means that the context should only be used
Packit ed3af9
   for *reading* an image from a memory buffer, or writing an image to a
Packit ed3af9
   memory buffer which is already large enough. If the memory buffer is
Packit ed3af9
   not large enough and an image write is attempted, the write operation
Packit ed3af9
   will fail. Those wishing to write an image to a buffer in memory have
Packit ed3af9
   a much simpler alternative in the gdImage[something]Ptr functions. */
Packit ed3af9
BGD_DECLARE(gdIOCtx *) gdNewDynamicCtxEx (int size, void *data, int freeFlag);
Packit ed3af9
BGD_DECLARE(gdIOCtx *) gdNewSSCtx (gdSourcePtr in, gdSinkPtr out);
Packit ed3af9
BGD_DECLARE(void *) gdDPExtractData (struct gdIOCtx *ctx, int *size);
Packit ed3af9
Packit ed3af9
#define GD2_CHUNKSIZE           128
Packit ed3af9
#define GD2_CHUNKSIZE_MIN	64
Packit ed3af9
#define GD2_CHUNKSIZE_MAX       4096
Packit ed3af9
Packit ed3af9
#define GD2_VERS                2
Packit ed3af9
#define GD2_ID                  "gd2"
Packit ed3af9
Packit ed3af9
#define GD2_FMT_RAW             1
Packit ed3af9
#define GD2_FMT_COMPRESSED      2
Packit ed3af9
Packit ed3af9
/* Image comparison definitions */
Packit ed3af9
BGD_DECLARE(int) gdImageCompare (gdImagePtr im1, gdImagePtr im2);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(void) gdImageFlipHorizontal(gdImagePtr im);
Packit ed3af9
BGD_DECLARE(void) gdImageFlipVertical(gdImagePtr im);
Packit ed3af9
BGD_DECLARE(void) gdImageFlipBoth(gdImagePtr im);
Packit ed3af9
Packit ed3af9
#define GD_FLIP_HORINZONTAL 1
Packit ed3af9
#define GD_FLIP_VERTICAL 2
Packit ed3af9
#define GD_FLIP_BOTH 3
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: Crop
Packit ed3af9
 *
Packit ed3af9
 * Constants: gdCropMode
Packit ed3af9
 *  GD_CROP_DEFAULT - Default crop mode (4 corners or background)
Packit ed3af9
 *  GD_CROP_TRANSPARENT - Crop using the transparent color
Packit ed3af9
 *  GD_CROP_BLACK - Crop black borders
Packit ed3af9
 *  GD_CROP_WHITE - Crop white borders
Packit ed3af9
 *  GD_CROP_SIDES - Crop using colors of the 4 corners
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageCropAuto>
Packit ed3af9
 **/
Packit ed3af9
enum gdCropMode {
Packit ed3af9
	GD_CROP_DEFAULT = 0,
Packit ed3af9
	GD_CROP_TRANSPARENT,
Packit ed3af9
	GD_CROP_BLACK,
Packit ed3af9
	GD_CROP_WHITE,
Packit ed3af9
	GD_CROP_SIDES,
Packit ed3af9
	GD_CROP_THRESHOLD
Packit ed3af9
};
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCrop(gdImagePtr src, const gdRect *crop);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCropAuto(gdImagePtr im, const unsigned int mode);
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageCropThreshold(gdImagePtr im, const unsigned int color, const float threshold);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdImageSetInterpolationMethod(gdImagePtr im, gdInterpolationMethod id);
Packit ed3af9
BGD_DECLARE(gdInterpolationMethod) gdImageGetInterpolationMethod(gdImagePtr im);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageScale(const gdImagePtr src, const unsigned int new_width, const unsigned int new_height);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(gdImagePtr) gdImageRotateInterpolated(const gdImagePtr src, const float angle, int bgcolor);
Packit ed3af9
Packit ed3af9
typedef enum {
Packit ed3af9
	GD_AFFINE_TRANSLATE = 0,
Packit ed3af9
	GD_AFFINE_SCALE,
Packit ed3af9
	GD_AFFINE_ROTATE,
Packit ed3af9
	GD_AFFINE_SHEAR_HORIZONTAL,
Packit ed3af9
	GD_AFFINE_SHEAR_VERTICAL
Packit ed3af9
} gdAffineStandardMatrix;
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdAffineApplyToPointF (gdPointFPtr dst, const gdPointFPtr src, const double affine[6]);
Packit ed3af9
BGD_DECLARE(int) gdAffineInvert (double dst[6], const double src[6]);
Packit ed3af9
BGD_DECLARE(int) gdAffineFlip (double dst_affine[6], const double src_affine[6], const int flip_h, const int flip_v);
Packit ed3af9
BGD_DECLARE(int) gdAffineConcat (double dst[6], const double m1[6], const double m2[6]);
Packit ed3af9
Packit ed3af9
BGD_DECLARE(int) gdAffineIdentity (double dst[6]);
Packit ed3af9
BGD_DECLARE(int) gdAffineScale (double dst[6], const double scale_x, const double scale_y);
Packit ed3af9
BGD_DECLARE(int) gdAffineRotate (double dst[6], const double angle);
Packit ed3af9
BGD_DECLARE(int) gdAffineShearHorizontal (double dst[6], const double angle);
Packit ed3af9
BGD_DECLARE(int) gdAffineShearVertical(double dst[6], const double angle);
Packit ed3af9
BGD_DECLARE(int) gdAffineTranslate (double dst[6], const double offset_x, const double offset_y);
Packit ed3af9
BGD_DECLARE(double) gdAffineExpansion (const double src[6]);
Packit ed3af9
BGD_DECLARE(int) gdAffineRectilinear (const double src[6]);
Packit ed3af9
BGD_DECLARE(int) gdAffineEqual (const double matrix1[6], const double matrix2[6]);
Packit ed3af9
BGD_DECLARE(int) gdTransformAffineGetImage(gdImagePtr *dst, const gdImagePtr src, gdRectPtr src_area, const double affine[6]);
Packit ed3af9
BGD_DECLARE(int) gdTransformAffineCopy(gdImagePtr dst, int dst_x, int dst_y, const gdImagePtr src, gdRectPtr src_region, const double affine[6]);
Packit ed3af9
/*
Packit ed3af9
gdTransformAffineCopy(gdImagePtr dst, int x0, int y0, int x1, int y1,
Packit ed3af9
		      const gdImagePtr src, int src_width, int src_height,
Packit ed3af9
		      const double affine[6]);
Packit ed3af9
*/
Packit ed3af9
BGD_DECLARE(int) gdTransformAffineBoundingBox(gdRectPtr src, const double affine[6], gdRectPtr bbox);
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Group: Image Comparison
Packit ed3af9
 *
Packit ed3af9
 * Constants:
Packit ed3af9
 *   GD_CMP_IMAGE       - Actual image IS different
Packit ed3af9
 *   GD_CMP_NUM_COLORS  - Number of colors in pallette differ
Packit ed3af9
 *   GD_CMP_COLOR       - Image colors differ
Packit ed3af9
 *   GD_CMP_SIZE_X      - Image width differs
Packit ed3af9
 *   GD_CMP_SIZE_Y      - Image heights differ
Packit ed3af9
 *   GD_CMP_TRANSPARENT - Transparent color differs
Packit ed3af9
 *   GD_CMP_BACKGROUND  - Background color differs
Packit ed3af9
 *   GD_CMP_INTERLACE   - Interlaced setting differs
Packit ed3af9
 *   GD_CMP_TRUECOLOR   - Truecolor vs palette differs
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageCompare>
Packit ed3af9
 */
Packit ed3af9
#define GD_CMP_IMAGE		1
Packit ed3af9
#define GD_CMP_NUM_COLORS	2
Packit ed3af9
#define GD_CMP_COLOR		4
Packit ed3af9
#define GD_CMP_SIZE_X		8
Packit ed3af9
#define GD_CMP_SIZE_Y		16
Packit ed3af9
#define GD_CMP_TRANSPARENT	32
Packit ed3af9
#define GD_CMP_BACKGROUND	64
Packit ed3af9
#define GD_CMP_INTERLACE	128
Packit ed3af9
#define GD_CMP_TRUECOLOR	256
Packit ed3af9
Packit ed3af9
/* resolution affects ttf font rendering, particularly hinting */
Packit ed3af9
#define GD_RESOLUTION           96      /* pixels per inch */
Packit ed3af9
Packit ed3af9
Packit ed3af9
/* Version information functions */
Packit ed3af9
BGD_DECLARE(int) gdMajorVersion(void);
Packit ed3af9
BGD_DECLARE(int) gdMinorVersion(void);
Packit ed3af9
BGD_DECLARE(int) gdReleaseVersion(void);
Packit ed3af9
BGD_DECLARE(const char *) gdExtraVersion(void);
Packit ed3af9
BGD_DECLARE(const char *) gdVersionString(void);
Packit ed3af9
Packit ed3af9
Packit ed3af9
#ifdef __cplusplus
Packit ed3af9
}
Packit ed3af9
#endif
Packit ed3af9
Packit ed3af9
/* newfangled special effects */
Packit ed3af9
#include "gdfx.h"
Packit ed3af9
Packit ed3af9
#endif				/* GD_H */
Packit ed3af9
Packit ed3af9
#ifdef __cplusplus
Packit ed3af9
}
Packit ed3af9
#endif