Macroblock that can be transformed.
ModuleJuicyPixels-3.3.8Haskell2010
Codec.Picture.Jpg.Internal.Types
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
- 19 types
- 13 values
- PackageJuicyPixels-3.3.8
- Exports33
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceTypes.hs
Create a new macroblock with the good array size
Type only used to make clear what kind of integer we are carrying Might be transformed into newtype in the future
Instances6Eq, Show, Generic, NFData, Binary, Rep
Eq JpgImageDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgImageDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgImageDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgImageDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JpgImageDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgImage = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgImage"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"JpgImage"
'PrefixI 'True) (S1 ('MetaSel ('Just"jpgFrame"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [JpgFrame])))
Constructors
JpgComponentcomponentIdentifier :: !Word8horizontalSamplingFactor :: !Word8Stored with 4 bits
verticalSamplingFactor :: !Word8Stored with 4 bits
quantizationTableDest :: !Word8
Instances7Eq, Show, Generic, NFData, Binary, SizeCalculable, …
Eq JpgComponentDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgComponentDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgComponentDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgComponentDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JpgComponentDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesSizeCalculable JpgComponentDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgComponent = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgComponent"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"JpgComponent"
'PrefixI 'True) ((S1 ('MetaSel ('Just"componentIdentifier"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8) :*: S1 ('MetaSel ('Just"horizontalSamplingFactor"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8)) :*: (S1 ('MetaSel ('Just"verticalSamplingFactor"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8) :*: S1 ('MetaSel ('Just"quantizationTableDest"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8))))
Constructors
Instances7Eq, Show, Generic, NFData, Binary, SizeCalculable, …
Eq JpgFrameHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgFrameHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgFrameHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgFrameHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JpgFrameHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesSizeCalculable JpgFrameHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgFrameHeader = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgFrameHeader"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"JpgFrameHeader"
'PrefixI 'True) ((S1 ('MetaSel ('Just"jpgFrameHeaderLength"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word16) :*: (S1 ('MetaSel ('Just"jpgSamplePrecision"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8) :*: S1 ('MetaSel ('Just"jpgHeight"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word16))) :*: (S1 ('MetaSel ('Just"jpgWidth"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word16) :*: (S1 ('MetaSel ('Just"jpgImageComponentCount"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8) :*: S1 ('MetaSel ('Just"jpgComponents"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [JpgComponent])))))
Constructors
JpgAppFrame !Word8 ByteStringJpgAdobeAPP14 !JpgAdobeApp14JpgJFIF !JpgJFIFApp0JpgExif ![ImageFileDirectory]JpgExtension !Word8 ByteStringJpgQuantTable ![JpgQuantTableSpec]JpgHuffmanTable ![(JpgHuffmanTableSpec, HuffmanPackedTree)]JpgScanBlob !JpgScanHeader !ByteStringThe
ByteStringis the ECS (Entropy-Coded Segment), typically the largest part of compressed image data.JpgScans !JpgFrameKind !JpgFrameHeaderJpgIntervalRestart !Word16
Instances5Eq, Show, Generic, NFData, Rep
Eq JpgFrameDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgFrameDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgFrameDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgFrameDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgFrame = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgFrame"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (((C1 ('MetaCons"JpgAppFrame"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)) :+: C1 ('MetaCons"JpgAdobeAPP14"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgAdobeApp14))) :+: (C1 ('MetaCons"JpgJFIF"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgJFIFApp0)) :+: (C1 ('MetaCons"JpgExif"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [ImageFileDirectory])) :+: C1 ('MetaCons"JpgExtension"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString))))) :+: ((C1 ('MetaCons"JpgQuantTable"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [JpgQuantTableSpec])) :+: C1 ('MetaCons"JpgHuffmanTable"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [(JpgHuffmanTableSpec, HuffmanPackedTree)]))) :+: (C1 ('MetaCons"JpgScanBlob"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgScanHeader) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString)) :+: (C1 ('MetaCons"JpgScans"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgFrameKind) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JpgFrameHeader)) :+: C1 ('MetaCons"JpgIntervalRestart"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word16))))))
Constructors
JpgBaselineDCTHuffmanJpgExtendedSequentialDCTHuffmanJpgProgressiveDCTHuffmanJpgLosslessHuffmanJpgDifferentialSequentialDCTHuffmanJpgDifferentialProgressiveDCTHuffmanJpgDifferentialLosslessHuffmanJpgExtendedSequentialArithmeticJpgProgressiveDCTArithmeticJpgLosslessArithmeticJpgDifferentialSequentialDCTArithmeticJpgDifferentialProgressiveDCTArithmeticJpgDifferentialLosslessArithmeticJpgQuantizationTableJpgHuffmanTableMarkerJpgStartOfScanJpgEndOfImageJpgAppSegment Word8JpgExtensionSegment Word8JpgRestartIntervalJpgRestartIntervalEnd Word8
Instances6Eq, Show, Generic, NFData, Binary, Rep
Eq JpgFrameKindDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgFrameKindDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgFrameKindDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgFrameKindDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JpgFrameKindDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgFrameKind = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgFrameKind"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) ((((C1 ('MetaCons"JpgBaselineDCTHuffman"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgExtendedSequentialDCTHuffman"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"JpgProgressiveDCTHuffman"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"JpgLosslessHuffman"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgDifferentialSequentialDCTHuffman"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"JpgDifferentialProgressiveDCTHuffman"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgDifferentialLosslessHuffman"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"JpgExtendedSequentialArithmetic"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"JpgProgressiveDCTArithmetic"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgLosslessArithmetic"
'PrefixI 'False) U1)))) :+: (((C1 ('MetaCons"JpgDifferentialSequentialDCTArithmetic"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgDifferentialProgressiveDCTArithmetic"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"JpgDifferentialLosslessArithmetic"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"JpgQuantizationTable"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgHuffmanTableMarker"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"JpgStartOfScan"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"JpgEndOfImage"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgAppSegment"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)))) :+: (C1 ('MetaCons"JpgExtensionSegment"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)) :+: (C1 ('MetaCons"JpgRestartInterval"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgRestartIntervalEnd"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)))))))
Constructors
JpgScanHeaderscanLength :: !Word16scanComponentCount :: !Word8scans :: [JpgScanSpecification]spectralSelection :: (Word8, Word8)(begin, end)
successiveApproxHigh :: !Word8Encoded as 4 bits
successiveApproxLow :: !Word8Encoded as 4 bits
Instances7Eq, Show, Generic, NFData, Binary, SizeCalculable, …
Eq JpgScanHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgScanHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgScanHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgScanHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JpgScanHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesSizeCalculable JpgScanHeaderDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgScanHeader = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgScanHeader"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"JpgScanHeader"
'PrefixI 'True) ((S1 ('MetaSel ('Just"scanLength"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word16) :*: (S1 ('MetaSel ('Just"scanComponentCount"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (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 'DecidedUnpack) (Rec0 Word8) :*: S1 ('MetaSel ('Just"successiveApproxLow"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8)))))
Constructors
JpgQuantTableSpecquantPrecision :: !Word8Stored on 4 bits
quantDestination :: !Word8Stored on 4 bits
quantTable :: MacroBlock Int16
Instances7Eq, Show, Generic, NFData, Binary, SizeCalculable, …
Eq JpgQuantTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgQuantTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgQuantTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgQuantTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JpgQuantTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesSizeCalculable JpgQuantTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgQuantTableSpec = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgQuantTableSpec"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"JpgQuantTableSpec"
'PrefixI 'True) (S1 ('MetaSel ('Just"quantPrecision"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8) :*: (S1 ('MetaSel ('Just"quantDestination"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8) :*: S1 ('MetaSel ('Just"quantTable"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (MacroBlock Int16)))))
Constructors
JpgHuffmanTableSpechuffmanTableClass :: !DctComponent0 : DC, 1 : AC, stored on 4 bits
huffmanTableDest :: !Word8Stored on 4 bits
huffSizes :: !Vector Word8huffCodes :: !Vector (Vector Word8)
Instances7Eq, Show, Generic, NFData, Binary, SizeCalculable, …
Eq JpgHuffmanTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgHuffmanTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgHuffmanTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgHuffmanTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JpgHuffmanTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesSizeCalculable JpgHuffmanTableSpecDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgHuffmanTableSpec = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgHuffmanTableSpec"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"JpgHuffmanTableSpec"
'PrefixI 'True) ((S1 ('MetaSel ('Just"huffmanTableClass"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DctComponent) :*: S1 ('MetaSel ('Just"huffmanTableDest"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8)) :*: (S1 ('MetaSel ('Just"huffSizes"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector Word8)) :*: S1 ('MetaSel ('Just"huffCodes"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector (Vector Word8))))))
Constructors
JpgScanSpecificationcomponentSelector :: !Word8dcEntropyCodingTable :: !Word8Encoded as 4 bits
acEntropyCodingTable :: !Word8Encoded as 4 bits
Instances7Eq, Show, Generic, NFData, Binary, SizeCalculable, …
Eq JpgScanSpecificationDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgScanSpecificationDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgScanSpecificationDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgScanSpecificationDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JpgScanSpecificationDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesSizeCalculable JpgScanSpecificationDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgScanSpecification = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgScanSpecification"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"JpgScanSpecification"
'PrefixI 'True) (S1 ('MetaSel ('Just"componentSelector"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8) :*: (S1 ('MetaSel ('Just"dcEntropyCodingTable"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8) :*: S1 ('MetaSel ('Just"acEntropyCodingTable"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word8))))
Instances5Eq, Show, Generic, NFData, Rep
Eq JpgColorSpaceDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgColorSpaceDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgColorSpaceDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgColorSpaceDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgColorSpace = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgColorSpace"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (((C1 ('MetaCons"JpgColorSpaceYCbCr"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgColorSpaceYCC"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"JpgColorSpaceY"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgColorSpaceYA"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"JpgColorSpaceYCCA"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgColorSpaceYCCK"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"JpgColorSpaceCMYK"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"JpgColorSpaceRGB"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JpgColorSpaceRGBA"
'PrefixI 'False) U1))))
Constructors
AdobeUnknownValue 0
AdobeYCbCrvalue 1
AdobeYCckvalue 2
Instances6Eq, Show, Generic, NFData, Binary, Rep
Eq AdobeTransformDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow AdobeTransformDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric AdobeTransformDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData AdobeTransformDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary AdobeTransformDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep AdobeTransform = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"AdobeTransform"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"AdobeUnknown"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"AdobeYCbCr"
'PrefixI 'False) U1 :+: C1 ('MetaCons"AdobeYCck"
'PrefixI 'False) U1))
Constructors
Instances6Eq, Show, Generic, NFData, Binary, Rep
Eq JpgAdobeApp14Defined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgAdobeApp14Defined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgAdobeApp14Defined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgAdobeApp14Defined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JpgAdobeApp14Defined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgAdobeApp14 = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgAdobeApp14"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"JpgAdobeApp14"
'PrefixI 'True) ((S1 ('MetaSel ('Just"_adobeDctVersion"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word16) :*: S1 ('MetaSel ('Just"_adobeFlag0"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word16)) :*: (S1 ('MetaSel ('Just"_adobeFlag1"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word16) :*: S1 ('MetaSel ('Just"_adobeTransform"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 AdobeTransform))))
Constructors
Instances6Eq, Show, Generic, NFData, Binary, Rep
Eq JpgJFIFApp0Defined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JpgJFIFApp0Defined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JpgJFIFApp0Defined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JpgJFIFApp0Defined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JpgJFIFApp0Defined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JpgJFIFApp0 = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JpgJFIFApp0"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"JpgJFIFApp0"
'PrefixI 'True) ((S1 ('MetaSel ('Just"_jfifUnit"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JFifUnit) :*: S1 ('MetaSel ('Just"_jfifDpiX"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word16)) :*: (S1 ('MetaSel ('Just"_jfifDpiY"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Word16) :*: S1 ('MetaSel ('Just"_jfifThumbnail"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Int)))))
Size: 1
Constructors
Instances6Eq, Show, Generic, NFData, Binary, Rep
Eq JFifUnitDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesShow JFifUnitDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesGeneric JFifUnitDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesNFData JFifUnitDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.TypesBinary JFifUnitDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Typestype Rep JFifUnit = D1 ('MetaDataDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types"JFifUnit"
"Codec.Picture.Jpg.Internal.Types"
"JuicyPixels-3.3.8-4npCgW0M0fP84GCCAKWwog"
'False) (C1 ('MetaCons"JFifUnitUnknown"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"JFifPixelsPerInch"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JFifPixelsPerCentimeter"
'PrefixI 'False) U1))
Type introduced only to avoid some typeclass overlapping problem
Constructors
TableList [a]
Constructors
Instances1Binary
Binary RestartIntervalDefined in JuicyPixels-3.3.8 · Codec.Picture.Jpg.Internal.Types
Like get from `instance Binary JpgImage`, but without the legacy semi-lazy implementation.
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.
Simpler implementation of parseECS to allow an easier understanding of the logic, and to provide a comparison for correctness.
Parses a single frame.
Returns Nothing when we encounter a frame we want to skip.
Parse a list of JpgFrames.
Parse a list of JpgFrameKinds with their corresponding offsets and lengths (not counting the segment and frame markers into the lengths).
Useful for debugging.
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).