...

Source file src/golang.org/x/image/tiff/consts.go

Documentation: golang.org/x/image/tiff

     1  // Copyright 2011 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package tiff
     6  
     7  // A tiff image file contains one or more images. The metadata
     8  // of each image is contained in an Image File Directory (IFD),
     9  // which contains entries of 12 bytes each and is described
    10  // on page 14-16 of the specification. An IFD entry consists of
    11  //
    12  //  - a tag, which describes the signification of the entry,
    13  //  - the data type and length of the entry,
    14  //  - the data itself or a pointer to it if it is more than 4 bytes.
    15  //
    16  // The presence of a length means that each IFD is effectively an array.
    17  
    18  const (
    19  	leHeader = "II\x2A\x00" // Header for little-endian files.
    20  	beHeader = "MM\x00\x2A" // Header for big-endian files.
    21  
    22  	ifdLen = 12 // Length of an IFD entry in bytes.
    23  )
    24  
    25  // Data types (p. 14-16 of the spec).
    26  const (
    27  	dtByte     = 1
    28  	dtASCII    = 2
    29  	dtShort    = 3
    30  	dtLong     = 4
    31  	dtRational = 5
    32  )
    33  
    34  // The length of one instance of each data type in bytes.
    35  var lengths = [...]uint32{0, 1, 1, 2, 4, 8}
    36  
    37  // Tags (see p. 28-41 of the spec).
    38  const (
    39  	tImageWidth                = 256
    40  	tImageLength               = 257
    41  	tBitsPerSample             = 258
    42  	tCompression               = 259
    43  	tPhotometricInterpretation = 262
    44  
    45  	tFillOrder = 266
    46  
    47  	tStripOffsets    = 273
    48  	tSamplesPerPixel = 277
    49  	tRowsPerStrip    = 278
    50  	tStripByteCounts = 279
    51  
    52  	tT4Options = 292 // CCITT Group 3 options, a set of 32 flag bits.
    53  	tT6Options = 293 // CCITT Group 4 options, a set of 32 flag bits.
    54  
    55  	tTileWidth      = 322
    56  	tTileLength     = 323
    57  	tTileOffsets    = 324
    58  	tTileByteCounts = 325
    59  
    60  	tXResolution    = 282
    61  	tYResolution    = 283
    62  	tResolutionUnit = 296
    63  
    64  	tPredictor    = 317
    65  	tColorMap     = 320
    66  	tExtraSamples = 338
    67  	tSampleFormat = 339
    68  )
    69  
    70  // Compression types (defined in various places in the spec and supplements).
    71  const (
    72  	cNone       = 1
    73  	cCCITT      = 2
    74  	cG3         = 3 // Group 3 Fax.
    75  	cG4         = 4 // Group 4 Fax.
    76  	cLZW        = 5
    77  	cJPEGOld    = 6 // Superseded by cJPEG.
    78  	cJPEG       = 7
    79  	cDeflate    = 8 // zlib compression.
    80  	cPackBits   = 32773
    81  	cDeflateOld = 32946 // Superseded by cDeflate.
    82  )
    83  
    84  // Photometric interpretation values (see p. 37 of the spec).
    85  const (
    86  	pWhiteIsZero = 0
    87  	pBlackIsZero = 1
    88  	pRGB         = 2
    89  	pPaletted    = 3
    90  	pTransMask   = 4 // transparency mask
    91  	pCMYK        = 5
    92  	pYCbCr       = 6
    93  	pCIELab      = 8
    94  )
    95  
    96  // Values for the tPredictor tag (page 64-65 of the spec).
    97  const (
    98  	prNone       = 1
    99  	prHorizontal = 2
   100  )
   101  
   102  // Values for the tResolutionUnit tag (page 18).
   103  const (
   104  	resNone    = 1
   105  	resPerInch = 2 // Dots per inch.
   106  	resPerCM   = 3 // Dots per centimeter.
   107  )
   108  
   109  // imageMode represents the mode of the image.
   110  type imageMode int
   111  
   112  const (
   113  	mBilevel imageMode = iota
   114  	mPaletted
   115  	mGray
   116  	mGrayInvert
   117  	mRGB
   118  	mRGBA
   119  	mNRGBA
   120  	mCMYK
   121  )
   122  
   123  // CompressionType describes the type of compression used in Options.
   124  type CompressionType int
   125  
   126  // Constants for supported compression types.
   127  const (
   128  	Uncompressed CompressionType = iota
   129  	Deflate
   130  	LZW
   131  	CCITTGroup3
   132  	CCITTGroup4
   133  )
   134  
   135  // specValue returns the compression type constant from the TIFF spec that
   136  // is equivalent to c.
   137  func (c CompressionType) specValue() uint32 {
   138  	switch c {
   139  	case LZW:
   140  		return cLZW
   141  	case Deflate:
   142  		return cDeflate
   143  	case CCITTGroup3:
   144  		return cG3
   145  	case CCITTGroup4:
   146  		return cG4
   147  	}
   148  	return cNone
   149  }
   150  

View as plain text