diff options
author | scuri <scuri> | 2008-10-17 06:10:15 +0000 |
---|---|---|
committer | scuri <scuri> | 2008-10-17 06:10:15 +0000 |
commit | 5a422aba704c375a307a902bafe658342e209906 (patch) | |
tree | 5005011e086bb863d8fb587ad3319bbec59b2447 /include/im_format_all.h |
First commit - moving from LuaForge to SourceForge
Diffstat (limited to 'include/im_format_all.h')
-rw-r--r-- | include/im_format_all.h | 576 |
1 files changed, 576 insertions, 0 deletions
diff --git a/include/im_format_all.h b/include/im_format_all.h new file mode 100644 index 0000000..3c38452 --- /dev/null +++ b/include/im_format_all.h @@ -0,0 +1,576 @@ +/** \file + * \brief All the Internal File Formats. + * They are all automatically registered by the library. + * The signatures are in C, but the functions are C++. + * Header for internal use only. + * + * See Copyright Notice in im_lib.h + */ + +#ifndef __IM_FORMAT_ALL_H +#define __IM_FORMAT_ALL_H + +#if defined(__cplusplus) +extern "C" { +#endif + +/** \defgroup tiff TIFF - Tagged Image File Format + * \section Description + * + * \par + * Copyright (c) 1986-1988, 1992 by Adobe Systems Incorporated. \n + * Originally created by a group of companies, + * the Aldus Corporation keeped the copyright until Aldus was aquired by Adobe. \n + * TIFF Revision 6.0 Final — June 3, 1992 \n + * http://www.adobe.com/Support/TechNotes.html + * \par + * Access to the TIFF file format uses libTIFF version 3.8.2 \n + * http://www.remotesensing.org/libtiff/ \n + * Copyright (c) 1988-1997 Sam Leffler \n + * Copyright (c) 1991-1997 Silicon Graphics, Inc. \n + * + * \section Features + * +\verbatim + Data Types: <all> + Color Spaces: Gray, RGB, CMYK, YCbCr, Lab, XYZ, Map and Binary. + Compressions: + NONE - no compression [default for IEEE Floating Point Data] + CCITTRLE - CCITT modified Huffman RLE (binary only) [default for Binary] + CCITTFAX3 - CCITT Group 3 fax (binary only) + CCITTFAX4 - CCITT Group 4 fax (binary only) + LZW - Lempel-Ziv & Welch [default] + JPEG - ISO JPEG [default for YCBCR] + NEXT - NeXT 2-bit RLE (2 bpp only) + CCITTRLEW - CCITT modified Huffman RLE with word alignment (binary only) + RLE - Packbits (Macintosh RLE) [default for MAP] + THUNDERSCAN - ThunderScan 4-bit RLE (only for 2 or 4 bpp) + PIXARLOG - Pixar companded 11-bit ZIP (only byte, ushort and float) + DEFLATE - LZ77 variation (ZIP) + ADOBE_DEFLATE - Adobe LZ77 variation + SGILOG - SGI Log Luminance RLE for L and Luv (only byte, ushort and float) [default for XYZ] + SGILOG24 - SGI Log 24-bit packed for Luv (only byte, ushort and float) + Can have more than one image. + Can have an alpha channel. + Components can be packed or not. + Lines arranged from top down to bottom or bottom up to top. + Handle(1) returns a TIFF* libTIFF structure. + + Attributes: + Photometric IM_USHORT (1) (when writing this will complement the color_mode information, for Mask, MinIsWhite, ITULab and ICCLab) + ExtraSampleInfo IM_USHORT (1) (description of alpha channel: 0- uknown, 1- pre-multiplied, 2-normal) + JPEGQuality IM_INT (1) [0-100, default 75] (write only) + ZIPQuality IM_INT (1) [1-9, default 6] (write only) + ResolutionUnit (string) ["DPC", "DPI"] + XResolution, YResolution IM_FLOAT (1) + Description, Author, Copyright, DateTime, DocumentName, + PageName, TargetPrinter, Make, Model, Software, HostComputer (string) + InkNames (strings separated by '0's) + InkSet IM_USHORT (1) + NumberOfInks IM_USHORT (1) + DotRange IM_USHORT (2) + TransferFunction0, TransferFunction1, TransferFunction3 IM_USHORT [gray=0, rgb=012] + ReferenceBlackWhite IMFLOAT (6) + WhitePoint IMFLOAT (2) + PrimaryChromaticities IMFLOAT (6) + YCbCrCoefficients IM_FLOAT (3) + YCbCrSubSampling IM_USHORT (2) + YCbCrPositioning IM_USHORT (1) + PageNumber IM_USHORT (2) + StoNits IM_FLOAT (1) + XPosition, YPosition IM_FLOAT (1) + SMinSampleValue, SMaxSampleValue IM_FLOAT (1) + HalftoneHints IM_USHORT (2) + SubfileType IM_INT (1) + ICCProfile IM_BYTE (N) + MultiBandCount IM_USHORT (1) [Number of bands in a multiband gray image.] + MultiBandSelect IM_USHORT (1) [Band number to read one band of a multiband gray image. Must be set before reading image info.] + and other TIFF tags as they are described in the TIFF documentation. + GeoTIFF tags: + GeoTiePoints, GeoTransMatrix, IntergraphMatrix, GeoPixelScale, GeoDoubleParams IM_FLOAT (N) + GeoASCIIParams (string) + Read-only support for EXIF tags as they are described in the EXIF 2.2 documentation. See http://www.exif.org/ + DNG tags as they are described in the DNG documentation. See http://www.adobe.com/br/products/dng/ + Tags BlackLevel, DefaultCropOrigin and DefaultCropSize are incorrectly interpreted by libTIFF so they are ignored. + Raw image is loaded in place of the thumbnail image in the main IFD. + SubIFDCount IM_USHORT (1) [Number of subifds of the current image.] + SubIFDSelect IM_USHORT (1) [Subifd number to be readed. Must be set before reading image info.] + (other attributes can be obtained by using libTIFF directly using the Handle(1) function) + + Comments: + LogLuv is in fact Y'+CIE(u,v), so we choose to always convert it to XYZ. + SubIFD is handled only for DNG. + Since LZW patent expired, LZW compression is enabled. LZW Copyright Unisys. + libGeoTIFF can be used without XTIFF initialization. Use Handle(1) to obtain a TIFF*. + + Changes: + "tiff_jpeg.c" - commented "downsampled_output = TRUE" in 2 places. + New file "tif_config.h" to match our needs. + New file "tiff_binfile.c" that implement I/O rotines using imBinFile. +\endverbatim + * \ingroup format */ +void imFormatRegisterTIFF(void); + +/** \defgroup jpeg JPEG - JPEG File Interchange Format + * \section Description + * + * \par + * ISO/IEC 10918 (1994, 1995, 1997, 1999)\n + * http://www.jpeg.org/ + * \par + * Access to the JPEG file format uses libJPEG version 6b. \n + * http://www.ijg.org \n + * Copyright (C) 1991-1998, Thomas G. Lane \n + * from the Independent JPEG Group. + * \par + * Access to the EXIF attributes uses libEXIF version 0.6.12. \n + * http://sourceforge.net/projects/libexif \n + * Copyright (C) 2001-2003, Lutz Müller + * + * \section Features + * +\verbatim + Data Types: Byte + Color Spaces: Gray, RGB, CMYK and YCbCr (Binary Saved as Gray) + Compressions: + JPEG - ISO JPEG [default] + Only one image. + No alpha channel. + Internally the components are always packed. + Internally the lines are arranged from top down to bottom. + Handle(1) returns jpeg_decompress_struct* when reading, and + jpeg_compress_struct* when writing (libJPEG structures). + + Attributes: + AutoYCbCr IM_INT (1) (controls YCbCr auto conversion) default 1 + JPEGQuality IM_INT (1) [0-100, default 75] (write only) + ResolutionUnit (string) ["DPC", "DPI"] + XResolution, YResolution IM_FLOAT (1) + Interlaced (same as Progressive) IM_INT (1 | 0) default 0 + Description (string) + (lots of Exif tags) + + Changes to libJPEG: + jdatadst.c - fflush and ferror replaced by macros JFFLUSH and JFERROR. + jinclude.h - standard JFFLUSH and JFERROR definitions, and new macro HAVE_JFIO. + jmorecfg.h - changed definition of INT32 to JINT32 for better compatibility. + jdhuf.c - added support for OJPEG_SUPPORT in libTIFF. + new file created: jconfig.h + + Changes to libEXIF: + new file config.h + changed "exif-tag.c" to add new function + changed "exif-entry.c" to improve exif_entry_initialize + fixed small bug in "mnote-pentax-tag.h". + + Comments: + Other APPx markers are ignored. + No thumbnail support. + RGB images are automatically converted to YCbCr when saved. + Also YcbCr are converted to RGB when loaded. Use AutoYCbCr=0 to disable this behavior. +\endverbatim + * \ingroup format */ +void imFormatRegisterJPEG(void); + +/** \defgroup png PNG - Portable Network Graphic Format + * \section Description + * + * \par + * Access to the PNG file format uses libPNG version 1.2.22. \n + * http://www.libpng.org \n + * Copyright (C) 1998-2007 Glenn Randers-Pehrson + * + * \section Features + * +\verbatim + Data Types: Byte and UShort + Color Spaces: Gray, RGB, MAP and Binary + Compressions: + DEFLATE - LZ77 variation (ZIP) [default] + Only one image. + Can have an alpha channel. + Internally the components are always packed. + Internally the lines are arranged from top down to bottom. + Handle(1) returns png_structp libPNG structure. + + Attributes: + ZIPQuality IM_INT (1) [1-9, default 6] (write only) + ResolutionUnit (string) ["DPC", "DPI"] + XResolution, YResolution IM_FLOAT (1) + Interlaced (same as Progressive) IM_INT (1 | 0) default 0 + Gamma IM_FLOAT (1) + WhitePoint IMFLOAT (2) + PrimaryChromaticities IMFLOAT (6) + XPosition, YPosition IM_FLOAT (1) + sRGBIntent IM_INT (1) [0: Perceptual, 1: Relative colorimetric, 2: Saturation, 3: Absolute colorimetric] + TransparencyIndex IM_BYTE (1 or N) + TransparentColor IM_BYTE (3) + CalibrationName, CalibrationUnits (string) + CalibrationLimits IM_INT (2) + CalibrationEquation IM_BYTE (1) [0-Linear,1-Exponential,2-Arbitrary,3-HyperbolicSine)] + CalibrationParam (string) [params separated by '\\n'] + Title, Author, Description, Copyright, DateTime (string) + Software, Disclaimer, Warning, Source, Comment, ... (string) + DateTimeModified (string) [when writing uses the current system time] + ICCProfile IM_BYTE (N) + ScaleUnit (string) ["meters", "radians"] + XScale, YScale IM_FLOAT (1) + + Comments: + Attributes after the image are ignored. + Define PNG_NO_CONSOLE_IO to avoid printfs. + We define PNG_TIME_RFC1123_SUPPORTED. + Add the following files to the makefile to optimize the library: + pngvcrd.c - PNG_USE_PNGVCRD + For Intel x86 CPU and Microsoft Visual C++ compiler + pnggccrd.c - PNG_USE_PNGGCCRD + For Intel x86 CPU (Pentium-MMX or later) and GNU C compiler. + Changed pngconf.h to use int instead of long in png_uint_32 and png_int_32. +\endverbatim + * \ingroup format */ +void imFormatRegisterPNG(void); + +/** \defgroup gif GIF - Graphics Interchange Format + * \section Description + * + * \par + * Copyright (c) 1987,1988,1989,1990 CompuServe Incorporated. \n + * GIF is a Service Mark property of CompuServe Incorporated. \n + * Graphics Interchange Format Programming Reference, 1990. \n + * LZW Copyright Unisys. + * \par + * Patial Internal Implementation. \n + * Decoding and encoding code were extracted from GIFLib 1.0. \n + * Copyright (c) 1989 Gershon Elber. + * + * \section Features + * +\verbatim + Data Types: Byte + Color Spaces: MAP only, (Gray and Binary saved as MAP) + Compressions: + LZW - Lempel-Ziv & Welch [default] + Can have more than one image. + No alpha channel. + Internally the lines are arranged from top down to bottom. + + Attributes: + ScreenHeight, ScreenWidth IM_USHORT (1) screen size [default to the first image size] + Interlaced IM_INT (1 | 0) default 0 + Description (string) + TransparencyIndex IM_BYTE (1) + XScreen, YScreen IM_USHORT (1) screen position + UserInput IM_BYTE (1) [1, 0] + Disposal (string) [UNDEF, LEAVE, RBACK, RPREV] + Delay IM_USHORT (1) + Iterations IM_USHORT (1) (NETSCAPE2.0 Application Extension) + + Comments: + Attributes after the last image are ignored. + Reads GIF87 and GIF89, but writes GIF89 always. + Ignored attributes: Background Color Index, Pixel Aspect Ratio, + Plain Text Extensions, Application Extensions... +\endverbatim + * \ingroup format */ +void imFormatRegisterGIF(void); + +/** \defgroup bmp BMP - Windows Device Independent Bitmap + * \section Description + * + * \par + * Windows Copyright Microsoft Corporation. + * \par + * Internal Implementation. + * + * \section Features + * +\verbatim + Data Types: Byte + Color Spaces: RGB, MAP and Binary (Gray saved as MAP) + Compressions: + NONE - no compression [default] + RLE - Run Lenght Encoding (only for MAP and Gray) + Only one image. + Can have an alpha channel (only for RGB) + Internally the components are always packed. + Lines arranged from top down to bottom or bottom up to top. But are saved always as bottom up. + + Attributes: + ResolutionUnit (string) ["DPC", "DPI"] + XResolution, YResolution IM_FLOAT (1) + + Comments: + Reads OS2 1.x and Windows 3, but writes Windows 3 always. + Version 4 and 5 BMPs are not supported. +\endverbatim + * \ingroup format */ +void imFormatRegisterBMP(void); + +/** \defgroup ras RAS - Sun Raster File + * \section Description + * + * \par + * Copyright Sun Corporation. + * \par + * Internal Implementation. + * + * \section Features + * +\verbatim + Data Types: Byte + Color Spaces: Gray, RGB, MAP and Binary + Compressions: + NONE - no compression [default] + RLE - Run Lenght Encoding + Only one image. + Can have an alpha channel (only for IM_RGB) + Internally the components are always packed. + Internally the lines are arranged from top down to bottom. + + Attributes: + none +\endverbatim + * \ingroup format */ +void imFormatRegisterRAS(void); + +/** \defgroup led LED - IUP image in LED + * \section Description + * + * \par + * Copyright Tecgraf/PUC-Rio and PETROBRAS/CENPES. + * \par + * Internal Implementation. + * + * \section Features + * +\verbatim + Data Types: Byte + Color Spaces: MAP only (Gray and Binary saved as MAP) + Compressions: + NONE - no compression [default] + Only one image. + No alpha channel. + Internally the lines are arranged from top down to bottom. + + Attributes: + none + + Comments: + LED file must start with "LEDImage = IMAGE[". +\endverbatim + * \ingroup format */ +void imFormatRegisterLED(void); + +/** \defgroup sgi SGI - Silicon Graphics Image File Format + * \section Description + * + * \par + * SGI is a trademark of Silicon Graphics, Inc. + * \par + * Internal Implementation. + * + * \section Features + * +\verbatim + Data Types: Byte and UShort + Color Spaces: Gray and RGB (Binary saved as Gray, MAP with fixed palette when reading only) + Compressions: + NONE - no compression [default] + RLE - Run Lenght Encoding + Only one image. + Can have an alpha channel (only for IM_RGB) + Internally the components are always packed. + Internally the lines are arranged from bottom up to top. + + Attributes: + Description (string) +\endverbatim + * \ingroup format */ +void imFormatRegisterSGI(void); + +/** \defgroup pcx PCX - ZSoft Picture + * \section Description + * + * \par + * Copyright ZSoft Corporation. \n + * ZSoft (1988) PCX Technical Reference Manual. + * \par + * Internal Implementation. + * + * \section Features + * +\verbatim + Data Types: Byte + Color Spaces: RGB, MAP and Binary (Gray saved as MAP) + Compressions: + NONE - no compression + RLE - Run Lenght Encoding [default - since uncompressed PCX is not well supported] + Only one image. + No alpha channel. + Internally the components are always packed. + Internally the lines are arranged from top down to bottom. + + Attributes: + ResolutionUnit (string) ["DPC", "DPI"] + XResolution, YResolution IM_FLOAT (1) + XScreen, YScreen IM_USHORT (1) screen position + + Comments: + Reads Versions 0-5, but writes Version 5 always. +\endverbatim + * \ingroup format */ +void imFormatRegisterPCX(void); + +/** \defgroup tga TGA - Truevision Graphics Adapter File + * \section Description + * + * \par + * Truevision TGA File Format Specification Version 2.0 \n + * Technical Manual Version 2.2 January, 1991 \n + * Copyright 1989, 1990, 1991 Truevision, Inc. + * \par + * Internal Implementation. + * + * \section Features + * +\verbatim + Supports 8 bits per component only. Data type is always Byte. + Color Spaces: Gray, RGB and MAP (Binary saved as Gray) + Compressions: + NONE - no compression [default] + RLE - Run Lenght Encoding + Only one image. + No alpha channel. + Internally the components are always packed. + Internally the lines are arranged from bottom up to top or from top down to bottom. + + Attributes: + XScreen, YScreen IM_USHORT (1) screen position + Title, Author, Description, JobName, Software (string) + SoftwareVersion (read only) (string) + DateTimeModified (string) [when writing uses the current system time] + Gamma IM_FLOAT (1) +\endverbatim + * \ingroup format */ +void imFormatRegisterTGA(void); + +/** \defgroup pnm PNM - Netpbm Portable Image Map + * \section Description + * + * \par + * PNM formats Copyright Jef Poskanzer + * \par + * Internal Implementation. + * + * \section Features + * +\verbatim + Data Types: Byte and UShort + Color Spaces: Gray, RGB and Binary + Compressions: + NONE - no compression [default] + ASCII (textual data) + Can have more than one image, but sequencial access only. + No alpha channel. + Internally the components are always packed. + Internally the lines are arranged from top down to bottom. + + Attributes: + Description (string) + + Comments: + In fact ASCII is an expansion... +\endverbatim + * \ingroup format */ +void imFormatRegisterPNM(void); + +/** \defgroup ico ICO - Windows Icon + * \section Description + * + * \par + * Windows Copyright Microsoft Corporation. + * \par + * Internal Implementation. + * + * \section Features + * +\verbatim + Data Types: Byte + Color Spaces: RGB, MAP and Binary (Gray saved as MAP) + Compressions: + NONE - no compression [default] + Can have more than one image. But writing is limited to 5 images, + and all images must have different sizes and bpp. + Can have an alpha channel (only for RGB) + Internally the components are always packed. + Internally the lines are arranged from bottom up to top. + + Attributes: + TransparencyIndex IM_BYTE (1 or N) + + Comments: + If the user specifies an alpha channel, the AND mask is loaded as alpha if + the file color mode does not contain the IM_ALPHA flag. + For MAP imagens, if the user does not specifies an alpha channel + the TransparencyIndex is used to initialize the AND mask when writing, + and if the user does specifies an alpha channel + the most repeated index with transparency will be the transparent index. + Although any size and common bpp can be used is recomended to use the typical configurations: + 16x16, 32x32, 48x48, 64x64 or 96x96 + 2 colors, 16 colors, 256 colors, 24bpp or 32bpp +\endverbatim + * \ingroup format */ +void imFormatRegisterICO(void); + +/** \defgroup krn KRN - IM Kernel File Format + * \section Description + * + * \par + * Textual format to provied a simple way to create kernel convolution images. + * \par + * Internal Implementation. + * + * \section Features + * +\verbatim + Data Types: Byte, Int + Color Spaces: Gray + Compressions: + NONE - no compression [default] + Only one image. + No alpha channel. + Internally the lines are arranged from top down to bottom. + + Attributes: + Description (string) + + Comments: + The format is very simple, inspired by PNM. + It was developed because PNM does not have support for INT and FLOAT. + Remeber that usually convolution operations use kernel size an odd number. + + Format Model: + IMKERNEL + Description up to 512 characters + width height + type (0 - IM_INT, 1 - IM_FLOAT) + data... + + Example: + IMKERNEL + Gradian + 3 3 + 0 + 0 -1 0 + 0 1 0 + 0 0 0 +\endverbatim + * \ingroup format */ +void imFormatRegisterKRN(void); + + +#if defined(__cplusplus) +} +#endif + +#endif |