Codec.Picture.Metadata.Exif

JuicyPixels-3.3.9: Picture loading/serialization (in png, jpeg, bitmap, gif, tga, tiff and radiance)

Safe Haskell | None
Language | Haskell2010

Codec.Picture.Metadata.Exif

Description

This module provide a totally partial and incomplete maping of Exif values. Used for Tiff parsing and reused for Exif extraction.

Synopsis

- data ExifTag
  - = TagPhotometricInterpretation
  - | TagCompression
  - | TagImageWidth
  - | TagImageLength
  - | TagXResolution
  - | TagYResolution
  - | TagResolutionUnit
  - | TagRowPerStrip
  - | TagStripByteCounts
  - | TagStripOffsets
  - | TagBitsPerSample
  - | TagColorMap
  - | TagTileWidth
  - | TagTileLength
  - | TagTileOffset
  - | TagTileByteCount
  - | TagSamplesPerPixel
  - | TagArtist
  - | TagDocumentName
  - | TagSoftware
  - | TagPlanarConfiguration
  - | TagOrientation
  - | TagSampleFormat
  - | TagInkSet
  - | TagSubfileType
  - | TagFillOrder
  - | TagYCbCrCoeff
  - | TagYCbCrSubsampling
  - | TagYCbCrPositioning
  - | TagReferenceBlackWhite
  - | TagXPosition
  - | TagYPosition
  - | TagExtraSample
  - | TagImageDescription
  - | TagPredictor
  - | TagCopyright
  - | TagMake
  - | TagModel
  - | TagDateTime
  - | TagGPSInfo
  - | TagLightSource
  - | TagFlash
  - | TagJpegProc
  - | TagJPEGInterchangeFormat
  - | TagJPEGInterchangeFormatLength
  - | TagJPEGRestartInterval
  - | TagJPEGLosslessPredictors
  - | TagJPEGPointTransforms
  - | TagJPEGQTables
  - | TagJPEGDCTables
  - | TagJPEGACTables
  - | TagExifOffset
  - | TagUnknown !Word16
- data ExifData
  - = ExifNone
  - | ExifLong !Word32
  - | ExifShort !Word16
  - | ExifString !ByteString
  - | ExifUndefined !ByteString
  - | ExifShorts !(Vector Word16)
  - | ExifLongs !(Vector Word32)
  - | ExifRational !Word32 !Word32
  - | ExifSignedRational !Int32 !Int32
  - | ExifIFD ![(ExifTag, ExifData)]
- tagOfWord16 :: Word16 -> ExifTag
- word16OfTag :: ExifTag -> Word16
- isInIFD0 :: ExifTag -> Bool

# Documentation

data ExifTag #

Tag values used for exif fields. Completly incomplete

Constructors

TagPhotometricInterpretation |
TagCompression | Short type
TagImageWidth | Short or long type
TagImageLength | Short or long type
TagXResolution | Rational type
TagYResolution | Rational type
TagResolutionUnit |
TagRowPerStrip | Short or long type
TagStripByteCounts | Short or long
TagStripOffsets | Short or long
TagBitsPerSample |
TagColorMap | Short
TagTileWidth |
TagTileLength |
TagTileOffset |
TagTileByteCount |
TagSamplesPerPixel | Short
TagArtist |
TagDocumentName |
TagSoftware |
TagPlanarConfiguration | Short
TagOrientation |
TagSampleFormat | Short
TagInkSet |
TagSubfileType |
TagFillOrder |
TagYCbCrCoeff |
TagYCbCrSubsampling |
TagYCbCrPositioning |
TagReferenceBlackWhite |
TagXPosition |
TagYPosition |
TagExtraSample |
TagImageDescription |
TagPredictor |
TagCopyright |
TagMake |
TagModel |
TagDateTime |
TagGPSInfo |
TagLightSource | Short
TagFlash | Short
TagJpegProc |
TagJPEGInterchangeFormat |
TagJPEGInterchangeFormatLength |
TagJPEGRestartInterval |
TagJPEGLosslessPredictors |
TagJPEGPointTransforms |
TagJPEGQTables |
TagJPEGDCTables |
TagJPEGACTables |
TagExifOffset |
TagUnknown !Word16 |

