Codec.Picture.Jpg.Internal.Types

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

Safe Haskell | None
Language | Haskell2010

Codec.Picture.Jpg.Internal.Types

Description

A good explanation of the JPEG format, including diagrams, is given at: https://github.com/corkami/formats/blob/master/image/jpeg.md

The full spec (excluding EXIF): https://www.w3.org/Graphics/JPEG/itu-t81.pdf

Synopsis

- type MutableMacroBlock s a = STVector s a
- createEmptyMutableMacroBlock :: (Storable a, Num a) => ST s (MutableMacroBlock s a)
- printMacroBlock :: (Storable a, PrintfArg a) => MutableMacroBlock s a -> ST s String
- printPureMacroBlock :: (Storable a, PrintfArg a) => MacroBlock a -> String
- type DcCoefficient = Int16
- data JpgImage = JpgImage {
  - jpgFrame :: [JpgFrame]
  }
- data JpgComponent = JpgComponent {
  - componentIdentifier :: !Word8
  - horizontalSamplingFactor :: !Word8
  - verticalSamplingFactor :: !Word8
  - quantizationTableDest :: !Word8
  }
- data JpgFrameHeader = JpgFrameHeader {
  - jpgFrameHeaderLength :: !Word16
  - jpgSamplePrecision :: !Word8
  - jpgHeight :: !Word16
  - jpgWidth :: !Word16
  - jpgImageComponentCount :: !Word8
  - jpgComponents :: ![JpgComponent]
  }
- data JpgFrame
  - = JpgAppFrame !Word8 ByteString
  - | JpgAdobeAPP14 !JpgAdobeApp14
  - | JpgJFIF !JpgJFIFApp0
  - | JpgExif ![ImageFileDirectory]
  - | JpgExtension !Word8 ByteString
  - | JpgQuantTable ![JpgQuantTableSpec]
  - | JpgHuffmanTable ![(JpgHuffmanTableSpec, HuffmanPackedTree)]
  - | JpgScanBlob !JpgScanHeader !ByteString
  - | JpgScans !JpgFrameKind !JpgFrameHeader
  - | JpgIntervalRestart !Word16
- data JpgFrameKind
  - = JpgBaselineDCTHuffman
  - | JpgExtendedSequentialDCTHuffman
  - | JpgProgressiveDCTHuffman
  - | JpgLosslessHuffman
  - | JpgDifferentialSequentialDCTHuffman
  - | JpgDifferentialProgressiveDCTHuffman
  - | JpgDifferentialLosslessHuffman
  - | JpgExtendedSequentialArithmetic
  - | JpgProgressiveDCTArithmetic
  - | JpgLosslessArithmetic
  - | JpgDifferentialSequentialDCTArithmetic
  - | JpgDifferentialProgressiveDCTArithmetic
  - | JpgDifferentialLosslessArithmetic
  - | JpgQuantizationTable
  - | JpgHuffmanTableMarker
  - | JpgStartOfScan
  - | JpgEndOfImage
  - | JpgAppSegment Word8
  - | JpgExtensionSegment Word8
  - | JpgRestartInterval
  - | JpgRestartIntervalEnd Word8
- data JpgScanHeader = JpgScanHeader {
  - scanLength :: !Word16
  - scanComponentCount :: !Word8
  - scans :: [JpgScanSpecification]
  - spectralSelection :: (Word8, Word8)
  - successiveApproxHigh :: !Word8
  - successiveApproxLow :: !Word8
  }
- data JpgQuantTableSpec = JpgQuantTableSpec {
  - quantPrecision :: !Word8
  - quantDestination :: !Word8
  - quantTable :: MacroBlock Int16
  }
- data JpgHuffmanTableSpec = JpgHuffmanTableSpec {
  - huffmanTableClass :: !DctComponent
  - huffmanTableDest :: !Word8
  - huffSizes :: !(Vector Word8)
  - huffCodes :: !(Vector (Vector Word8))
  }
- data JpgImageKind
  - = BaseLineDCT
  - | ProgressiveDCT
- data JpgScanSpecification = JpgScanSpecification {
  - componentSelector :: !Word8
  - dcEntropyCodingTable :: !Word8
  - acEntropyCodingTable :: !Word8
  }
- data JpgColorSpace
  - = JpgColorSpaceYCbCr
  - | JpgColorSpaceYCC
  - | JpgColorSpaceY
  - | JpgColorSpaceYA
  - | JpgColorSpaceYCCA
  - | JpgColorSpaceYCCK
  - | JpgColorSpaceCMYK
  - | JpgColorSpaceRGB
  - | JpgColorSpaceRGBA
- data AdobeTransform
  - = AdobeUnknown
  - | AdobeYCbCr
  - | AdobeYCck
