IM: im_format_all.h Source File
From IM - Imaging Libray
im_format_all.h
Go to the documentation of this file.00001 /** \file 00002 * \brief All the Internal File Formats. 00003 * They are all automatically registered by the library. 00004 * The signatures are in C, but the functions are C++. 00005 * Header for internal use only. 00006 * 00007 * See Copyright Notice in im_lib.h 00008 * $Id: Exp $ 00009 */ 00010 00011 #ifndef __IM_FORMAT_ALL_H 00012 #define __IM_FORMAT_ALL_H 00013 00014 #if defined(__cplusplus) 00015 extern "C" { 00016 #endif 00017 00018 /** \defgroup tiff TIFF - Tagged Image File Format 00019 * \section Description 00020 * 00021 * \par 00022 * Copyright (c) 1986-1988, 1992 by Adobe Systems Incorporated. \n 00023 * Originally created by a group of companies, 00024 * the Aldus Corporation keeped the copyright until Aldus was aquired by Adobe. \n 00025 * TIFF Revision 6.0 Final June 3, 1992 \n 00026 * http://www.adobe.com/Support/TechNotes.html 00027 * \par 00028 * Access to the TIFF file format uses libTIFF version 3.6.1 \n 00029 * http://www.libtiff.org \n 00030 * Copyright (c) 1988-1997 Sam Leffler \n 00031 * Copyright (c) 1991-1997 Silicon Graphics, Inc. \n 00032 * 00033 * \section Features 00034 * 00035 \verbatim 00036 Data Types: <all> 00037 Color Spaces: Gray, RGB, CMYK, YCbCr, Lab, XYZ, Map and Binary. 00038 Compressions: 00039 NONE - no compression [default for IEEE Floating Point Data] 00040 CCITTRLE - CCITT modified Huffman RLE (binary only) [default for Binary] 00041 CCITTFAX3 - CCITT Group 3 fax (binary only) 00042 CCITTFAX4 - CCITT Group 4 fax (binary only) 00043 LZW - Lempel-Ziv & Welch [default] 00044 JPEG - ISO JPEG [default for YCBCR] 00045 NEXT - NeXT 2-bit RLE (2 bpp only) 00046 CCITTRLEW - CCITT modified Huffman RLE with word alignment (binary only) 00047 RLE - Packbits (Macintosh RLE) [default for MAP] 00048 THUNDERSCAN - ThunderScan 4-bit RLE (only for 2 or 4 bpp) 00049 PIXARLOG - Pixar companded 11-bit ZIP (only byte, ushort and float) 00050 DEFLATE - LZ77 variation (ZIP) 00051 ADOBE_DEFLATE - Adobe LZ77 variation 00052 SGILOG - SGI Log Luminance RLE for L and Luv (only byte, ushort and float) [default for XYZ] 00053 SGILOG24 - SGI Log 24-bit packed for Luv (only byte, ushort and float) 00054 Can have more than one image. 00055 Can have an alpha channel. 00056 Components can be packed or not. 00057 Lines arranged from top down to bottom or bottom up to top. 00058 Handle() returns a TIFF* of libTIFF. 00059 00060 Attributes: 00061 Photometric IM_USHORT (1) (when writing this will complement the color_mode information, for Mask, MinIsWhite, ITULab and ICCLab) 00062 ExtraSampleInfo IM_USHORT (1) (description of alpha channel: 0- uknown, 1- pre-multiplied, 2-normal) 00063 JPEGQuality IM_INT (1) [0-100, default 75] (write only) 00064 ZIPQuality IM_INT (1) [1-9, default 6] (write only) 00065 ResolutionUnit (string) ["DPC", "DPI"] 00066 XResolution, YResolution IM_FLOAT (1) 00067 Description, Author, Copyright, DateTime, DocumentName, 00068 PageName, TargetPrinter, Make, Model, Software, HostComputer (string) 00069 InkNames (strings separated by '0's) 00070 InkSet IM_USHORT (1) 00071 NumberOfInks IM_USHORT (1) 00072 DotRange IM_USHORT (2) 00073 TransferFunction0, TransferFunction1, TransferFunction3 IM_USHORT [gray=0, rgb=012] 00074 ReferenceBlackWhite IMFLOAT (6) 00075 WhitePoint IMFLOAT (2) 00076 PrimaryChromaticities IMFLOAT (6) 00077 YCbCrCoefficients IM_FLOAT (3) 00078 YCbCrSubSampling IM_USHORT (2) 00079 YCbCrPositioning IM_USHORT (1) 00080 PageNumber IM_USHORT (2) 00081 StoNits IM_FLOAT (1) 00082 XPosition, YPosition IM_FLOAT (1) 00083 SMinSampleValue, SMaxSampleValue IM_FLOAT (1) 00084 HalftoneHints IM_USHORT (2) 00085 SubfileType IM_INT (1) 00086 ICCProfile IM_BYTE (N) 00087 GeoTiePoints, GeoTransMatrix, IntergraphMatrix, GeoPixelScale, GeoDoubleParams IM_FLOAT (N) 00088 GeoASCIIParams (string) 00089 (other attributes can be obtained by using libTIFF directly using the Handle() function) 00090 00091 Comments: 00092 LogLuv is in fact Y'+CIE(u,v), so we choose to convert to XYZ. 00093 SubIFD is not handled. 00094 Since LZW patent expired, we use the libtiff-lzw-compression-kit-1.5 to enable LZW compression. 00095 LZW Copyright Unisys. 00096 libGeoTIFF can be used without XTIFF initialization. Use Handle() to obtain a TIFF*. 00097 Must define in the makefile: JPEG_SUPPORT, ZIP_SUPPORT, PIXARLOG_SUPPORT 00098 If your system does not have the definitions u_char, u_short, ... 00099 you must define BSDTYPES in the makefile when compiling libTIFF. 00100 Our include file "port.h" simply includes "tiffcomp.h". 00101 Changed "tiff_jpeg.c" - commented "downsampled_output = TRUE" 00102 New file tiff_binfile.c 00103 \endverbatim 00104 * \ingroup format */ 00105 void imFormatRegisterTIFF(void); 00106 00107 /** \defgroup jpeg JPEG - JPEG File Interchange Format 00108 * \section Description 00109 * 00110 * \par 00111 * ISO/IEC 10918 (1994, 1995, 1997, 1999)\n 00112 * http://www.jpeg.org/ 00113 * \par 00114 * Access to the JPEG file format uses libJPEG version 6b. \n 00115 * http://www.ijg.org \n 00116 * Copyright (C) 1991-1998, Thomas G. Lane \n 00117 * from the Independent JPEG Group. 00118 * \par 00119 * Access to the EXIF attributes uses libEXIF version 0.5.12. \n 00120 * http://sourceforge.net/projects/libexif \n 00121 * Copyright (C) 2001-2003, Lutz Müller 00122 * 00123 * \section Features 00124 * 00125 \verbatim 00126 Data Types: Byte 00127 Color Spaces: Gray, RGB, CMYK and YCbCr (Binary Saved as Gray) 00128 Compressions: 00129 JPEG - ISO JPEG [default] 00130 Only one image. 00131 No alpha channel. 00132 Internally the components are always packed. 00133 Internally the lines are arranged from top down to bottom. 00134 Handle() returns jpeg_decompress_struct* when reading, and 00135 jpeg_compress_struct* when writing. 00136 00137 Attributes: 00138 JPEGQuality IM_INT (1) [0-100, default 75] (write only) 00139 ResolutionUnit (string) ["DPC", "DPI"] 00140 XResolution, YResolution IM_FLOAT (1) 00141 Interlaced (same as Progressive) IM_INT (1 | 0) default 0 00142 Description (string) 00143 (lots of Exif tags) 00144 00145 Changes to libJPEG: 00146 jdatadst.c - fflush and ferror replaced by macros JFFLUSH and JFERROR. 00147 jinclude.h - standard JFFLUSH and JFERROR definitions, and new macro HAVE_JFIO. 00148 jmorecfg.h - changed definition of INT32 to JINT32 for better compatibility. 00149 new file created: jconfig.h 00150 00151 Changes to libEXIF: 00152 new file config.h 00153 changed "exif-tag.c" to add new function 00154 changed "exif-entry.c" to improve exif_entry_initialize 00155 00156 Comments: 00157 Other APPx markers are ignored. 00158 No thumbnail support. 00159 \endverbatim 00160 * \ingroup format */ 00161 void imFormatRegisterJPEG(void); 00162 00163 /** \defgroup png PNG - Portable Network Graphic Format 00164 * \section Description 00165 * 00166 * \par 00167 * Access to the PNG file format uses libPNG version 1.2.5. \n 00168 * http://www.libpng.org \n 00169 * Copyright (C) 2000-2002 Glenn Randers-Pehrson 00170 * \par 00171 * Deflate compression support uses zlib version 1.2.1. \n 00172 * http://www.zlib.org \n 00173 * Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler 00174 * 00175 * \section Features 00176 * 00177 \verbatim 00178 Data Types: Byte and UShort 00179 Color Spaces: Gray, RGB, MAP and Binary 00180 Compressions: 00181 DEFLATE - LZ77 variation (ZIP) [default] 00182 Only one image. 00183 Can have an alpha channel. 00184 Internally the components are always packed. 00185 Internally the lines are arranged from top down to bottom. 00186 Handle() returns png_structp 00187 00188 Attributes: 00189 ZIPQuality IM_INT (1) [1-9, default 6] (write only) 00190 ResolutionUnit (string) ["DPC", "DPI"] 00191 XResolution, YResolution IM_FLOAT (1) 00192 Interlaced (same as Progressive) IM_INT (1 | 0) default 0 00193 Gamma IM_FLOAT (1) 00194 WhitePoint IMFLOAT (2) 00195 PrimaryChromaticities IMFLOAT (6) 00196 XPosition, YPosition IM_FLOAT (1) 00197 sRGBIntent IM_INT (1) [0: Perceptual, 1: Relative colorimetric, 2: Saturation, 3: Absolute colorimetric] 00198 TransparencyIndex IM_BYTE (1 or N) 00199 TransparentColor IM_BYTE (3) 00200 CalibrationName, CalibrationUnits (string) 00201 CalibrationLimits IM_INT (2) 00202 CalibrationEquation IM_BYTE (1) [0-Linear,1-Exponential,2-Arbitrary,3-HyperbolicSine)] 00203 CalibrationParam (string) [params separated by '\\n'] 00204 Title, Author, Description, Copyright, DateTime (string) 00205 Software, Disclaimer, Warning, Source, Comment, ... (string) 00206 DateTimeModified (string) [when writing uses the current system time] 00207 ICCProfile IM_BYTE (N) 00208 ScaleUnit (string) ["meters", "radians"] 00209 XScale, YScale IM_FLOAT (1) 00210 00211 Comments: 00212 Attributes after the image are ignored. 00213 Define PNG_NO_CONSOLE_IO to avoid printfs. 00214 We define PNG_TIME_RFC1123_SUPPORTED. 00215 Add the following files to the makefile to optimize the library: 00216 pngvcrd.c - PNG_USE_PNGVCRD 00217 For Intel x86 CPU and Microsoft Visual C++ compiler 00218 pnggccrd.c - PNG_USE_PNGGCCRD 00219 For Intel x86 CPU (Pentium-MMX or later) and GNU C compiler. 00220 \endverbatim 00221 * \ingroup format */ 00222 void imFormatRegisterPNG(void); 00223 00224 /** \defgroup gif GIF - Graphics Interchange Format 00225 * \section Description 00226 * 00227 * \par 00228 * Copyright (c) 1987,1988,1989,1990 CompuServe Incorporated. \n 00229 * GIF is a Service Mark property of CompuServe Incorporated. \n 00230 * Graphics Interchange Format Programming Reference, 1990. \n 00231 * LZW Copyright Unisys. 00232 * \par 00233 * Patial Internal Implementation. \n 00234 * Decoding and encoding code were extracted from GIFLib 1.0. \n 00235 * Copyright (c) 1989 Gershon Elber. 00236 * 00237 * \section Features 00238 * 00239 \verbatim 00240 Data Types: Byte 00241 Color Spaces: MAP only, (Gray and Binary saved as MAP) 00242 Compressions: 00243 LZW - Lempel-Ziv & Welch [default] 00244 Can have more than one image. 00245 No alpha channel. 00246 Internally the lines are arranged from top down to bottom. 00247 Handle() returns a imBinFile* pointer. 00248 00249 Attributes: 00250 ScreenHeight, ScreenWidth IM_USHORT (1) screen size [default to the first image size] 00251 Interlaced IM_INT (1 | 0) default 0 00252 Description (string) 00253 TransparencyIndex IM_BYTE (1) 00254 XScreen, YScreen IM_USHORT (1) screen position 00255 UserInput IM_BYTE (1) [1, 0] 00256 Disposal (string) [UNDEF, LEAVE, RBACK, RPREV] 00257 Delay IM_USHORT (1) 00258 Iterations IM_USHORT (1) (NETSCAPE2.0 Application Extension) 00259 00260 Comments: 00261 Attributes after the last image are ignored. 00262 Reads GIF87 and GIF89, but writes GIF89 always. 00263 Ignored attributes: Background Color Index, Pixel Aspect Ratio, 00264 Plain Text Extensions, Application Extensions... 00265 \endverbatim 00266 * \ingroup format */ 00267 void imFormatRegisterGIF(void); 00268 00269 /** \defgroup bmp BMP - Windows Device Independent Bitmap 00270 * \section Description 00271 * 00272 * \par 00273 * Windows Copyright Microsoft Corporation. 00274 * \par 00275 * Internal Implementation. 00276 * 00277 * \section Features 00278 * 00279 \verbatim 00280 Data Types: Byte 00281 Color Spaces: RGB, MAP and Binary (Gray saved as MAP) 00282 Compressions: 00283 NONE - no compression [default] 00284 RLE - Run Lenght Encoding (only for MAP and Gray) 00285 Only one image. 00286 Can have an alpha channel (only for RGB) 00287 Internally the components are always packed. 00288 Lines arranged from top down to bottom or bottom up to top. But are saved always as bottom up. 00289 Handle() returns imBinFile* pointer. 00290 00291 Attributes: 00292 ResolutionUnit (string) ["DPC", "DPI"] 00293 XResolution, YResolution IM_FLOAT (1) 00294 00295 Comments: 00296 Reads OS2 1.x and Windows 3, but writes Windows 3 always. 00297 Version 4 and 5 BMPs are not supported. 00298 \endverbatim 00299 * \ingroup format */ 00300 void imFormatRegisterBMP(void); 00301 00302 /** \defgroup ras RAS - Sun Raster File 00303 * \section Description 00304 * 00305 * \par 00306 * Copyright Sun Corporation. 00307 * \par 00308 * Internal Implementation. 00309 * 00310 * \section Features 00311 * 00312 \verbatim 00313 Data Types: Byte 00314 Color Spaces: Gray, RGB, MAP and Binary 00315 Compressions: 00316 NONE - no compression [default] 00317 RLE - Run Lenght Encoding 00318 Only one image. 00319 Can have an alpha channel (only for IM_RGB) 00320 Internally the components are always packed. 00321 Internally the lines are arranged from top down to bottom. 00322 Handle() returns imBinFile* pointer. 00323 00324 Attributes: 00325 none 00326 \endverbatim 00327 * \ingroup format */ 00328 void imFormatRegisterRAS(void); 00329 00330 /** \defgroup led LED - IUP image in LED 00331 * \section Description 00332 * 00333 * \par 00334 * Copyright Tecgraf/PUC-Rio and PETROBRAS/CENPES. 00335 * \par 00336 * Internal Implementation. 00337 * 00338 * \section Features 00339 * 00340 \verbatim 00341 Data Types: Byte 00342 Color Spaces: MAP only (Gray and Binary saved as MAP) 00343 Compressions: 00344 NONE - no compression [default] 00345 Only one image. 00346 No alpha channel. 00347 Internally the lines are arranged from top down to bottom. 00348 Handle() returns imBinFile* pointer. 00349 00350 Attributes: 00351 none 00352 00353 Comments: 00354 LED file must start with "LEDImage = IMAGE[". 00355 \endverbatim 00356 * \ingroup format */ 00357 void imFormatRegisterLED(void); 00358 00359 /** \defgroup sgi SGI - Silicon Graphics Image File Format 00360 * \section Description 00361 * 00362 * \par 00363 * SGI is a trademark of Silicon Graphics, Inc. 00364 * \par 00365 * Internal Implementation. 00366 * 00367 * \section Features 00368 * 00369 \verbatim 00370 Data Types: Byte and UShort 00371 Color Spaces: Gray and RGB (Binary saved as Gray, MAP with fixed palette when reading only) 00372 Compressions: 00373 NONE - no compression [default] 00374 RLE - Run Lenght Encoding 00375 Only one image. 00376 Can have an alpha channel (only for IM_RGB) 00377 Internally the components are always packed. 00378 Internally the lines are arranged from bottom up to top. 00379 Handle() returns imBinFile* pointer. 00380 00381 Attributes: 00382 Description (string) 00383 \endverbatim 00384 * \ingroup format */ 00385 void imFormatRegisterSGI(void); 00386 00387 /** \defgroup pcx PCX - ZSoft Picture 00388 * \section Description 00389 * 00390 * \par 00391 * Copyright ZSoft Corporation. \n 00392 * ZSoft (1988) PCX Technical Reference Manual. 00393 * \par 00394 * Internal Implementation. 00395 * 00396 * \section Features 00397 * 00398 \verbatim 00399 Data Types: Byte 00400 Color Spaces: RGB, MAP and Binary (Gray saved as MAP) 00401 Compressions: 00402 NONE - no compression 00403 RLE - Run Lenght Encoding [default - since uncompressed PCX is not well supported] 00404 Only one image. 00405 No alpha channel. 00406 Internally the components are always packed. 00407 Internally the lines are arranged from top down to bottom. 00408 Handle() returns imBinFile* pointer. 00409 00410 Attributes: 00411 ResolutionUnit (string) ["DPC", "DPI"] 00412 XResolution, YResolution IM_FLOAT (1) 00413 XScreen, YScreen IM_USHORT (1) screen position 00414 00415 Comments: 00416 Reads Versions 0-5, but writes Version 5 always. 00417 \endverbatim 00418 * \ingroup format */ 00419 void imFormatRegisterPCX(void); 00420 00421 /** \defgroup tga TGA - Truevision Graphics Adapter File 00422 * \section Description 00423 * 00424 * \par 00425 * Truevision TGA File Format Specification Version 2.0 \n 00426 * Technical Manual Version 2.2 January, 1991 \n 00427 * Copyright 1989, 1990, 1991 Truevision, Inc. 00428 * \par 00429 * Internal Implementation. 00430 * 00431 * \section Features 00432 * 00433 \verbatim 00434 Supports 8 bits per component only. Data type is always Byte. 00435 Color Spaces: Gray, RGB and MAP (Binary saved as Gray) 00436 Compressions: 00437 NONE - no compression [default] 00438 RLE - Run Lenght Encoding 00439 Only one image. 00440 No alpha channel. 00441 Internally the components are always packed. 00442 Internally the lines are arranged from bottom up to top or from top down to bottom. 00443 Handle() returns imBinFile* pointer. 00444 00445 Attributes: 00446 XScreen, YScreen IM_USHORT (1) screen position 00447 Title, Author, Description, JobName, Software (string) 00448 SoftwareVersion (read only) (string) 00449 DateTimeModified (string) [when writing uses the current system time] 00450 Gamma IM_FLOAT (1) 00451 \endverbatim 00452 * \ingroup format */ 00453 void imFormatRegisterTGA(void); 00454 00455 /** \defgroup pnm PNM - Netpbm Portable Image Map 00456 * \section Description 00457 * 00458 * \par 00459 * PNM formats Copyright Jef Poskanzer 00460 * \par 00461 * Internal Implementation. 00462 * 00463 * \section Features 00464 * 00465 \verbatim 00466 Data Types: Byte and UShort 00467 Color Spaces: Gray, RGB and Binary 00468 Compressions: 00469 NONE - no compression [default] 00470 ASCII (textual data) 00471 Can have more than one image, but sequencial access only. 00472 No alpha channel. 00473 Internally the components are always packed. 00474 Internally the lines are arranged from top down to bottom. 00475 Handle() returns imBinFile* pointer. 00476 00477 Attributes: 00478 Description (string) 00479 00480 Comments: 00481 In fact ASCII is an expansion... 00482 \endverbatim 00483 * \ingroup format */ 00484 void imFormatRegisterPNM(void); 00485 00486 /** \defgroup ico ICO - Windows Icon 00487 * \section Description 00488 * 00489 * \par 00490 * Windows Copyright Microsoft Corporation. 00491 * \par 00492 * Internal Implementation. 00493 * 00494 * \section Features 00495 * 00496 \verbatim 00497 Data Types: Byte 00498 Color Spaces: RGB, MAP and Binary (Gray saved as MAP) 00499 Compressions: 00500 NONE - no compression [default] 00501 Can have more than one image. But writing is limited to 5 images, 00502 and all images must have different sizes and bpp. 00503 No alpha channel. 00504 Internally the components are always packed. 00505 Internally the lines are arranged from bottom up to top. 00506 Handle() returns imBinFile* pointer. 00507 00508 Attributes: 00509 none 00510 00511 Comments: 00512 If the user specifies an alpha channel, the AND mask is loaded as alpha, 00513 but the file color mode never contains the IM_ALPHA flag. 00514 Although any size and bpp can be used is recomended to use the typical configurations: 00515 16x16, 32x32, 48x48, 64x64 or 96x96 00516 2 colors, 16 colors or 256 colors 00517 \endverbatim 00518 * \ingroup format */ 00519 void imFormatRegisterICO(void); 00520 00521 /** \defgroup krn KRN - IM Kernel File Format 00522 * \section Description 00523 * 00524 * \par 00525 * Textual format to provied a simple way to create kernel convolution images. 00526 * \par 00527 * Internal Implementation. 00528 * 00529 * \section Features 00530 * 00531 \verbatim 00532 Data Types: Byte, Int 00533 Color Spaces: Gray 00534 Compressions: 00535 NONE - no compression [default] 00536 Only one image. 00537 No alpha channel. 00538 Internally the lines are arranged from top down to bottom. 00539 Handle() returns imBinFile* pointer. 00540 00541 Attributes: 00542 Description (string) 00543 00544 Comments: 00545 The format is very simple, inspired by PNM. 00546 It was developed because PNM does not have support for INT and FLOAT. 00547 Remeber that usually convolution operations use kernel size an odd number. 00548 00549 Format Model: 00550 IMKERNEL 00551 Description up to 512 characters 00552 width height 00553 type (0 - IM_INT, 1 - IM_FLOAT) 00554 data... 00555 00556 Example: 00557 IMKERNEL 00558 Gradian 00559 3 3 00560 0 00561 0 -1 0 00562 0 1 0 00563 0 0 0 00564 \endverbatim 00565 * \ingroup format */ 00566 void imFormatRegisterKRN(void); 00567 00568 00569 #if defined(__cplusplus) 00570 } 00571 #endif 00572 00573 #endif