#### Instances

Instances details

NFData ExifTag # |
Instance details Defined in Codec.Picture.Metadata.Exif Methods rnf :: ExifTag -> () #
Generic ExifTag # |
Instance details Defined in Codec.Picture.Metadata.Exif Associated Types
type Rep ExifTag |
Instance details Defined in Codec.Picture.Metadata.Exif type Rep ExifTag = D1 ('MetaData "ExifTag" "Codec.Picture.Metadata.Exif" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (((((C1 ('MetaCons "TagPhotometricInterpretation" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagCompression" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagImageWidth" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TagImageLength" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagXResolution" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagYResolution" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TagResolutionUnit" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagRowPerStrip" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagStripByteCounts" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TagStripOffsets" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagBitsPerSample" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TagColorMap" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagTileWidth" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "TagTileLength" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagTileOffset" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagTileByteCount" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TagSamplesPerPixel" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagArtist" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagDocumentName" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TagSoftware" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagPlanarConfiguration" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagOrientation" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TagSampleFormat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagInkSet" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TagSubfileType" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagFillOrder" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "TagYCbCrCoeff" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagYCbCrSubsampling" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagYCbCrPositioning" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TagReferenceBlackWhite" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagXPosition" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagYPosition" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TagExtraSample" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagImageDescription" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagPredictor" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TagCopyright" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagMake" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TagModel" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagDateTime" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "TagGPSInfo" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagLightSource" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagFlash" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TagJpegProc" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagJPEGInterchangeFormat" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TagJPEGInterchangeFormatLength" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagJPEGRestartInterval" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TagJPEGLosslessPredictors" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagJPEGPointTransforms" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagJPEGQTables" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TagJPEGDCTables" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagJPEGACTables" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TagExifOffset" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagUnknown" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16))))))))
Methods from :: ExifTag -> Rep ExifTag x # to :: Rep ExifTag x -> ExifTag #
Show ExifTag # |
Instance details Defined in Codec.Picture.Metadata.Exif Methods showsPrec :: Int -> ExifTag -> ShowS # show :: ExifTag -> String # showList :: [ExifTag] -> ShowS #
Eq ExifTag # |
Instance details Defined in Codec.Picture.Metadata.Exif Methods (==) :: ExifTag -> ExifTag -> Bool # (/=) :: ExifTag -> ExifTag -> Bool #
Ord ExifTag # |
Instance details Defined in Codec.Picture.Metadata.Exif Methods compare :: ExifTag -> ExifTag -> Ordering # (<) :: ExifTag -> ExifTag -> Bool # (<=) :: ExifTag -> ExifTag -> Bool # (>) :: ExifTag -> ExifTag -> Bool # (>=) :: ExifTag -> ExifTag -> Bool # max :: ExifTag -> ExifTag -> ExifTag # min :: ExifTag -> ExifTag -> ExifTag #
BinaryParam Endianness ExifTag # |
Instance details Defined in Codec.Picture.Tiff.Internal.Types Methods getP :: Endianness -> Get ExifTag # putP :: Endianness -> ExifTag -> Put #
type Rep ExifTag # |
Instance details Defined in Codec.Picture.Metadata.Exif type Rep ExifTag = D1 ('MetaData "ExifTag" "Codec.Picture.Metadata.Exif" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (((((C1 ('MetaCons "TagPhotometricInterpretation" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagCompression" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagImageWidth" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TagImageLength" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagXResolution" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagYResolution" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TagResolutionUnit" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagRowPerStrip" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagStripByteCounts" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TagStripOffsets" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagBitsPerSample" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TagColorMap" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagTileWidth" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "TagTileLength" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagTileOffset" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagTileByteCount" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TagSamplesPerPixel" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagArtist" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagDocumentName" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TagSoftware" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagPlanarConfiguration" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagOrientation" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TagSampleFormat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagInkSet" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TagSubfileType" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagFillOrder" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "TagYCbCrCoeff" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagYCbCrSubsampling" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagYCbCrPositioning" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TagReferenceBlackWhite" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagXPosition" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagYPosition" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TagExtraSample" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagImageDescription" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagPredictor" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TagCopyright" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagMake" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TagModel" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagDateTime" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "TagGPSInfo" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagLightSource" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagFlash" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TagJpegProc" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagJPEGInterchangeFormat" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TagJPEGInterchangeFormatLength" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagJPEGRestartInterval" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TagJPEGLosslessPredictors" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TagJPEGPointTransforms" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagJPEGQTables" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TagJPEGDCTables" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagJPEGACTables" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TagExifOffset" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TagUnknown" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16))))))))

