Blame src/gd.h

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