- data JpgAdobeApp14 = JpgAdobeApp14 {
  - _adobeDctVersion :: !Word16
  - _adobeFlag0 :: !Word16
  - _adobeFlag1 :: !Word16
  - _adobeTransform :: !AdobeTransform
  }
- data JpgJFIFApp0 = JpgJFIFApp0 {
  - _jfifUnit :: !JFifUnit
  - _jfifDpiX :: !Word16
  - _jfifDpiY :: !Word16
  - _jfifThumbnail :: !(Maybe Int)
  }
- data JFifUnit
  - = JFifUnitUnknown
  - | JFifPixelsPerInch
  - | JFifPixelsPerCentimeter
- newtype TableList a = TableList [a]
- newtype RestartInterval = RestartInterval Word16
- getJpgImage :: Get JpgImage
- calculateSize :: SizeCalculable a => a -> Int
- dctBlockSize :: Num a => a
- parseECS :: Get ByteString
- parseECS_simple :: Get ByteString
- skipUntilFrames :: Get ()
- skipFrameMarker :: Get ()
- parseFrameOfKind :: JpgFrameKind -> Get (Maybe JpgFrame)
- parseFrames :: Get [JpgFrame]
- parseFrameKinds :: Get [(JpgFrameKind, Int64, Int64)]
- parseToFirstFrameHeader :: Get (Maybe JpgFrameHeader)

# Documentation

type MutableMacroBlock s a = STVector s a #

Macroblock that can be transformed.

createEmptyMutableMacroBlock :: (Storable a, Num a) => ST s (MutableMacroBlock s a) #

Create a new macroblock with the good array size

printMacroBlock :: (Storable a, PrintfArg a) => MutableMacroBlock s a -> ST s String #

printPureMacroBlock :: (Storable a, PrintfArg a) => MacroBlock a -> String #

type DcCoefficient = Int16 #

Type only used to make clear what kind of integer we are carrying Might be transformed into newtype in the future

data JpgImage #

Constructors

JpgImage |
Fields jpgFrame :: [JpgFrame]

#### Instances

Instances details

Binary JpgImage # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgImage -> Put # get :: Get JpgImage # putList :: [JpgImage] -> Put #
NFData JpgImage # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgImage -> () #
Generic JpgImage # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgImage |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgImage = D1 ('MetaData "JpgImage" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgImage" 'PrefixI 'True) (S1 ('MetaSel ('Just "jpgFrame") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [JpgFrame])))
Methods from :: JpgImage -> Rep JpgImage x # to :: Rep JpgImage x -> JpgImage #
Show JpgImage # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgImage -> ShowS # show :: JpgImage -> String # showList :: [JpgImage] -> ShowS #
Eq JpgImage # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgImage -> JpgImage -> Bool # (/=) :: JpgImage -> JpgImage -> Bool #
type Rep JpgImage # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgImage = D1 ('MetaData "JpgImage" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgImage" 'PrefixI 'True) (S1 ('MetaSel ('Just "jpgFrame") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [JpgFrame])))

data JpgComponent #

Constructors

JpgComponent |
Fields componentIdentifier :: !Word8 horizontalSamplingFactor :: !Word8 Stored with 4 bits verticalSamplingFactor :: !Word8 Stored with 4 bits quantizationTableDest :: !Word8

#### Instances

Instances details

Binary JpgComponent # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgComponent -> Put # get :: Get JpgComponent # putList :: [JpgComponent] -> Put #
NFData JpgComponent # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgComponent -> () #
Generic JpgComponent # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgComponent |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgComponent = D1 ('MetaData "JpgComponent" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgComponent" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentIdentifier") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "horizontalSamplingFactor") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8)) :*: (S1 ('MetaSel ('Just "verticalSamplingFactor") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "quantizationTableDest") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8))))
Methods from :: JpgComponent -> Rep JpgComponent x # to :: Rep JpgComponent x -> JpgComponent #
Show JpgComponent # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgComponent -> ShowS # show :: JpgComponent -> String # showList :: [JpgComponent] -> ShowS #
Eq JpgComponent # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgComponent -> JpgComponent -> Bool # (/=) :: JpgComponent -> JpgComponent -> Bool #
type Rep JpgComponent # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgComponent = D1 ('MetaData "JpgComponent" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgComponent" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentIdentifier") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "horizontalSamplingFactor") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8)) :*: (S1 ('MetaSel ('Just "verticalSamplingFactor") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "quantizationTableDest") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8))))

data JpgFrameHeader #

Constructors

JpgFrameHeader |
Fields jpgFrameHeaderLength :: !Word16 jpgSamplePrecision :: !Word8 jpgHeight :: !Word16 jpgWidth :: !Word16 jpgImageComponentCount :: !Word8 jpgComponents :: ![JpgComponent]

