123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693 |
- /*
- * The Python Imaging Library
- * $Id$
- *
- * declarations for the imaging core library
- *
- * Copyright (c) 1997-2005 by Secret Labs AB
- * Copyright (c) 1995-2005 by Fredrik Lundh
- *
- * See the README file for information on usage and redistribution.
- */
- #include "ImPlatform.h"
- #if defined(__cplusplus)
- extern "C" {
- #endif
- #ifndef M_PI
- #define M_PI 3.1415926535897932384626433832795
- #endif
- /* -------------------------------------------------------------------- */
- /*
- * Image data organization:
- *
- * mode bytes byte order
- * -------------------------------
- * 1 1 1
- * L 1 L
- * P 1 P
- * I 4 I (32-bit integer, native byte order)
- * F 4 F (32-bit IEEE float, native byte order)
- * RGB 4 R, G, B, -
- * RGBA 4 R, G, B, A
- * CMYK 4 C, M, Y, K
- * YCbCr 4 Y, Cb, Cr, -
- * Lab 4 L, a, b, -
- *
- * experimental modes (incomplete):
- * LA 4 L, -, -, A
- * PA 4 P, -, -, A
- * I;16 2 I (16-bit integer, native byte order)
- *
- * "P" is an 8-bit palette mode, which should be mapped through the
- * palette member to get an output image. Check palette->mode to
- * find the corresponding "real" mode.
- *
- * For information on how to access Imaging objects from your own C
- * extensions, see http://www.effbot.org/zone/pil-extending.htm
- */
- /* Handles */
- typedef struct ImagingMemoryInstance *Imaging;
- typedef struct ImagingAccessInstance *ImagingAccess;
- typedef struct ImagingHistogramInstance *ImagingHistogram;
- typedef struct ImagingOutlineInstance *ImagingOutline;
- typedef struct ImagingPaletteInstance *ImagingPalette;
- /* handle magics (used with PyCObject). */
- #define IMAGING_MAGIC "PIL Imaging"
- /* pixel types */
- #define IMAGING_TYPE_UINT8 0
- #define IMAGING_TYPE_INT32 1
- #define IMAGING_TYPE_FLOAT32 2
- #define IMAGING_TYPE_SPECIAL 3 /* check mode for details */
- #define IMAGING_MODE_LENGTH \
- 6 + 1 /* Band names ("1", "L", "P", "RGB", "RGBA", "CMYK", "YCbCr", "BGR;xy") */
- typedef struct {
- char *ptr;
- int size;
- } ImagingMemoryBlock;
- struct ImagingMemoryInstance {
- /* Format */
- char mode[IMAGING_MODE_LENGTH]; /* Band names ("1", "L", "P", "RGB", "RGBA", "CMYK",
- "YCbCr", "BGR;xy") */
- int type; /* Data type (IMAGING_TYPE_*) */
- int depth; /* Depth (ignored in this version) */
- int bands; /* Number of bands (1, 2, 3, or 4) */
- int xsize; /* Image dimension. */
- int ysize;
- /* Colour palette (for "P" images only) */
- ImagingPalette palette;
- /* Data pointers */
- UINT8 **image8; /* Set for 8-bit images (pixelsize=1). */
- INT32 **image32; /* Set for 32-bit images (pixelsize=4). */
- /* Internals */
- char **image; /* Actual raster data. */
- char *block; /* Set if data is allocated in a single block. */
- ImagingMemoryBlock *blocks; /* Memory blocks for pixel storage */
- int pixelsize; /* Size of a pixel, in bytes (1, 2 or 4) */
- int linesize; /* Size of a line, in bytes (xsize * pixelsize) */
- /* Virtual methods */
- void (*destroy)(Imaging im);
- };
- #define IMAGING_PIXEL_1(im, x, y) ((im)->image8[(y)][(x)])
- #define IMAGING_PIXEL_L(im, x, y) ((im)->image8[(y)][(x)])
- #define IMAGING_PIXEL_LA(im, x, y) ((im)->image[(y)][(x)*4])
- #define IMAGING_PIXEL_P(im, x, y) ((im)->image8[(y)][(x)])
- #define IMAGING_PIXEL_PA(im, x, y) ((im)->image[(y)][(x)*4])
- #define IMAGING_PIXEL_I(im, x, y) ((im)->image32[(y)][(x)])
- #define IMAGING_PIXEL_F(im, x, y) (((FLOAT32 *)(im)->image32[y])[x])
- #define IMAGING_PIXEL_RGB(im, x, y) ((im)->image[(y)][(x)*4])
- #define IMAGING_PIXEL_RGBA(im, x, y) ((im)->image[(y)][(x)*4])
- #define IMAGING_PIXEL_CMYK(im, x, y) ((im)->image[(y)][(x)*4])
- #define IMAGING_PIXEL_YCbCr(im, x, y) ((im)->image[(y)][(x)*4])
- #define IMAGING_PIXEL_UINT8(im, x, y) ((im)->image8[(y)][(x)])
- #define IMAGING_PIXEL_INT32(im, x, y) ((im)->image32[(y)][(x)])
- #define IMAGING_PIXEL_FLOAT32(im, x, y) (((FLOAT32 *)(im)->image32[y])[x])
- struct ImagingAccessInstance {
- const char *mode;
- void (*get_pixel)(Imaging im, int x, int y, void *pixel);
- void (*put_pixel)(Imaging im, int x, int y, const void *pixel);
- };
- struct ImagingHistogramInstance {
- /* Format */
- char mode[IMAGING_MODE_LENGTH]; /* Band names (of corresponding source image) */
- int bands; /* Number of bands (1, 3, or 4) */
- /* Data */
- long *histogram; /* Histogram (bands*256 longs) */
- };
- struct ImagingPaletteInstance {
- /* Format */
- char mode[IMAGING_MODE_LENGTH]; /* Band names */
- /* Data */
- int size;
- UINT8 palette[1024]; /* Palette data (same format as image data) */
- INT16 *cache; /* Palette cache (used for predefined palettes) */
- int keep_cache; /* This palette will be reused; keep cache */
- };
- typedef struct ImagingMemoryArena {
- int alignment; /* Alignment in memory of each line of an image */
- int block_size; /* Preferred block size, bytes */
- int blocks_max; /* Maximum number of cached blocks */
- int blocks_cached; /* Current number of blocks not associated with images */
- ImagingMemoryBlock *blocks_pool;
- int stats_new_count; /* Number of new allocated images */
- int stats_allocated_blocks; /* Number of allocated blocks */
- int stats_reused_blocks; /* Number of blocks which were retrieved from a pool */
- int stats_reallocated_blocks; /* Number of blocks which were actually reallocated
- after retrieving */
- int stats_freed_blocks; /* Number of freed blocks */
- } * ImagingMemoryArena;
- /* Objects */
- /* ------- */
- extern struct ImagingMemoryArena ImagingDefaultArena;
- extern int
- ImagingMemorySetBlocksMax(ImagingMemoryArena arena, int blocks_max);
- extern void
- ImagingMemoryClearCache(ImagingMemoryArena arena, int new_size);
- extern Imaging
- ImagingNew(const char *mode, int xsize, int ysize);
- extern Imaging
- ImagingNewDirty(const char *mode, int xsize, int ysize);
- extern Imaging
- ImagingNew2Dirty(const char *mode, Imaging imOut, Imaging imIn);
- extern void
- ImagingDelete(Imaging im);
- extern Imaging
- ImagingNewBlock(const char *mode, int xsize, int ysize);
- extern Imaging
- ImagingNewPrologue(const char *mode, int xsize, int ysize);
- extern Imaging
- ImagingNewPrologueSubtype(const char *mode, int xsize, int ysize, int structure_size);
- extern void
- ImagingCopyPalette(Imaging destination, Imaging source);
- extern void
- ImagingHistogramDelete(ImagingHistogram histogram);
- extern void
- ImagingAccessInit(void);
- extern ImagingAccess
- ImagingAccessNew(Imaging im);
- extern void
- _ImagingAccessDelete(Imaging im, ImagingAccess access);
- #define ImagingAccessDelete(im, access) /* nop, for now */
- extern ImagingPalette
- ImagingPaletteNew(const char *mode);
- extern ImagingPalette
- ImagingPaletteNewBrowser(void);
- extern ImagingPalette
- ImagingPaletteDuplicate(ImagingPalette palette);
- extern void
- ImagingPaletteDelete(ImagingPalette palette);
- extern int
- ImagingPaletteCachePrepare(ImagingPalette palette);
- extern void
- ImagingPaletteCacheUpdate(ImagingPalette palette, int r, int g, int b);
- extern void
- ImagingPaletteCacheDelete(ImagingPalette palette);
- #define ImagingPaletteCache(p, r, g, b) \
- p->cache[(r >> 2) + (g >> 2) * 64 + (b >> 2) * 64 * 64]
- extern Imaging
- ImagingQuantize(Imaging im, int colours, int mode, int kmeans);
- /* Threading */
- /* --------- */
- typedef void *ImagingSectionCookie;
- extern void
- ImagingSectionEnter(ImagingSectionCookie *cookie);
- extern void
- ImagingSectionLeave(ImagingSectionCookie *cookie);
- /* Exceptions */
- /* ---------- */
- extern void *
- ImagingError_OSError(void);
- extern void *
- ImagingError_MemoryError(void);
- extern void *
- ImagingError_ModeError(void); /* maps to ValueError by default */
- extern void *
- ImagingError_Mismatch(void); /* maps to ValueError by default */
- extern void *
- ImagingError_ValueError(const char *message);
- extern void
- ImagingError_Clear(void);
- /* Transform callbacks */
- /* ------------------- */
- /* standard transforms */
- #define IMAGING_TRANSFORM_AFFINE 0
- #define IMAGING_TRANSFORM_PERSPECTIVE 2
- #define IMAGING_TRANSFORM_QUAD 3
- /* standard filters */
- #define IMAGING_TRANSFORM_NEAREST 0
- #define IMAGING_TRANSFORM_BOX 4
- #define IMAGING_TRANSFORM_BILINEAR 2
- #define IMAGING_TRANSFORM_HAMMING 5
- #define IMAGING_TRANSFORM_BICUBIC 3
- #define IMAGING_TRANSFORM_LANCZOS 1
- typedef int (*ImagingTransformMap)(double *X, double *Y, int x, int y, void *data);
- typedef int (*ImagingTransformFilter)(void *out, Imaging im, double x, double y);
- /* Image Manipulation Methods */
- /* -------------------------- */
- extern Imaging
- ImagingAlphaComposite(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingBlend(Imaging imIn1, Imaging imIn2, float alpha);
- extern Imaging
- ImagingCopy(Imaging im);
- extern Imaging
- ImagingConvert(Imaging im, const char *mode, ImagingPalette palette, int dither);
- extern Imaging
- ImagingConvertInPlace(Imaging im, const char *mode);
- extern Imaging
- ImagingConvertMatrix(Imaging im, const char *mode, float m[]);
- extern Imaging
- ImagingConvertTransparent(Imaging im, const char *mode, int r, int g, int b);
- extern Imaging
- ImagingCrop(Imaging im, int x0, int y0, int x1, int y1);
- extern Imaging
- ImagingExpand(Imaging im, int x, int y);
- extern Imaging
- ImagingFill(Imaging im, const void *ink);
- extern int
- ImagingFill2(
- Imaging into, const void *ink, Imaging mask, int x0, int y0, int x1, int y1);
- extern Imaging
- ImagingFillBand(Imaging im, int band, int color);
- extern Imaging
- ImagingFillLinearGradient(const char *mode);
- extern Imaging
- ImagingFillRadialGradient(const char *mode);
- extern Imaging
- ImagingFilter(Imaging im, int xsize, int ysize, const FLOAT32 *kernel, FLOAT32 offset);
- extern Imaging
- ImagingFlipLeftRight(Imaging imOut, Imaging imIn);
- extern Imaging
- ImagingFlipTopBottom(Imaging imOut, Imaging imIn);
- extern Imaging
- ImagingGaussianBlur(Imaging imOut, Imaging imIn, float xradius, float yradius, int passes);
- extern Imaging
- ImagingGetBand(Imaging im, int band);
- extern Imaging
- ImagingMerge(const char *mode, Imaging bands[4]);
- extern int
- ImagingSplit(Imaging im, Imaging bands[4]);
- extern int
- ImagingGetBBox(Imaging im, int bbox[4], int alpha_only);
- typedef struct {
- int x, y;
- INT32 count;
- INT32 pixel;
- } ImagingColorItem;
- extern ImagingColorItem *
- ImagingGetColors(Imaging im, int maxcolors, int *colors);
- extern int
- ImagingGetExtrema(Imaging im, void *extrema);
- extern int
- ImagingGetProjection(Imaging im, UINT8 *xproj, UINT8 *yproj);
- extern ImagingHistogram
- ImagingGetHistogram(Imaging im, Imaging mask, void *extrema);
- extern Imaging
- ImagingModeFilter(Imaging im, int size);
- extern Imaging
- ImagingNegative(Imaging im);
- extern Imaging
- ImagingOffset(Imaging im, int xoffset, int yoffset);
- extern int
- ImagingPaste(Imaging into, Imaging im, Imaging mask, int x0, int y0, int x1, int y1);
- extern Imaging
- ImagingPoint(Imaging im, const char *tablemode, const void *table);
- extern Imaging
- ImagingPointTransform(Imaging imIn, double scale, double offset);
- extern Imaging
- ImagingPutBand(Imaging im, Imaging imIn, int band);
- extern Imaging
- ImagingRankFilter(Imaging im, int size, int rank);
- extern Imaging
- ImagingRotate90(Imaging imOut, Imaging imIn);
- extern Imaging
- ImagingRotate180(Imaging imOut, Imaging imIn);
- extern Imaging
- ImagingRotate270(Imaging imOut, Imaging imIn);
- extern Imaging
- ImagingTranspose(Imaging imOut, Imaging imIn);
- extern Imaging
- ImagingTransverse(Imaging imOut, Imaging imIn);
- extern Imaging
- ImagingResample(Imaging imIn, int xsize, int ysize, int filter, float box[4]);
- extern Imaging
- ImagingReduce(Imaging imIn, int xscale, int yscale, int box[4]);
- extern Imaging
- ImagingTransform(
- Imaging imOut,
- Imaging imIn,
- int method,
- int x0,
- int y0,
- int x1,
- int y1,
- double a[8],
- int filter,
- int fill);
- extern Imaging
- ImagingUnsharpMask(Imaging imOut, Imaging im, float radius, int percent, int threshold);
- extern Imaging
- ImagingBoxBlur(Imaging imOut, Imaging imIn, float xradius, float yradius, int n);
- extern Imaging
- ImagingColorLUT3D_linear(
- Imaging imOut,
- Imaging imIn,
- int table_channels,
- int size1D,
- int size2D,
- int size3D,
- INT16 *table);
- extern Imaging
- ImagingCopy2(Imaging imOut, Imaging imIn);
- extern Imaging
- ImagingConvert2(Imaging imOut, Imaging imIn);
- /* Channel operations */
- /* any mode, except "F" */
- extern Imaging
- ImagingChopLighter(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingChopDarker(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingChopDifference(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingChopMultiply(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingChopScreen(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingChopAdd(Imaging imIn1, Imaging imIn2, float scale, int offset);
- extern Imaging
- ImagingChopSubtract(Imaging imIn1, Imaging imIn2, float scale, int offset);
- extern Imaging
- ImagingChopAddModulo(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingChopSubtractModulo(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingChopSoftLight(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingChopHardLight(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingOverlay(Imaging imIn1, Imaging imIn2);
- /* "1" images only */
- extern Imaging
- ImagingChopAnd(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingChopOr(Imaging imIn1, Imaging imIn2);
- extern Imaging
- ImagingChopXor(Imaging imIn1, Imaging imIn2);
- /* Graphics */
- extern int
- ImagingDrawArc(
- Imaging im,
- int x0,
- int y0,
- int x1,
- int y1,
- float start,
- float end,
- const void *ink,
- int width,
- int op);
- extern int
- ImagingDrawBitmap(Imaging im, int x0, int y0, Imaging bitmap, const void *ink, int op);
- extern int
- ImagingDrawChord(
- Imaging im,
- int x0,
- int y0,
- int x1,
- int y1,
- float start,
- float end,
- const void *ink,
- int fill,
- int width,
- int op);
- extern int
- ImagingDrawEllipse(
- Imaging im,
- int x0,
- int y0,
- int x1,
- int y1,
- const void *ink,
- int fill,
- int width,
- int op);
- extern int
- ImagingDrawLine(Imaging im, int x0, int y0, int x1, int y1, const void *ink, int op);
- extern int
- ImagingDrawWideLine(
- Imaging im, int x0, int y0, int x1, int y1, const void *ink, int width, int op);
- extern int
- ImagingDrawPieslice(
- Imaging im,
- int x0,
- int y0,
- int x1,
- int y1,
- float start,
- float end,
- const void *ink,
- int fill,
- int width,
- int op);
- extern int
- ImagingDrawPoint(Imaging im, int x, int y, const void *ink, int op);
- extern int
- ImagingDrawPolygon(Imaging im, int points, int *xy, const void *ink, int fill, int width, int op);
- extern int
- ImagingDrawRectangle(
- Imaging im,
- int x0,
- int y0,
- int x1,
- int y1,
- const void *ink,
- int fill,
- int width,
- int op);
- /* Level 2 graphics (WORK IN PROGRESS) */
- extern ImagingOutline
- ImagingOutlineNew(void);
- extern void
- ImagingOutlineDelete(ImagingOutline outline);
- extern int
- ImagingDrawOutline(
- Imaging im, ImagingOutline outline, const void *ink, int fill, int op);
- extern int
- ImagingOutlineMove(ImagingOutline outline, float x, float y);
- extern int
- ImagingOutlineLine(ImagingOutline outline, float x, float y);
- extern int
- ImagingOutlineCurve(
- ImagingOutline outline, float x1, float y1, float x2, float y2, float x3, float y3);
- extern int
- ImagingOutlineTransform(ImagingOutline outline, double a[6]);
- extern int
- ImagingOutlineClose(ImagingOutline outline);
- /* Special effects */
- extern Imaging
- ImagingEffectSpread(Imaging imIn, int distance);
- extern Imaging
- ImagingEffectNoise(int xsize, int ysize, float sigma);
- extern Imaging
- ImagingEffectMandelbrot(int xsize, int ysize, double extent[4], int quality);
- /* File I/O */
- /* -------- */
- /* Built-in drivers */
- extern Imaging
- ImagingOpenPPM(const char *filename);
- extern int
- ImagingSavePPM(Imaging im, const char *filename);
- /* Codecs */
- typedef struct ImagingCodecStateInstance *ImagingCodecState;
- typedef int (*ImagingCodec)(
- Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- extern int
- ImagingBcnDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingBitDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingEpsEncode(Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- extern int
- ImagingFliDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingGifDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingGifEncode(Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- extern int
- ImagingHexDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- #ifdef HAVE_LIBJPEG
- extern int
- ImagingJpegDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingJpegDecodeCleanup(ImagingCodecState state);
- extern int
- ImagingJpegUseJCSExtensions(void);
- extern int
- ImagingJpegEncode(Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- #endif
- #ifdef HAVE_OPENJPEG
- extern int
- ImagingJpeg2KDecode(
- Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingJpeg2KDecodeCleanup(ImagingCodecState state);
- extern int
- ImagingJpeg2KEncode(Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- extern int
- ImagingJpeg2KEncodeCleanup(ImagingCodecState state);
- #endif
- #ifdef HAVE_LIBTIFF
- extern int
- ImagingLibTiffDecode(
- Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingLibTiffEncode(Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- #endif
- #ifdef HAVE_LIBMPEG
- extern int
- ImagingMpegDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- #endif
- extern int
- ImagingMspDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingPackbitsDecode(
- Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingPcdDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingPcxDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingPcxEncode(Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- extern int
- ImagingRawDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingRawEncode(Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- extern int
- ImagingSgiRleDecode(
- Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingSunRleDecode(
- Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingTgaRleDecode(
- Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingTgaRleEncode(Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- extern int
- ImagingXbmDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingXbmEncode(Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- #ifdef HAVE_LIBZ
- extern int
- ImagingZipDecode(Imaging im, ImagingCodecState state, UINT8 *buffer, Py_ssize_t bytes);
- extern int
- ImagingZipDecodeCleanup(ImagingCodecState state);
- extern int
- ImagingZipEncode(Imaging im, ImagingCodecState state, UINT8 *buffer, int bytes);
- extern int
- ImagingZipEncodeCleanup(ImagingCodecState state);
- #endif
- typedef void (*ImagingShuffler)(UINT8 *out, const UINT8 *in, int pixels);
- /* Public shufflers */
- extern void
- ImagingPackBGR(UINT8 *out, const UINT8 *in, int pixels);
- extern void
- ImagingUnpackYCC(UINT8 *out, const UINT8 *in, int pixels);
- extern void
- ImagingUnpackYCCA(UINT8 *out, const UINT8 *in, int pixels);
- extern void
- ImagingConvertRGB2YCbCr(UINT8 *out, const UINT8 *in, int pixels);
- extern void
- ImagingConvertYCbCr2RGB(UINT8 *out, const UINT8 *in, int pixels);
- extern ImagingShuffler
- ImagingFindUnpacker(const char *mode, const char *rawmode, int *bits_out);
- extern ImagingShuffler
- ImagingFindPacker(const char *mode, const char *rawmode, int *bits_out);
- struct ImagingCodecStateInstance {
- int count;
- int state;
- int errcode;
- int x, y;
- int ystep;
- int xsize, ysize, xoff, yoff;
- ImagingShuffler shuffle;
- int bits, bytes;
- UINT8 *buffer;
- void *context;
- PyObject *fd;
- };
- /* Codec read/write python fd */
- extern Py_ssize_t
- _imaging_read_pyFd(PyObject *fd, char *dest, Py_ssize_t bytes);
- extern Py_ssize_t
- _imaging_write_pyFd(PyObject *fd, char *src, Py_ssize_t bytes);
- extern int
- _imaging_seek_pyFd(PyObject *fd, Py_ssize_t offset, int whence);
- extern Py_ssize_t
- _imaging_tell_pyFd(PyObject *fd);
- /* Errcodes */
- #define IMAGING_CODEC_END 1
- #define IMAGING_CODEC_OVERRUN -1
- #define IMAGING_CODEC_BROKEN -2
- #define IMAGING_CODEC_UNKNOWN -3
- #define IMAGING_CODEC_CONFIG -8
- #define IMAGING_CODEC_MEMORY -9
- #include "ImagingUtils.h"
- extern UINT8 *clip8_lookups;
- #if defined(__cplusplus)
- }
- #endif
|