data ExifData #

Possible data held by an Exif tag

Constructors

ExifNone |
ExifLong !Word32 |
ExifShort !Word16 |
ExifString !ByteString |
ExifUndefined !ByteString |
ExifShorts !(Vector Word16) |
ExifLongs !(Vector Word32) |
ExifRational !Word32 !Word32 |
ExifSignedRational !Int32 !Int32 |
ExifIFD ![(ExifTag, ExifData)] |

#### Instances

Instances details

NFData ExifData # |
Instance details Defined in Codec.Picture.Metadata.Exif Methods rnf :: ExifData -> () #
Generic ExifData # |
Instance details Defined in Codec.Picture.Metadata.Exif Associated Types
type Rep ExifData |
Instance details Defined in Codec.Picture.Metadata.Exif type Rep ExifData = D1 ('MetaData "ExifData" "Codec.Picture.Metadata.Exif" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (((C1 ('MetaCons "ExifNone" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExifLong" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32))) :+: (C1 ('MetaCons "ExifShort" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16)) :+: (C1 ('MetaCons "ExifString" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString)) :+: C1 ('MetaCons "ExifUndefined" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString))))) :+: ((C1 ('MetaCons "ExifShorts" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector Word16))) :+: C1 ('MetaCons "ExifLongs" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector Word32)))) :+: (C1 ('MetaCons "ExifRational" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32)) :+: (C1 ('MetaCons "ExifSignedRational" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int32) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int32)) :+: C1 ('MetaCons "ExifIFD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [(ExifTag, ExifData)]))))))
Methods from :: ExifData -> Rep ExifData x # to :: Rep ExifData x -> ExifData #
Show ExifData # |
Instance details Defined in Codec.Picture.Metadata.Exif Methods showsPrec :: Int -> ExifData -> ShowS # show :: ExifData -> String # showList :: [ExifData] -> ShowS #
Eq ExifData # |
Instance details Defined in Codec.Picture.Metadata.Exif Methods (==) :: ExifData -> ExifData -> Bool # (/=) :: ExifData -> ExifData -> Bool #
BinaryParam (Endianness, Int, ImageFileDirectory) ExifData # |
Instance details Defined in Codec.Picture.Tiff.Internal.Types Methods getP :: (Endianness, Int, ImageFileDirectory) -> Get ExifData # putP :: (Endianness, Int, ImageFileDirectory) -> ExifData -> Put #
type Rep ExifData # |
Instance details Defined in Codec.Picture.Metadata.Exif type Rep ExifData = D1 ('MetaData "ExifData" "Codec.Picture.Metadata.Exif" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (((C1 ('MetaCons "ExifNone" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExifLong" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32))) :+: (C1 ('MetaCons "ExifShort" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16)) :+: (C1 ('MetaCons "ExifString" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString)) :+: C1 ('MetaCons "ExifUndefined" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString))))) :+: ((C1 ('MetaCons "ExifShorts" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector Word16))) :+: C1 ('MetaCons "ExifLongs" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector Word32)))) :+: (C1 ('MetaCons "ExifRational" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32)) :+: (C1 ('MetaCons "ExifSignedRational" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int32) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int32)) :+: C1 ('MetaCons "ExifIFD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [(ExifTag, ExifData)]))))))

tagOfWord16 :: Word16 -> ExifTag #

Convert a value to it's corresponding Exif tag. Will often be written as `TagUnknown`

word16OfTag :: ExifTag -> Word16 #

Convert a tag to it's corresponding value.

isInIFD0 :: ExifTag -> Bool #