ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/tiff.h
(Generate patch)

Comparing ray/src/common/tiff.h (file contents):
Revision 3.11 by greg, Tue Sep 9 15:01:22 2003 UTC vs.
Revision 3.12 by greg, Wed Jul 13 15:25:46 2005 UTC

# Line 1 | Line 1
1 < /* $Header$ */
2 <
1 > /* RCSid $Id$ */
2   /*
3   * Copyright (c) 1988-1997 Sam Leffler
4   * Copyright (c) 1991-1997 Silicon Graphics, Inc.
# Line 36 | Line 35
35   *    Suite 200
36   *    Seattle, WA  98104
37   *    206-622-5500
38 + *    
39 + *    (http://partners.adobe.com/asn/developer/PDFS/TN/TIFF6.pdf)
40 + *
41 + * For Big TIFF design notes see the following link
42 + *    http://gdal.maptools.org/twiki/bin/view/libtiff/BigTIFFDesign
43   */
44 < #define TIFF_VERSION    42
44 > #define TIFF_VERSION            42
45 > #define TIFF_BIGTIFF_VERSION    43
46  
47   #define TIFF_BIGENDIAN          0x4d4d
48   #define TIFF_LITTLEENDIAN       0x4949
# Line 51 | Line 56
56   *
57   * See http://bugzilla.remotesensing.org/show_bug.cgi?id=39
58   */
59 < #if defined(_H_INTTYPES) && defined(_ALL_SOURCE)
59 > #if defined(_H_INTTYPES) && defined(_ALL_SOURCE) && defined(USING_VISUALAGE)
60  
56 #ifndef _TIFF_DATA_TYPEDEFS_
61   #define _TIFF_DATA_TYPEDEFS_
62   typedef unsigned char uint8;
63   typedef unsigned short uint16;
64   typedef unsigned int uint32;
61 #endif
65  
66   #endif
67  
# Line 73 | Line 76 | typedef unsigned int uint32;
76   #ifndef _TIFF_DATA_TYPEDEFS_
77   #define _TIFF_DATA_TYPEDEFS_
78  
76 #ifdef __STDC__
79   typedef signed char int8;       /* NB: non-ANSI compilers may not grok */
78 #else
79 typedef char int8;
80 #endif
80   typedef unsigned char uint8;
81   typedef short int16;
82   typedef unsigned short uint16;  /* sizeof (uint16) must == 2 */
83 < #if defined(__alpha) || (defined(_MIPS_SZLONG) && _MIPS_SZLONG == 64) || defined(__LP64__)
83 > #if defined(__alpha) || (defined(_MIPS_SZLONG) && _MIPS_SZLONG == 64) || defined(__LP64__) || defined(__arch64__) || defined(__sparcv9)
84   typedef int int32;
85   typedef unsigned int uint32;    /* sizeof (uint32) must == 4 */
86   #else
87   typedef long int32;
88   typedef unsigned long uint32;   /* sizeof (uint32) must == 4 */
89   #endif
90 +
91   #endif /* _TIFF_DATA_TYPEDEFS_ */
92  
93 < /*      For TIFFReassignTagToIgnore */
93 > /* For TIFFReassignTagToIgnore */
94   enum TIFFIgnoreSense /* IGNORE tag table */
95   {
96          TIS_STORE,
# Line 98 | Line 98 | enum TIFFIgnoreSense /* IGNORE tag table */
98          TIS_EMPTY
99   };
100  
101 + /*
102 + * TIFF header.
103 + */
104   typedef struct {
105          uint16  tiff_magic;     /* magic number (defines byte order) */
106 + #define TIFF_MAGIC_SIZE         2
107          uint16  tiff_version;   /* TIFF version number */
108 + #define TIFF_VERSION_SIZE       2
109          uint32  tiff_diroff;    /* byte offset to first directory */
110 + #define TIFF_DIROFFSET_SIZE     4
111   } TIFFHeader;
112  
113 +
114   /*
115 < * TIFF Image File Directories are comprised of
116 < * a table of field descriptors of the form shown
117 < * below.  The table is sorted in ascending order
118 < * by tag.  The values associated with each entry
119 < * are disjoint and may appear anywhere in the file
113 < * (so long as they are placed on a word boundary).
115 > * TIFF Image File Directories are comprised of a table of field
116 > * descriptors of the form shown below.  The table is sorted in
117 > * ascending order by tag.  The values associated with each entry are
118 > * disjoint and may appear anywhere in the file (so long as they are
119 > * placed on a word boundary).
120   *
121 < * If the value is 4 bytes or less, then it is placed
122 < * in the offset field to save space.  If the value
123 < * is less than 4 bytes, it is left-justified in the
118 < * offset field.
121 > * If the value is 4 bytes or less, then it is placed in the offset
122 > * field to save space.  If the value is less than 4 bytes, it is
123 > * left-justified in the offset field.
124   */
125   typedef struct {
126 <        uint16  tdir_tag;       /* see below */
127 <        uint16  tdir_type;      /* data type; see below */
128 <        uint32  tdir_count;     /* number of items; length in spec */
129 <        uint32  tdir_offset;    /* byte offset to field data */
126 >        uint16          tdir_tag;       /* see below */
127 >        uint16          tdir_type;      /* data type; see below */
128 >        uint32          tdir_count;     /* number of items; length in spec */
129 >        uint32          tdir_offset;    /* byte offset to field data */
130   } TIFFDirEntry;
131  
132   /*
# Line 130 | Line 135 | typedef        struct {
135   *  - items marked with a ! are introduced in revision 6.0.
136   *  - items marked with a % are introduced post revision 6.0.
137   *  - items marked with a $ are obsoleted by revision 6.0.
138 + *  - items marked with a & are introduced by Adobe DNG specification.
139   */
140  
141   /*
# Line 150 | Line 156 | typedef        enum {
156          TIFF_SLONG      = 9,    /* !32-bit signed integer */
157          TIFF_SRATIONAL  = 10,   /* !64-bit signed fraction */
158          TIFF_FLOAT      = 11,   /* !32-bit IEEE floating point */
159 <        TIFF_DOUBLE     = 12    /* !64-bit IEEE floating point */
159 >        TIFF_DOUBLE     = 12,   /* !64-bit IEEE floating point */
160 >        TIFF_IFD        = 13    /* %32-bit unsigned integer (offset) */
161   } TIFFDataType;
162  
163   /*
# Line 181 | Line 188 | typedef        enum {
188   #define     COMPRESSION_CCITTRLEW       32771   /* #1 w/ word alignment */
189   #define     COMPRESSION_PACKBITS        32773   /* Macintosh RLE */
190   #define     COMPRESSION_THUNDERSCAN     32809   /* ThunderScan RLE */
191 < /* codes 32895-32898 are reserved for ANSI IT8 TIFF/IT <[email protected]) */
191 > /* codes 32895-32898 are reserved for ANSI IT8 TIFF/IT <[email protected]) */
192   #define     COMPRESSION_IT8CTPAD        32895   /* IT8 CT w/padding */
193   #define     COMPRESSION_IT8LW           32896   /* IT8 Linework RLE */
194   #define     COMPRESSION_IT8MP           32897   /* IT8 Monochrome picture */
# Line 190 | Line 197 | typedef        enum {
197   #define     COMPRESSION_PIXARFILM       32908   /* Pixar companded 10bit LZW */
198   #define     COMPRESSION_PIXARLOG        32909   /* Pixar companded 11bit ZIP */
199   #define     COMPRESSION_DEFLATE         32946   /* Deflate compression */
200 < #define     COMPRESSION_ADOBE_DEFLATE   8       /* Deflate compression, as recognized by Adobe */
200 > #define     COMPRESSION_ADOBE_DEFLATE   8       /* Deflate compression,
201 >                                                   as recognized by Adobe */
202   /* compression code 32947 is reserved for Oceana Matrix <[email protected]> */
203   #define     COMPRESSION_DCS             32947   /* Kodak DCS encoding */
204   #define     COMPRESSION_JBIG            34661   /* ISO JBIG */
205   #define     COMPRESSION_SGILOG          34676   /* SGI Log Luminance RLE */
206   #define     COMPRESSION_SGILOG24        34677   /* SGI Log 24-bit packed */
207 + #define     COMPRESSION_JP2000          34712   /* Leadtools JPEG2000 */
208   #define TIFFTAG_PHOTOMETRIC             262     /* photometric interpretation */
209   #define     PHOTOMETRIC_MINISWHITE      0       /* min value is white */
210   #define     PHOTOMETRIC_MINISBLACK      1       /* min value is black */
# Line 205 | Line 214 | typedef        enum {
214   #define     PHOTOMETRIC_SEPARATED       5       /* !color separations */
215   #define     PHOTOMETRIC_YCBCR           6       /* !CCIR 601 */
216   #define     PHOTOMETRIC_CIELAB          8       /* !1976 CIE L*a*b* */
217 + #define     PHOTOMETRIC_ICCLAB          9       /* ICC L*a*b* [Adobe TIFF Technote 4] */
218   #define     PHOTOMETRIC_ITULAB          10      /* ITU L*a*b* */
219   #define     PHOTOMETRIC_LOGL            32844   /* CIE Log2(L) */
220   #define     PHOTOMETRIC_LOGLUV          32845   /* CIE Log2(L) (u',v') */
# Line 278 | Line 288 | typedef        enum {
288   #define TIFFTAG_ARTIST                  315     /* creator of image */
289   #define TIFFTAG_HOSTCOMPUTER            316     /* machine where created */
290   #define TIFFTAG_PREDICTOR               317     /* prediction scheme w/ LZW */
291 + #define     PREDICTOR_NONE              1       /* no prediction scheme used */
292 + #define     PREDICTOR_HORIZONTAL        2       /* horizontal differencing */
293 + #define     PREDICTOR_FLOATINGPOINT     3       /* floating point predictor */
294   #define TIFFTAG_WHITEPOINT              318     /* image white point */
295   #define TIFFTAG_PRIMARYCHROMATICITIES   319     /* !primary chromaticities */
296   #define TIFFTAG_COLORMAP                320     /* RGB map for pallette image */
297   #define TIFFTAG_HALFTONEHINTS           321     /* !highlight+shadow info */
298 < #define TIFFTAG_TILEWIDTH               322     /* !rows/data tile */
299 < #define TIFFTAG_TILELENGTH              323     /* !cols/data tile */
298 > #define TIFFTAG_TILEWIDTH               322     /* !tile width in pixels */
299 > #define TIFFTAG_TILELENGTH              323     /* !tile height in pixels */
300   #define TIFFTAG_TILEOFFSETS             324     /* !offsets to data tiles */
301   #define TIFFTAG_TILEBYTECOUNTS          325     /* !byte counts for tiles */
302   #define TIFFTAG_BADFAXLINES             326     /* lines w/ wrong pixel count */
# Line 294 | Line 307 | typedef        enum {
307   #define TIFFTAG_CONSECUTIVEBADFAXLINES  328     /* max consecutive bad lines */
308   #define TIFFTAG_SUBIFD                  330     /* subimage descriptors */
309   #define TIFFTAG_INKSET                  332     /* !inks in separated image */
310 < #define     INKSET_CMYK                 1       /* !cyan-magenta-yellow-black */
310 > #define     INKSET_CMYK                 1       /* !cyan-magenta-yellow-black color */
311 > #define     INKSET_MULTIINK             2       /* !multi-ink or hi-fi color */
312   #define TIFFTAG_INKNAMES                333     /* !ascii names of inks */
313   #define TIFFTAG_NUMBEROFINKS            334     /* !number of inks */
314   #define TIFFTAG_DOTRANGE                336     /* !0% and 100% dot codes */
# Line 312 | Line 326 | typedef        enum {
326   #define     SAMPLEFORMAT_COMPLEXIEEEFP  6       /* !complex ieee floating */
327   #define TIFFTAG_SMINSAMPLEVALUE         340     /* !variable MinSampleValue */
328   #define TIFFTAG_SMAXSAMPLEVALUE         341     /* !variable MaxSampleValue */
329 + #define TIFFTAG_CLIPPATH                343     /* %ClipPath
330 +                                                   [Adobe TIFF technote 2] */
331 + #define TIFFTAG_XCLIPPATHUNITS          344     /* %XClipPathUnits
332 +                                                   [Adobe TIFF technote 2] */
333 + #define TIFFTAG_YCLIPPATHUNITS          345     /* %YClipPathUnits
334 +                                                   [Adobe TIFF technote 2] */
335 + #define TIFFTAG_INDEXED                 346     /* %Indexed
336 +                                                   [Adobe TIFF Technote 3] */
337   #define TIFFTAG_JPEGTABLES              347     /* %JPEG table stream */
338 + #define TIFFTAG_OPIPROXY                351     /* %OPI Proxy [Adobe TIFF technote] */
339   /*
340 < * Tags 512-521 are obsoleted by Technical Note #2
341 < * which specifies a revised JPEG-in-TIFF scheme.
340 > * Tags 512-521 are obsoleted by Technical Note #2 which specifies a
341 > * revised JPEG-in-TIFF scheme.
342   */
343   #define TIFFTAG_JPEGPROC                512     /* !JPEG processing algorithm */
344   #define     JPEGPROC_BASELINE           1       /* !baseline sequential */
# Line 334 | Line 357 | typedef        enum {
357   #define     YCBCRPOSITION_CENTERED      1       /* !as in PostScript Level 2 */
358   #define     YCBCRPOSITION_COSITED       2       /* !as in CCIR 601-1 */
359   #define TIFFTAG_REFERENCEBLACKWHITE     532     /* !colorimetry info */
360 + #define TIFFTAG_XMLPACKET               700     /* %XML packet
361 +                                                   [Adobe XMP Specification,
362 +                                                   January 2004 */
363 + #define TIFFTAG_OPIIMAGEID              32781   /* %OPI ImageID
364 +                                                   [Adobe TIFF technote] */
365   /* tags 32952-32956 are private tags registered to Island Graphics */
366   #define TIFFTAG_REFPTS                  32953   /* image reference points */
367   #define TIFFTAG_REGIONTACKPOINT         32954   /* region-xform tack point */
# Line 367 | Line 395 | typedef        enum {
395   /* tag 33432 is listed in the 6.0 spec w/ unknown ownership */
396   #define TIFFTAG_COPYRIGHT               33432   /* copyright string */
397   /* IPTC TAG from RichTIFF specifications */
398 < #define TIFFTAG_RICHTIFFIPTC    33723
399 < /* 34016-34029 are reserved for ANSI IT8 TIFF/IT <[email protected]) */
398 > #define TIFFTAG_RICHTIFFIPTC            33723
399 > /* 34016-34029 are reserved for ANSI IT8 TIFF/IT <[email protected]) */
400   #define TIFFTAG_IT8SITE                 34016   /* site name */
401   #define TIFFTAG_IT8COLORSEQUENCE        34017   /* color seq. [RGB,CMYK,etc] */
402   #define TIFFTAG_IT8HEADER               34018   /* DDES Header */
# Line 383 | Line 411 | typedef        enum {
411   #define TIFFTAG_IT8PIXELINTENSITYRANGE  34027   /* MP pixel intensity value */
412   #define TIFFTAG_IT8TRANSPARENCYINDICATOR 34028  /* HC transparency switch */
413   #define TIFFTAG_IT8COLORCHARACTERIZATION 34029  /* color character. table */
414 + #define TIFFTAG_IT8HCUSAGE              34030   /* HC usage indicator */
415 + #define TIFFTAG_IT8TRAPINDICATOR        34031   /* Trapping indicator
416 +                                                   (untrapped=0, trapped=1) */
417 + #define TIFFTAG_IT8CMYKEQUIVALENT       34032   /* CMYK color equivalents */
418   /* tags 34232-34236 are private tags registered to Texas Instruments */
419   #define TIFFTAG_FRAMECOUNT              34232   /* Sequence Frame Count */
420 + /* tag 34377 is private tag registered to Adobe for PhotoShop */
421 + #define TIFFTAG_PHOTOSHOP               34377
422 + /* tags 34665, 34853 and 40965 are documented in EXIF specification */
423 + #define TIFFTAG_EXIFIFD                 34665   /* Pointer to EXIF private directory */
424   /* tag 34750 is a private tag registered to Adobe? */
425   #define TIFFTAG_ICCPROFILE              34675   /* ICC profile data */
390 /* tag 34377 is private tag registered to Adobe for PhotoShop */
391 #define TIFFTAG_PHOTOSHOP                               34377
426   /* tag 34750 is a private tag registered to Pixel Magic */
427   #define TIFFTAG_JBIGOPTIONS             34750   /* JBIG options */
428 + #define TIFFTAG_GPSIFD                  34853   /* Pointer to GPS private directory */
429   /* tags 34908-34914 are private tags registered to SGI */
430   #define TIFFTAG_FAXRECVPARAMS           34908   /* encoded Class 2 ses. parms */
431   #define TIFFTAG_FAXSUBADDRESS           34909   /* received SubAddr string */
432   #define TIFFTAG_FAXRECVTIME             34910   /* receive time (secs) */
433 + #define TIFFTAG_FAXDCS                  34911   /* encoded fax ses. params, Table 2/T.30 */
434   /* tags 37439-37443 are registered to SGI <[email protected]> */
435   #define TIFFTAG_STONITS                 37439   /* Sample value to Nits */
436   /* tag 34929 is a private tag registered to FedEx */
437   #define TIFFTAG_FEDEX_EDR               34929   /* unknown use */
438 + #define TIFFTAG_INTEROPERABILITYIFD     40965   /* Pointer to Interoperability private directory */
439 + /* Adobe Digital Negative (DNG) format tags */
440 + #define TIFFTAG_DNGVERSION              50706   /* &DNG version number */
441 + #define TIFFTAG_DNGBACKWARDVERSION      50707   /* &DNG compatibility version */
442 + #define TIFFTAG_UNIQUECAMERAMODEL       50708   /* &name for the camera model */
443 + #define TIFFTAG_LOCALIZEDCAMERAMODEL    50709   /* &localized camera model
444 +                                                   name */
445 + #define TIFFTAG_CFAPLANECOLOR           50710   /* &CFAPattern->LinearRaw space
446 +                                                   mapping */
447 + #define TIFFTAG_CFALAYOUT               50711   /* &spatial layout of the CFA */
448 + #define TIFFTAG_LINEARIZATIONTABLE      50712   /* &lookup table description */
449 + #define TIFFTAG_BLACKLEVELREPEATDIM     50713   /* &repeat pattern size for
450 +                                                   the BlackLevel tag */
451 + #define TIFFTAG_BLACKLEVEL              50714   /* &zero light encoding level */
452 + #define TIFFTAG_BLACKLEVELDELTAH        50715   /* &zero light encoding level
453 +                                                   differences (columns) */
454 + #define TIFFTAG_BLACKLEVELDELTAV        50716   /* &zero light encoding level
455 +                                                   differences (rows) */
456 + #define TIFFTAG_WHITELEVEL              50717   /* &fully saturated encoding
457 +                                                   level */
458 + #define TIFFTAG_DEFAULTSCALE            50718   /* &default scale factors */
459 + #define TIFFTAG_DEFAULTCROPORIGIN       50719   /* &origin of the final image
460 +                                                   area */
461 + #define TIFFTAG_DEFAULTCROPSIZE         50720   /* &size of the final image
462 +                                                   area */
463 + #define TIFFTAG_COLORMATRIX1            50721   /* &XYZ->reference color space
464 +                                                   transformation matrix 1 */
465 + #define TIFFTAG_COLORMATRIX2            50722   /* &XYZ->reference color space
466 +                                                   transformation matrix 2 */
467 + #define TIFFTAG_CAMERACALIBRATION1      50723   /* &calibration matrix 1 */
468 + #define TIFFTAG_CAMERACALIBRATION2      50724   /* &calibration matrix 2 */
469 + #define TIFFTAG_REDUCTIONMATRIX1        50725   /* &dimensionality reduction
470 +                                                   matrix 1 */
471 + #define TIFFTAG_REDUCTIONMATRIX2        50726   /* &dimensionality reduction
472 +                                                   matrix 2 */
473 + #define TIFFTAG_ANALOGBALANCE           50727   /* &gain applied the stored raw
474 +                                                   values*/
475 + #define TIFFTAG_ASSHOTNEUTRAL           50728   /* &selected white balance in
476 +                                                   linear reference space */
477 + #define TIFFTAG_ASSHOTWHITEXY           50729   /* &selected white balance in
478 +                                                   x-y chromaticity
479 +                                                   coordinates */
480 + #define TIFFTAG_BASELINEEXPOSURE        50730   /* &how much to move the zero
481 +                                                   point */
482 + #define TIFFTAG_BASELINENOISE           50731   /* &relative noise level */
483 + #define TIFFTAG_BASELINESHARPNESS       50732   /* &relative amount of
484 +                                                   sharpening */
485 + #define TIFFTAG_BAYERGREENSPLIT         50733   /* &how closely the values of
486 +                                                   the green pixels in the
487 +                                                   blue/green rows track the
488 +                                                   values of the green pixels
489 +                                                   in the red/green rows */
490 + #define TIFFTAG_LINEARRESPONSELIMIT     50734   /* &non-linear encoding range */
491 + #define TIFFTAG_CAMERASERIALNUMBER      50735   /* &camera's serial number */
492 + #define TIFFTAG_LENSINFO                50736   /* info about the lens */
493 + #define TIFFTAG_CHROMABLURRADIUS        50737   /* &chroma blur radius */
494 + #define TIFFTAG_ANTIALIASSTRENGTH       50738   /* &relative strength of the
495 +                                                   camera's anti-alias filter */
496 + #define TIFFTAG_SHADOWSCALE             50739   /* &used by Adobe Camera Raw */
497 + #define TIFFTAG_DNGPRIVATEDATA          50740   /* &manufacturer's private data */
498 + #define TIFFTAG_MAKERNOTESAFETY         50741   /* &whether the EXIF MakerNote
499 +                                                   tag is safe to preserve
500 +                                                   along with the rest of the
501 +                                                   EXIF data */
502 + #define TIFFTAG_CALIBRATIONILLUMINANT1  50778   /* &illuminant 1 */
503 + #define TIFFTAG_CALIBRATIONILLUMINANT2  50779   /* &illuminant 2 */
504 + #define TIFFTAG_BESTQUALITYSCALE        50780   /* &best quality multiplier */
505 + #define TIFFTAG_RAWDATAUNIQUEID         50781   /* &unique identifier for
506 +                                                   the raw image data */
507 + #define TIFFTAG_ORIGINALRAWFILENAME     50827   /* &file name of the original
508 +                                                   raw file */
509 + #define TIFFTAG_ORIGINALRAWFILEDATA     50828   /* &contents of the original
510 +                                                   raw file */
511 + #define TIFFTAG_ACTIVEAREA              50829   /* &active (non-masked) pixels
512 +                                                   of the sensor */
513 + #define TIFFTAG_MASKEDAREAS             50830   /* &list of coordinates
514 +                                                   of fully masked pixels */
515 + #define TIFFTAG_ASSHOTICCPROFILE        50831   /* &these two tags used to */
516 + #define TIFFTAG_ASSHOTPREPROFILEMATRIX  50832   /* map cameras's color space
517 +                                                   into ICC profile space */
518 + #define TIFFTAG_CURRENTICCPROFILE       50833   /* & */
519 + #define TIFFTAG_CURRENTPREPROFILEMATRIX 50834   /* & */
520   /* tag 65535 is an undefined tag used by Eastman Kodak */
521   #define TIFFTAG_DCSHUESHIFTVALUES       65535   /* hue shift correction data */
522  
523   /*
524 < * The following are ``pseudo tags'' that can be
525 < * used to control codec-specific functionality.
526 < * These tags are not written to file.  Note that
527 < * these values start at 0xffff+1 so that they'll
410 < * never collide with Aldus-assigned tags.
524 > * The following are ``pseudo tags'' that can be used to control
525 > * codec-specific functionality.  These tags are not written to file.
526 > * Note that these values start at 0xffff+1 so that they'll never
527 > * collide with Aldus-assigned tags.
528   *
529 < * If you want your private pseudo tags ``registered''
530 < * (i.e. added to this file), send mail to [email protected]
531 < * with the appropriate C definitions to add.
529 > * If you want your private pseudo tags ``registered'' (i.e. added to
530 > * this file), please post a bug report via the tracking system at
531 > * http://www.remotesensing.org/libtiff/bugs.html with the appropriate
532 > * C definitions to add.
533   */
534   #define TIFFTAG_FAXMODE                 65536   /* Group 3/4 format control */
535   #define     FAXMODE_CLASSIC     0x0000          /* default, include RTC */
# Line 468 | Line 586 | typedef        enum {
586   #define     SGILOGENCODE_NODITHER       0     /* do not dither encoded values*/
587   #define     SGILOGENCODE_RANDITHER      1     /* randomly dither encd values */
588   #endif /* _TIFF_ */
589 +
590 + /* vim: set ts=8 sts=8 sw=8 noet: */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines