546 lines
15 KiB
C
546 lines
15 KiB
C
/*
|
|
* CDE - Common Desktop Environment
|
|
*
|
|
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
|
|
*
|
|
* These libraries and programs are free software; you can
|
|
* redistribute them and/or modify them under the terms of the GNU
|
|
* Lesser General Public License as published by the Free Software
|
|
* Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
* These libraries and programs are distributed in the hope that
|
|
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
* PURPOSE. See the GNU Lesser General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with these librararies and programs; if not, write
|
|
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
* Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
/* $XConsortium: il.h /main/6 1996/09/24 17:12:23 drk $ */
|
|
/**---------------------------------------------------------------------
|
|
***
|
|
*** file: il.h
|
|
***
|
|
*** description: Main public include file for Image Library (IL).
|
|
***
|
|
***
|
|
*** (c)Copyright 1991 Hewlett-Packard Co.
|
|
***
|
|
*** RESTRICTED RIGHTS LEGEND
|
|
*** Use, duplication, or disclosure by the U.S. Government is subject to
|
|
*** restrictions as set forth in sub-paragraph (c)(1)(ii) of the Rights in
|
|
*** Technical Data and Computer Software clause in DFARS 252.227-7013.
|
|
*** Hewlett-Packard Company
|
|
*** 3000 Hanover Street
|
|
*** Palo Alto, CA 94304 U.S.A.
|
|
*** Rights for non-DOD U.S. Government Departments and Agencies are as set
|
|
*** forth in FAR 52.227-19(c)(1,2).
|
|
***
|
|
***-------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
#ifndef IL_H
|
|
#define IL_H
|
|
|
|
#include <X11/Xos.h>
|
|
#include <X11/Xfuncs.h>
|
|
|
|
/* include Xmd.h for CARD32 and INT32 definitions */
|
|
#include <X11/Xmd.h>
|
|
|
|
#ifndef NeedFunctionPrototypes
|
|
#if defined(FUNCPROTO) || defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
|
|
#define NeedFunctionPrototypes 1
|
|
#else
|
|
#define NeedFunctionPrototypes 0
|
|
#endif /* __STDC__ */
|
|
#endif /* NeedFunctionPrototypes */
|
|
|
|
#ifndef NeedWidePrototypes
|
|
#if defined(NARROWPROTO)
|
|
#define NeedWidePrototypes 0
|
|
#else
|
|
#define NeedWidePrototypes 1 /* default to make interropt. easier */
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus /* do not leave open across includes */
|
|
extern "C" { /* for C++ V2.0 */
|
|
#endif
|
|
|
|
|
|
/* Values for ilImageDes. */
|
|
|
|
/* ilImageDes.nSamplesPerPixel max */
|
|
#define IL_MAX_SAMPLES 5
|
|
|
|
/* ilImageDes.type */
|
|
#define IL_BITONAL 0
|
|
#define IL_GRAY 1
|
|
#define IL_PALETTE 2
|
|
#define IL_RGB 3
|
|
#define IL_YCBCR 4
|
|
|
|
/* ilImageDes.compression */
|
|
#define IL_UNCOMPRESSED 0
|
|
#define IL_G3 1
|
|
#define IL_JPEG 2
|
|
#define IL_G4 3
|
|
#define IL_LZW 4
|
|
#define IL_PACKBITS 5
|
|
|
|
/* ilImageDes.compInfo.g3.flags masks. Use IL_G3M_TIFF for
|
|
TIFF-compatible (comp 2); IL_G3M_CLASS_F for Class F (comp code 3).
|
|
*/
|
|
#define IL_G3M_LSB_FIRST (1<<0)
|
|
#define IL_G3M_2D (1<<1)
|
|
#define IL_G3M_UNCOMPRESSED (1<<2)
|
|
#define IL_G3M_EOL_MARKERS (1<<3)
|
|
#define IL_G3M_EOL_UNALIGNED (1<<4)
|
|
#define IL_G3M_K_FACTOR_2 (1<<5)
|
|
|
|
#define IL_G3M_TIFF 0
|
|
#define IL_G3M_CLASS_F (IL_G3M_LSB_FIRST | IL_G3M_EOL_MARKERS)
|
|
|
|
/* ilImageDes.compInfo.g4.flags masks. */
|
|
#define IL_G4M_LSB_FIRST (1<<0)
|
|
#define IL_G4M_UNCOMPRESSED (1<<2)
|
|
|
|
/* ilObject->objectType */
|
|
#define IL_NULL_OBJECT 0
|
|
#define IL_PIPE 1
|
|
#define IL_FILE 2
|
|
#define IL_INTERNAL_IMAGE 3
|
|
#define IL_CLIENT_IMAGE 4
|
|
#define IL_XWC 5
|
|
#define IL_EFS_FILE_TYPE 6
|
|
#define IL_EFS_FILE 7
|
|
|
|
/* ilImageFormat->byteOrder */
|
|
#define IL_MSB_FIRST 0
|
|
#define IL_LSB_FIRST 1
|
|
|
|
/* ilImageFormat->sampleOrder */
|
|
#define IL_SAMPLE_PIXELS 0
|
|
#define IL_SAMPLE_PLANES 1
|
|
|
|
/* ilExecutePipe() return values */
|
|
#define IL_EXECUTE_AGAIN 0
|
|
#define IL_EXECUTE_COMPLETE 1
|
|
#define IL_EXECUTE_ERROR 2
|
|
|
|
/* ilQueryPipe() return values */
|
|
#define IL_PIPE_INVALID 0
|
|
#define IL_PIPE_EMPTY 1
|
|
#define IL_PIPE_FORMING 2
|
|
#define IL_PIPE_COMPLETE 3
|
|
#define IL_PIPE_EXECUTING 4
|
|
|
|
/* Value meaning "no error" for ilError: other errors in ilerrors.h */
|
|
#define IL_OK 0
|
|
|
|
/* option to ilConvert() */
|
|
#define IL_CONVERT_NO_OPTION 0
|
|
#define IL_CONVERT_THRESHOLD 1
|
|
#define IL_THRESHOLD_TO_BITONAL IL_CONVERT_THRESHOLD
|
|
#define IL_CONVERT_TO_PALETTE 2
|
|
#define IL_CONVERT_SOFT_INVERT 3
|
|
|
|
/* values for ilConvertToPaletteInfo.method */
|
|
#define IL_AREA_DITHER 0
|
|
#define IL_DIFFUSION 1
|
|
#define IL_QUICK_DIFFUSION 2
|
|
#define IL_CHOOSE_COLORS 3
|
|
|
|
/* Option1 to ilScale() */
|
|
#define IL_SCALE_SIMPLE 0
|
|
#define IL_SCALE_SAMPLE 1
|
|
#define IL_SCALE_BITONAL_TO_GRAY 2
|
|
|
|
/* Options to ilMirror() */
|
|
#define IL_MIRRORX 0
|
|
#define IL_MIRRORY 1
|
|
|
|
/* values for ilImageDes.flags */
|
|
#define IL_DITHERED_PALETTE (1<<0)
|
|
|
|
typedef unsigned char ilByte;
|
|
typedef ilByte *ilPtr;
|
|
typedef int ilBool;
|
|
typedef short ilShortBool;
|
|
typedef int ilError;
|
|
|
|
/* ilImageDes and predefined image descriptors */
|
|
|
|
typedef struct {
|
|
short refBlack, refWhite;
|
|
ilByte subsampleHoriz, subsampleVert;
|
|
} ilYCbCrSampleInfo;
|
|
|
|
typedef struct {
|
|
ilYCbCrSampleInfo sample[3]; /* [Y,Cb,Cr] */
|
|
short lumaRed, lumaGreen, lumaBlue; /* fractions of 10000 */
|
|
short positioning; /* must be zero (0) */
|
|
} ilYCbCrInfo;
|
|
|
|
typedef struct {
|
|
short levels[3];
|
|
} ilPaletteInfo;
|
|
|
|
typedef struct {
|
|
unsigned long flags;
|
|
} ilG3Info;
|
|
|
|
typedef struct {
|
|
unsigned long flags;
|
|
} ilG4Info;
|
|
|
|
typedef struct {
|
|
short reserved; /* must be zero (0) */
|
|
short process;
|
|
} ilJPEGInfo;
|
|
|
|
#define IL_DES_RESERVED_SIZE 4
|
|
|
|
typedef struct _ilImageDes {
|
|
unsigned short type;
|
|
unsigned short compression;
|
|
ilShortBool blackIsZero;
|
|
unsigned short nSamplesPerPixel;
|
|
unsigned long noLongerUsed; /* must set to 0x10001 */
|
|
union {
|
|
ilG3Info g3;
|
|
ilG4Info g4;
|
|
ilJPEGInfo JPEG;
|
|
} compInfo;
|
|
long reserved [IL_DES_RESERVED_SIZE];
|
|
unsigned long flags;
|
|
union {
|
|
ilYCbCrInfo YCbCr;
|
|
ilPaletteInfo palette;
|
|
long filler [8];
|
|
} typeInfo;
|
|
long nLevelsPerSample [IL_MAX_SAMPLES];
|
|
} ilImageDes;
|
|
|
|
#define IL_INIT_IMAGE_DES(_pDes) { \
|
|
bzero ((char *)(_pDes), sizeof (ilImageDes)); \
|
|
(_pDes)->noLongerUsed = 0x10001; \
|
|
}
|
|
|
|
extern const ilImageDes ilBitonal0WhiteImageDes, ilGray256ImageDes, ilRGB256ImageDes;
|
|
extern const ilImageDes ilPaletteImageDes, ilYCbCrImageDes, ilYCbCr2ImageDes;
|
|
|
|
#define IL_DES_BITONAL (&ilBitonal0WhiteImageDes)
|
|
#define IL_DES_GRAY (&ilGray256ImageDes)
|
|
#define IL_DES_RGB (&ilRGB256ImageDes)
|
|
#define IL_DES_PALETTE (&ilPaletteImageDes)
|
|
#define IL_DES_YCBCR (&ilYCbCrImageDes)
|
|
#define IL_DES_YCBCR_2 (&ilYCbCr2ImageDes)
|
|
|
|
/* ilImageFormat and predefined image formats */
|
|
#define IL_FORMAT_RESERVED_SIZE 4
|
|
|
|
|
|
/* Byte flip table used for bitonal rotate & mirror filters and xbm decode */
|
|
extern const unsigned char ilBitReverseTable [256];
|
|
|
|
|
|
typedef struct {
|
|
unsigned short sampleOrder;
|
|
unsigned short byteOrder;
|
|
unsigned short rowBitAlign;
|
|
long reserved [IL_FORMAT_RESERVED_SIZE];
|
|
unsigned short nBitsPerSample [IL_MAX_SAMPLES];
|
|
} ilImageFormat;
|
|
|
|
#define IL_INIT_IMAGE_FORMAT(_pFormat) { \
|
|
bzero ((char *)(_pFormat), sizeof (ilImageFormat)); \
|
|
}
|
|
|
|
extern const ilImageFormat ilBitImageFormat, ilByteImageFormat,
|
|
il3BytePixelImageFormat, il3BytePlaneImageFormat;
|
|
|
|
#define IL_FORMAT_BIT (&ilBitImageFormat)
|
|
#define IL_FORMAT_BYTE (&ilByteImageFormat)
|
|
#define IL_FORMAT_3BYTE_PIXEL (&il3BytePixelImageFormat)
|
|
#define IL_FORMAT_3BYTE_PLANE (&il3BytePlaneImageFormat)
|
|
|
|
|
|
typedef struct {
|
|
ilError error;
|
|
long errorInfo;
|
|
} ilContextPublicRec;
|
|
typedef ilContextPublicRec *ilContext;
|
|
|
|
|
|
typedef struct {
|
|
ilContext context;
|
|
int objectType;
|
|
ilPtr pPrivate;
|
|
} ilObjectPublicRec;
|
|
typedef ilObjectPublicRec *ilObject;
|
|
|
|
typedef ilObject ilPipe;
|
|
typedef ilObject ilInternalImage;
|
|
typedef ilObject ilClientImage;
|
|
|
|
typedef struct {
|
|
long x;
|
|
long y;
|
|
long width;
|
|
long height;
|
|
} ilRect;
|
|
|
|
|
|
typedef struct {
|
|
ilPtr pPixels;
|
|
long nBytesPerRow;
|
|
long bufferSize;
|
|
long filler;
|
|
} ilImagePlaneInfo;
|
|
|
|
typedef struct {
|
|
const ilImageDes *pDes;
|
|
const ilImageFormat *pFormat;
|
|
long width, height;
|
|
unsigned short *pPalette;
|
|
ilPtr pCompData;
|
|
ilShortBool clientPalette;
|
|
ilShortBool clientCompData;
|
|
ilShortBool clientPixels;
|
|
short filler [9];
|
|
ilImagePlaneInfo plane [IL_MAX_SAMPLES];
|
|
} ilImageInfo;
|
|
|
|
typedef struct {
|
|
short mustbezero;
|
|
short Q;
|
|
} ilJPEGEncodeControl;
|
|
|
|
typedef struct {
|
|
short method;
|
|
short levels [3];
|
|
short kernelSize;
|
|
short dstType;
|
|
ilObject mapImage;
|
|
} ilConvertToPaletteInfo;
|
|
|
|
|
|
|
|
#define IL_INTERNAL_VERSION 4
|
|
extern ilError ilInternalCreateContext (
|
|
#if NeedFunctionPrototypes
|
|
int versionCheck,
|
|
ilContext *pContextReturn, /* RETURNED */
|
|
unsigned long mustBeZero
|
|
#endif
|
|
);
|
|
|
|
#define IL_CREATE_CONTEXT(_pContext, _zero) \
|
|
(ilInternalCreateContext (IL_INTERNAL_VERSION, \
|
|
(_pContext), (_zero)))
|
|
|
|
extern ilBool ilDestroyContext (
|
|
#if NeedFunctionPrototypes
|
|
ilContext context
|
|
#endif
|
|
);
|
|
|
|
|
|
extern ilBool ilDestroyObject (
|
|
#if NeedFunctionPrototypes
|
|
ilObject object
|
|
#endif
|
|
);
|
|
|
|
extern ilInternalImage ilCreateInternalImage (
|
|
#if NeedFunctionPrototypes
|
|
ilContext context,
|
|
long width,
|
|
long height,
|
|
ilImageDes *pImageDes,
|
|
unsigned long mustBeZero
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilQueryInternalImage (
|
|
#if NeedFunctionPrototypes
|
|
ilInternalImage image,
|
|
long *pWidth, /* RETURNED */
|
|
long *pHeight, /* RETURNED */
|
|
ilImageDes *pImageDes, /* RETURNED */
|
|
unsigned long mustBeZero
|
|
#endif
|
|
);
|
|
|
|
extern unsigned int ilGetPrivateType (
|
|
#if NeedFunctionPrototypes
|
|
ilContext context
|
|
#endif
|
|
);
|
|
|
|
extern ilClientImage ilCreateClientImage (
|
|
#if NeedFunctionPrototypes
|
|
ilContext context,
|
|
ilImageInfo *pInfo,
|
|
unsigned long mustBeZero
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilQueryClientImage (
|
|
#if NeedFunctionPrototypes
|
|
ilClientImage image,
|
|
ilImageInfo **ppInfo, /* RETURNED */
|
|
unsigned long mustBeZero
|
|
#endif
|
|
);
|
|
|
|
extern ilPipe ilCreatePipe (
|
|
#if NeedFunctionPrototypes
|
|
ilContext context,
|
|
unsigned long mustBeZero
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilEmptyPipe (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe
|
|
#endif
|
|
);
|
|
|
|
|
|
extern unsigned int ilQueryPipe (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
long *pWidth, /* RETURNED */
|
|
long *pHeight, /* RETURNED */
|
|
ilImageDes *pImageDes /* RETURNED */
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilAbortPipe (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe
|
|
#endif
|
|
);
|
|
|
|
extern int ilExecutePipe (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
long nStrips,
|
|
float ratio
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilReadImage (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
ilObject image
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilWriteImage (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
ilObject image
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilScale (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
long dstWidth,
|
|
long dstHeight,
|
|
int option,
|
|
void *pOptionData
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilRotate90 (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
int factor
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilMirror (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
int direction
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilCrop (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
ilRect *pRect
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilMap (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
ilClientImage mapImage
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilConvert (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
const ilImageDes *pDes,
|
|
const ilImageFormat *pFormat,
|
|
int option,
|
|
void *pOptionData
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilCompress (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
unsigned int compression,
|
|
ilPtr pData,
|
|
long dstStripHeight,
|
|
unsigned long mustBeZero
|
|
#endif
|
|
);
|
|
|
|
extern ilBool ilFeedFromImage (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
ilObject image,
|
|
long height,
|
|
long stripHeight,
|
|
ilBool constantStrip
|
|
#endif
|
|
);
|
|
|
|
extern int ilFeedPipe (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
long start,
|
|
long nLines,
|
|
long nCompBytes,
|
|
unsigned long mustBeZero
|
|
#endif
|
|
);
|
|
|
|
extern ilPipe ilTapPipe (
|
|
#if NeedFunctionPrototypes
|
|
ilPipe pipe,
|
|
unsigned long mustBeZero,
|
|
void *mustBeNull
|
|
#endif
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
} /* for C++ V2.0 */
|
|
#endif
|
|
|
|
#endif
|