#### Instances

Instances details

Binary JpgFrameHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgFrameHeader -> Put # get :: Get JpgFrameHeader # putList :: [JpgFrameHeader] -> Put #
NFData JpgFrameHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgFrameHeader -> () #
Generic JpgFrameHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgFrameHeader |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgFrameHeader = D1 ('MetaData "JpgFrameHeader" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgFrameHeader" 'PrefixI 'True) ((S1 ('MetaSel ('Just "jpgFrameHeaderLength") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: (S1 ('MetaSel ('Just "jpgSamplePrecision") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "jpgHeight") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16))) :*: (S1 ('MetaSel ('Just "jpgWidth") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: (S1 ('MetaSel ('Just "jpgImageComponentCount") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "jpgComponents") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [JpgComponent])))))
Methods from :: JpgFrameHeader -> Rep JpgFrameHeader x # to :: Rep JpgFrameHeader x -> JpgFrameHeader #
Show JpgFrameHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrameHeader -> ShowS # show :: JpgFrameHeader -> String # showList :: [JpgFrameHeader] -> ShowS #
Eq JpgFrameHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgFrameHeader -> JpgFrameHeader -> Bool # (/=) :: JpgFrameHeader -> JpgFrameHeader -> Bool #
type Rep JpgFrameHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgFrameHeader = D1 ('MetaData "JpgFrameHeader" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgFrameHeader" 'PrefixI 'True) ((S1 ('MetaSel ('Just "jpgFrameHeaderLength") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: (S1 ('MetaSel ('Just "jpgSamplePrecision") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "jpgHeight") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16))) :*: (S1 ('MetaSel ('Just "jpgWidth") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: (S1 ('MetaSel ('Just "jpgImageComponentCount") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "jpgComponents") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [JpgComponent])))))

data JpgFrame #

Constructors

JpgAppFrame !Word8 ByteString |
JpgAdobeAPP14 !JpgAdobeApp14 |
JpgJFIF !JpgJFIFApp0 |
JpgExif ![ImageFileDirectory] |
JpgExtension !Word8 ByteString |
JpgQuantTable ![JpgQuantTableSpec] |
JpgHuffmanTable ![(JpgHuffmanTableSpec, HuffmanPackedTree)] |
JpgScanBlob !JpgScanHeader !ByteString | The `ByteString` is the ECS (Entropy-Coded Segment), typically the largest part of compressed image data.
JpgScans !JpgFrameKind !JpgFrameHeader |
JpgIntervalRestart !Word16 |

#### Instances

Instances details

NFData JpgFrame # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgFrame -> () #
Generic JpgFrame # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgFrame |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgFrame = D1 ('MetaData "JpgFrame" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (((C1 ('MetaCons "JpgAppFrame" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)) :+: C1 ('MetaCons "JpgAdobeAPP14" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgAdobeApp14))) :+: (C1 ('MetaCons "JpgJFIF" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgJFIFApp0)) :+: (C1 ('MetaCons "JpgExif" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [ImageFileDirectory])) :+: C1 ('MetaCons "JpgExtension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString))))) :+: ((C1 ('MetaCons "JpgQuantTable" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [JpgQuantTableSpec])) :+: C1 ('MetaCons "JpgHuffmanTable" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [(JpgHuffmanTableSpec, HuffmanPackedTree)]))) :+: (C1 ('MetaCons "JpgScanBlob" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgScanHeader) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString)) :+: (C1 ('MetaCons "JpgScans" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgFrameKind) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgFrameHeader)) :+: C1 ('MetaCons "JpgIntervalRestart" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16))))))
Methods from :: JpgFrame -> Rep JpgFrame x # to :: Rep JpgFrame x -> JpgFrame #
Show JpgFrame # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrame -> ShowS # show :: JpgFrame -> String # showList :: [JpgFrame] -> ShowS #
Eq JpgFrame # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgFrame -> JpgFrame -> Bool # (/=) :: JpgFrame -> JpgFrame -> Bool #
type Rep JpgFrame # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgFrame = D1 ('MetaData "JpgFrame" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (((C1 ('MetaCons "JpgAppFrame" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)) :+: C1 ('MetaCons "JpgAdobeAPP14" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgAdobeApp14))) :+: (C1 ('MetaCons "JpgJFIF" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgJFIFApp0)) :+: (C1 ('MetaCons "JpgExif" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [ImageFileDirectory])) :+: C1 ('MetaCons "JpgExtension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString))))) :+: ((C1 ('MetaCons "JpgQuantTable" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [JpgQuantTableSpec])) :+: C1 ('MetaCons "JpgHuffmanTable" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [(JpgHuffmanTableSpec, HuffmanPackedTree)]))) :+: (C1 ('MetaCons "JpgScanBlob" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgScanHeader) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString)) :+: (C1 ('MetaCons "JpgScans" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgFrameKind) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgFrameHeader)) :+: C1 ('MetaCons "JpgIntervalRestart" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16))))))

data JpgFrameKind #

Constructors

JpgBaselineDCTHuffman |
JpgExtendedSequentialDCTHuffman |
JpgProgressiveDCTHuffman |
JpgLosslessHuffman |
JpgDifferentialSequentialDCTHuffman |
JpgDifferentialProgressiveDCTHuffman |
JpgDifferentialLosslessHuffman |
JpgExtendedSequentialArithmetic |
JpgProgressiveDCTArithmetic |
JpgLosslessArithmetic |
JpgDifferentialSequentialDCTArithmetic |
JpgDifferentialProgressiveDCTArithmetic |
JpgDifferentialLosslessArithmetic |
JpgQuantizationTable |
JpgHuffmanTableMarker |
JpgStartOfScan |
JpgEndOfImage |
JpgAppSegment Word8 |
JpgExtensionSegment Word8 |
JpgRestartInterval |
JpgRestartIntervalEnd Word8 |

#### Instances

Instances details

Binary JpgFrameKind # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgFrameKind -> Put # get :: Get JpgFrameKind # putList :: [JpgFrameKind] -> Put #
NFData JpgFrameKind # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgFrameKind -> () #
Generic JpgFrameKind # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgFrameKind |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgFrameKind = D1 ('MetaData "JpgFrameKind" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) ((((C1 ('MetaCons "JpgBaselineDCTHuffman" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgExtendedSequentialDCTHuffman" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "JpgProgressiveDCTHuffman" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JpgLosslessHuffman" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgDifferentialSequentialDCTHuffman" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "JpgDifferentialProgressiveDCTHuffman" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgDifferentialLosslessHuffman" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "JpgExtendedSequentialArithmetic" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JpgProgressiveDCTArithmetic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgLosslessArithmetic" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "JpgDifferentialSequentialDCTArithmetic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgDifferentialProgressiveDCTArithmetic" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "JpgDifferentialLosslessArithmetic" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JpgQuantizationTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgHuffmanTableMarker" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "JpgStartOfScan" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JpgEndOfImage" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgAppSegment" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)))) :+: (C1 ('MetaCons "JpgExtensionSegment" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)) :+: (C1 ('MetaCons "JpgRestartInterval" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgRestartIntervalEnd" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)))))))
Methods from :: JpgFrameKind -> Rep JpgFrameKind x # to :: Rep JpgFrameKind x -> JpgFrameKind #
Show JpgFrameKind # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrameKind -> ShowS # show :: JpgFrameKind -> String # showList :: [JpgFrameKind] -> ShowS #
Eq JpgFrameKind # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgFrameKind -> JpgFrameKind -> Bool # (/=) :: JpgFrameKind -> JpgFrameKind -> Bool #
type Rep JpgFrameKind # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgFrameKind = D1 ('MetaData "JpgFrameKind" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) ((((C1 ('MetaCons "JpgBaselineDCTHuffman" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgExtendedSequentialDCTHuffman" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "JpgProgressiveDCTHuffman" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JpgLosslessHuffman" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgDifferentialSequentialDCTHuffman" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "JpgDifferentialProgressiveDCTHuffman" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgDifferentialLosslessHuffman" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "JpgExtendedSequentialArithmetic" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JpgProgressiveDCTArithmetic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgLosslessArithmetic" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "JpgDifferentialSequentialDCTArithmetic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgDifferentialProgressiveDCTArithmetic" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "JpgDifferentialLosslessArithmetic" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JpgQuantizationTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgHuffmanTableMarker" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "JpgStartOfScan" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JpgEndOfImage" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgAppSegment" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)))) :+: (C1 ('MetaCons "JpgExtensionSegment" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)) :+: (C1 ('MetaCons "JpgRestartInterval" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgRestartIntervalEnd" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)))))))

data JpgScanHeader #

Constructors

JpgScanHeader |
Fields scanLength :: !Word16 scanComponentCount :: !Word8 scans :: [JpgScanSpecification] spectralSelection :: (Word8, Word8) (begin, end) successiveApproxHigh :: !Word8 Encoded as 4 bits successiveApproxLow :: !Word8 Encoded as 4 bits

#### Instances

Instances details

Binary JpgScanHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgScanHeader -> Put # get :: Get JpgScanHeader # putList :: [JpgScanHeader] -> Put #
NFData JpgScanHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgScanHeader -> () #
Generic JpgScanHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgScanHeader |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgScanHeader = D1 ('MetaData "JpgScanHeader" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgScanHeader" 'PrefixI 'True) ((S1 ('MetaSel ('Just "scanLength") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: (S1 ('MetaSel ('Just "scanComponentCount") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "scans") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [JpgScanSpecification]))) :*: (S1 ('MetaSel ('Just "spectralSelection") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Word8, Word8)) :*: (S1 ('MetaSel ('Just "successiveApproxHigh") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "successiveApproxLow") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8)))))
Methods from :: JpgScanHeader -> Rep JpgScanHeader x # to :: Rep JpgScanHeader x -> JpgScanHeader #
Show JpgScanHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgScanHeader -> ShowS # show :: JpgScanHeader -> String # showList :: [JpgScanHeader] -> ShowS #
Eq JpgScanHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgScanHeader -> JpgScanHeader -> Bool # (/=) :: JpgScanHeader -> JpgScanHeader -> Bool #
type Rep JpgScanHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgScanHeader = D1 ('MetaData "JpgScanHeader" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgScanHeader" 'PrefixI 'True) ((S1 ('MetaSel ('Just "scanLength") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: (S1 ('MetaSel ('Just "scanComponentCount") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "scans") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [JpgScanSpecification]))) :*: (S1 ('MetaSel ('Just "spectralSelection") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Word8, Word8)) :*: (S1 ('MetaSel ('Just "successiveApproxHigh") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "successiveApproxLow") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8)))))

data JpgQuantTableSpec #

Constructors

JpgQuantTableSpec |
Fields quantPrecision :: !Word8 Stored on 4 bits quantDestination :: !Word8 Stored on 4 bits quantTable :: MacroBlock Int16

#### Instances

Instances details

Binary JpgQuantTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgQuantTableSpec -> Put # get :: Get JpgQuantTableSpec # putList :: [JpgQuantTableSpec] -> Put #
NFData JpgQuantTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgQuantTableSpec -> () #
Generic JpgQuantTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgQuantTableSpec |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgQuantTableSpec = D1 ('MetaData "JpgQuantTableSpec" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgQuantTableSpec" 'PrefixI 'True) (S1 ('MetaSel ('Just "quantPrecision") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: (S1 ('MetaSel ('Just "quantDestination") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "quantTable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (MacroBlock Int16)))))
Methods from :: JpgQuantTableSpec -> Rep JpgQuantTableSpec x # to :: Rep JpgQuantTableSpec x -> JpgQuantTableSpec #
Show JpgQuantTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgQuantTableSpec -> ShowS # show :: JpgQuantTableSpec -> String # showList :: [JpgQuantTableSpec] -> ShowS #
Eq JpgQuantTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgQuantTableSpec -> JpgQuantTableSpec -> Bool # (/=) :: JpgQuantTableSpec -> JpgQuantTableSpec -> Bool #
type Rep JpgQuantTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgQuantTableSpec = D1 ('MetaData "JpgQuantTableSpec" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgQuantTableSpec" 'PrefixI 'True) (S1 ('MetaSel ('Just "quantPrecision") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: (S1 ('MetaSel ('Just "quantDestination") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "quantTable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (MacroBlock Int16)))))

data JpgHuffmanTableSpec #

Constructors

JpgHuffmanTableSpec |
Fields huffmanTableClass :: !DctComponent 0 : DC, 1 : AC, stored on 4 bits huffmanTableDest :: !Word8 Stored on 4 bits huffSizes :: !(Vector Word8) huffCodes :: !(Vector (Vector Word8))

#### Instances

Instances details

Binary JpgHuffmanTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgHuffmanTableSpec -> Put # get :: Get JpgHuffmanTableSpec # putList :: [JpgHuffmanTableSpec] -> Put #
NFData JpgHuffmanTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgHuffmanTableSpec -> () #
Generic JpgHuffmanTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgHuffmanTableSpec |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgHuffmanTableSpec = D1 ('MetaData "JpgHuffmanTableSpec" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgHuffmanTableSpec" 'PrefixI 'True) ((S1 ('MetaSel ('Just "huffmanTableClass") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DctComponent) :*: S1 ('MetaSel ('Just "huffmanTableDest") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8)) :*: (S1 ('MetaSel ('Just "huffSizes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector Word8)) :*: S1 ('MetaSel ('Just "huffCodes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector (Vector Word8))))))
Methods from :: JpgHuffmanTableSpec -> Rep JpgHuffmanTableSpec x # to :: Rep JpgHuffmanTableSpec x -> JpgHuffmanTableSpec #
Show JpgHuffmanTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgHuffmanTableSpec -> ShowS # show :: JpgHuffmanTableSpec -> String # showList :: [JpgHuffmanTableSpec] -> ShowS #
Eq JpgHuffmanTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgHuffmanTableSpec -> JpgHuffmanTableSpec -> Bool # (/=) :: JpgHuffmanTableSpec -> JpgHuffmanTableSpec -> Bool #
type Rep JpgHuffmanTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgHuffmanTableSpec = D1 ('MetaData "JpgHuffmanTableSpec" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgHuffmanTableSpec" 'PrefixI 'True) ((S1 ('MetaSel ('Just "huffmanTableClass") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DctComponent) :*: S1 ('MetaSel ('Just "huffmanTableDest") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8)) :*: (S1 ('MetaSel ('Just "huffSizes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector Word8)) :*: S1 ('MetaSel ('Just "huffCodes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector (Vector Word8))))))

data JpgImageKind #

Constructors

BaseLineDCT |
ProgressiveDCT |

data JpgScanSpecification #

Constructors

JpgScanSpecification |
Fields componentSelector :: !Word8 dcEntropyCodingTable :: !Word8 Encoded as 4 bits acEntropyCodingTable :: !Word8 Encoded as 4 bits

#### Instances

Instances details

Binary JpgScanSpecification # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgScanSpecification -> Put # get :: Get JpgScanSpecification # putList :: [JpgScanSpecification] -> Put #
NFData JpgScanSpecification # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgScanSpecification -> () #
Generic JpgScanSpecification # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgScanSpecification |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgScanSpecification = D1 ('MetaData "JpgScanSpecification" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgScanSpecification" 'PrefixI 'True) (S1 ('MetaSel ('Just "componentSelector") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: (S1 ('MetaSel ('Just "dcEntropyCodingTable") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "acEntropyCodingTable") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8))))
Methods from :: JpgScanSpecification -> Rep JpgScanSpecification x # to :: Rep JpgScanSpecification x -> JpgScanSpecification #
Show JpgScanSpecification # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgScanSpecification -> ShowS # show :: JpgScanSpecification -> String # showList :: [JpgScanSpecification] -> ShowS #
Eq JpgScanSpecification # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgScanSpecification -> JpgScanSpecification -> Bool # (/=) :: JpgScanSpecification -> JpgScanSpecification -> Bool #
type Rep JpgScanSpecification # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgScanSpecification = D1 ('MetaData "JpgScanSpecification" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgScanSpecification" 'PrefixI 'True) (S1 ('MetaSel ('Just "componentSelector") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: (S1 ('MetaSel ('Just "dcEntropyCodingTable") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "acEntropyCodingTable") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8))))

data JpgColorSpace #

Constructors

JpgColorSpaceYCbCr |
JpgColorSpaceYCC |
JpgColorSpaceY |
JpgColorSpaceYA |
JpgColorSpaceYCCA |
JpgColorSpaceYCCK |
JpgColorSpaceCMYK |
JpgColorSpaceRGB |
JpgColorSpaceRGBA |

#### Instances

Instances details

NFData JpgColorSpace # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgColorSpace -> () #
Generic JpgColorSpace # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgColorSpace |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgColorSpace = D1 ('MetaData "JpgColorSpace" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (((C1 ('MetaCons "JpgColorSpaceYCbCr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgColorSpaceYCC" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "JpgColorSpaceY" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgColorSpaceYA" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "JpgColorSpaceYCCA" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgColorSpaceYCCK" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "JpgColorSpaceCMYK" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JpgColorSpaceRGB" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgColorSpaceRGBA" 'PrefixI 'False) (U1 :: Type -> Type)))))
Methods from :: JpgColorSpace -> Rep JpgColorSpace x # to :: Rep JpgColorSpace x -> JpgColorSpace #
Show JpgColorSpace # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgColorSpace -> ShowS # show :: JpgColorSpace -> String # showList :: [JpgColorSpace] -> ShowS #
Eq JpgColorSpace # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgColorSpace -> JpgColorSpace -> Bool # (/=) :: JpgColorSpace -> JpgColorSpace -> Bool #
type Rep JpgColorSpace # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgColorSpace = D1 ('MetaData "JpgColorSpace" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (((C1 ('MetaCons "JpgColorSpaceYCbCr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgColorSpaceYCC" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "JpgColorSpaceY" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgColorSpaceYA" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "JpgColorSpaceYCCA" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgColorSpaceYCCK" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "JpgColorSpaceCMYK" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JpgColorSpaceRGB" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JpgColorSpaceRGBA" 'PrefixI 'False) (U1 :: Type -> Type)))))

data AdobeTransform #

Constructors

AdobeUnknown | Value 0
AdobeYCbCr | value 1
AdobeYCck | value 2

#### Instances

Instances details

Binary AdobeTransform # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: AdobeTransform -> Put # get :: Get AdobeTransform # putList :: [AdobeTransform] -> Put #
NFData AdobeTransform # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: AdobeTransform -> () #
Generic AdobeTransform # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep AdobeTransform |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep AdobeTransform = D1 ('MetaData "AdobeTransform" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "AdobeUnknown" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "AdobeYCbCr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AdobeYCck" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: AdobeTransform -> Rep AdobeTransform x # to :: Rep AdobeTransform x -> AdobeTransform #
Show AdobeTransform # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> AdobeTransform -> ShowS # show :: AdobeTransform -> String # showList :: [AdobeTransform] -> ShowS #
Eq AdobeTransform # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: AdobeTransform -> AdobeTransform -> Bool # (/=) :: AdobeTransform -> AdobeTransform -> Bool #
type Rep AdobeTransform # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep AdobeTransform = D1 ('MetaData "AdobeTransform" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "AdobeUnknown" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "AdobeYCbCr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AdobeYCck" 'PrefixI 'False) (U1 :: Type -> Type)))

data JpgAdobeApp14 #

Constructors

JpgAdobeApp14 |
Fields _adobeDctVersion :: !Word16 _adobeFlag0 :: !Word16 _adobeFlag1 :: !Word16 _adobeTransform :: !AdobeTransform

#### Instances

Instances details

Binary JpgAdobeApp14 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgAdobeApp14 -> Put # get :: Get JpgAdobeApp14 # putList :: [JpgAdobeApp14] -> Put #
NFData JpgAdobeApp14 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgAdobeApp14 -> () #
Generic JpgAdobeApp14 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgAdobeApp14 |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgAdobeApp14 = D1 ('MetaData "JpgAdobeApp14" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgAdobeApp14" 'PrefixI 'True) ((S1 ('MetaSel ('Just "_adobeDctVersion") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: S1 ('MetaSel ('Just "_adobeFlag0") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16)) :*: (S1 ('MetaSel ('Just "_adobeFlag1") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: S1 ('MetaSel ('Just "_adobeTransform") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 AdobeTransform))))
Methods from :: JpgAdobeApp14 -> Rep JpgAdobeApp14 x # to :: Rep JpgAdobeApp14 x -> JpgAdobeApp14 #
Show JpgAdobeApp14 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgAdobeApp14 -> ShowS # show :: JpgAdobeApp14 -> String # showList :: [JpgAdobeApp14] -> ShowS #
Eq JpgAdobeApp14 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgAdobeApp14 -> JpgAdobeApp14 -> Bool # (/=) :: JpgAdobeApp14 -> JpgAdobeApp14 -> Bool #
type Rep JpgAdobeApp14 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgAdobeApp14 = D1 ('MetaData "JpgAdobeApp14" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgAdobeApp14" 'PrefixI 'True) ((S1 ('MetaSel ('Just "_adobeDctVersion") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: S1 ('MetaSel ('Just "_adobeFlag0") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16)) :*: (S1 ('MetaSel ('Just "_adobeFlag1") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: S1 ('MetaSel ('Just "_adobeTransform") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 AdobeTransform))))

data JpgJFIFApp0 #

Constructors

JpgJFIFApp0 |
Fields _jfifUnit :: !JFifUnit _jfifDpiX :: !Word16 _jfifDpiY :: !Word16 _jfifThumbnail :: !(Maybe Int)

#### Instances

Instances details

Binary JpgJFIFApp0 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgJFIFApp0 -> Put # get :: Get JpgJFIFApp0 # putList :: [JpgJFIFApp0] -> Put #
NFData JpgJFIFApp0 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgJFIFApp0 -> () #
Generic JpgJFIFApp0 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JpgJFIFApp0 |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgJFIFApp0 = D1 ('MetaData "JpgJFIFApp0" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgJFIFApp0" 'PrefixI 'True) ((S1 ('MetaSel ('Just "_jfifUnit") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JFifUnit) :*: S1 ('MetaSel ('Just "_jfifDpiX") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16)) :*: (S1 ('MetaSel ('Just "_jfifDpiY") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: S1 ('MetaSel ('Just "_jfifThumbnail") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Int)))))
Methods from :: JpgJFIFApp0 -> Rep JpgJFIFApp0 x # to :: Rep JpgJFIFApp0 x -> JpgJFIFApp0 #
Show JpgJFIFApp0 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgJFIFApp0 -> ShowS # show :: JpgJFIFApp0 -> String # showList :: [JpgJFIFApp0] -> ShowS #
Eq JpgJFIFApp0 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgJFIFApp0 -> JpgJFIFApp0 -> Bool # (/=) :: JpgJFIFApp0 -> JpgJFIFApp0 -> Bool #
type Rep JpgJFIFApp0 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgJFIFApp0 = D1 ('MetaData "JpgJFIFApp0" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JpgJFIFApp0" 'PrefixI 'True) ((S1 ('MetaSel ('Just "_jfifUnit") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JFifUnit) :*: S1 ('MetaSel ('Just "_jfifDpiX") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16)) :*: (S1 ('MetaSel ('Just "_jfifDpiY") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16) :*: S1 ('MetaSel ('Just "_jfifThumbnail") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Int)))))

data JFifUnit #

Size: 1

Constructors

JFifUnitUnknown | 0
JFifPixelsPerInch | 1
JFifPixelsPerCentimeter | 2

#### Instances

Instances details

Binary JFifUnit # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JFifUnit -> Put # get :: Get JFifUnit # putList :: [JFifUnit] -> Put #
NFData JFifUnit # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JFifUnit -> () #
Generic JFifUnit # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Associated Types
type Rep JFifUnit |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JFifUnit = D1 ('MetaData "JFifUnit" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JFifUnitUnknown" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JFifPixelsPerInch" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JFifPixelsPerCentimeter" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: JFifUnit -> Rep JFifUnit x # to :: Rep JFifUnit x -> JFifUnit #
Show JFifUnit # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JFifUnit -> ShowS # show :: JFifUnit -> String # showList :: [JFifUnit] -> ShowS #
Eq JFifUnit # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JFifUnit -> JFifUnit -> Bool # (/=) :: JFifUnit -> JFifUnit -> Bool #
type Rep JFifUnit # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types type Rep JFifUnit = D1 ('MetaData "JFifUnit" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-D4GSBtW9OfK2GKVIljLKj0" 'False) (C1 ('MetaCons "JFifUnitUnknown" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JFifPixelsPerInch" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JFifPixelsPerCentimeter" 'PrefixI 'False) (U1 :: Type -> Type)))

newtype TableList a #

Type introduced only to avoid some typeclass overlapping problem

Constructors

TableList [a] |

#### Instances

Instances details

(SizeCalculable a, Binary a) => Binary (TableList a) # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: TableList a -> Put # get :: Get (TableList a) # putList :: [TableList a] -> Put #

newtype RestartInterval #

Constructors

RestartInterval Word16 |

#### Instances

Instances details

Binary RestartInterval # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: RestartInterval -> Put # get :: Get RestartInterval # putList :: [RestartInterval] -> Put #

getJpgImage :: Get JpgImage #

Like `get` from `instance Binary JpgImage`, but without the legacy semi-lazy implementation.

calculateSize :: SizeCalculable a => a -> Int #

dctBlockSize :: Num a => a #

parseECS :: Get ByteString #

Parses a Scan's ECS (Entropy-Coded Segment, the largest part of compressed image data) from the `Get` stream.

When this function is called, the parser's offset should be immediately behind the SOS tag.

As described on e.g. https://www.ccoderun.ca/programming/2017-01-31_jpeg/,

    To find the next segment after the SOS, you must keep reading until you
    find a 0xFF bytes which is not immediately followed by 0x00 (see "byte stuffing")
    [or a reset marker's byte: 0xD0 through 0xD7].
    Normally, this will be the EOI segment that comes at the end of the file.

where the 0xFF is the next segment's marker. See https://github.com/corkami/formats/blob/master/image/jpeg.md#entropy-coded-segment for more details.

This function returns the ECS, not including the next segment's marker on its trailing end.

parseECS_simple :: Get ByteString #

Simpler implementation of `parseECS` to allow an easier understanding of the logic, and to provide a comparison for correctness.

skipUntilFrames :: Get () #

skipFrameMarker :: Get () #

parseFrameOfKind :: JpgFrameKind -> Get (Maybe JpgFrame) #

Parses a single frame.

Returns `Nothing` when we encounter a frame we want to skip.

parseFrames :: Get [JpgFrame] #

Parse a list of `JpgFrame`s.

parseFrameKinds :: Get [(JpgFrameKind, Int64, Int64)] #

Parse a list of `JpgFrameKind`s with their corresponding offsets and lengths (not counting the segment and frame markers into the lengths).

Useful for debugging.

parseToFirstFrameHeader :: Get (Maybe JpgFrameHeader) #

Parses forward, returning the first scan header encountered.

Should be used after `skipUntilFrames`.

Fails parsing when an SOS segment marker (`JpgStartOfScan`, resulting in `JpgScanBlob`) is encountered before an SOF segment marker (that results in `JpgScans` carrying the `JpgFrameHeader`).