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