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 {}
- 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
- data JpgScanSpecification = JpgScanSpecification {
- componentSelector :: !Word8
- dcEntropyCodingTable :: !Word8
- acEntropyCodingTable :: !Word8
- data JpgColorSpace
- data AdobeTransform
- 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
- 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 Source #
Macroblock that can be transformed.
createEmptyMutableMacroBlock :: (Storable a, Num a) => ST s (MutableMacroBlock s a) Source #
Create a new macroblock with the good array size
printMacroBlock :: (Storable a, PrintfArg a) => MutableMacroBlock s a -> ST s String Source #
printPureMacroBlock :: (Storable a, PrintfArg a) => MacroBlock a -> String Source #
type DcCoefficient = Int16 Source #
Type only used to make clear what kind of integer we are carrying Might be transformed into newtype in the future
Instances
Binary JpgImage Source # | |||||
NFData JpgImage Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
Generic JpgImage Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgImage Source # | |||||
Eq JpgImage Source # | |||||
type Rep JpgImage Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types |
data JpgComponent Source #
Constructors
JpgComponent | |
Fields
|
Instances
Binary JpgComponent Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData JpgComponent Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgComponent -> () | |||||
Generic JpgComponent Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgComponent Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgComponent -> ShowS show :: JpgComponent -> String showList :: [JpgComponent] -> ShowS | |||||
Eq JpgComponent Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
type Rep JpgComponent Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgComponent = D1 ('MetaData "JpgComponent" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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 Source #
Constructors
JpgFrameHeader | |
Fields
|
Instances
Binary JpgFrameHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData JpgFrameHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgFrameHeader -> () | |||||
Generic JpgFrameHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgFrameHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrameHeader -> ShowS show :: JpgFrameHeader -> String showList :: [JpgFrameHeader] -> ShowS | |||||
Eq JpgFrameHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgFrameHeader -> JpgFrameHeader -> Bool (/=) :: JpgFrameHeader -> JpgFrameHeader -> Bool | |||||
type Rep JpgFrameHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgFrameHeader = D1 ('MetaData "JpgFrameHeader" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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]))))) |
Constructors
JpgAppFrame !Word8 ByteString | |
JpgAdobeAPP14 !JpgAdobeApp14 | |
JpgJFIF !JpgJFIFApp0 | |
JpgExif ![ImageFileDirectory] | |
JpgExtension !Word8 ByteString | |
JpgQuantTable ![JpgQuantTableSpec] | |
JpgHuffmanTable ![(JpgHuffmanTableSpec, HuffmanPackedTree)] | |
JpgScanBlob !JpgScanHeader !ByteString | The |
JpgScans !JpgFrameKind !JpgFrameHeader | |
JpgIntervalRestart !Word16 |
Instances
NFData JpgFrame Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
Generic JpgFrame Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgFrame Source # | |||||
Eq JpgFrame Source # | |||||
type Rep JpgFrame Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgFrame = D1 ('MetaData "JpgFrame" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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 Source #
Constructors
Instances
Binary JpgFrameKind Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData JpgFrameKind Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgFrameKind -> () | |||||
Generic JpgFrameKind Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgFrameKind Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrameKind -> ShowS show :: JpgFrameKind -> String showList :: [JpgFrameKind] -> ShowS | |||||
Eq JpgFrameKind Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
type Rep JpgFrameKind Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgFrameKind = D1 ('MetaData "JpgFrameKind" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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 Source #
Constructors
JpgScanHeader | |
Fields
|
Instances
Binary JpgScanHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData JpgScanHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgScanHeader -> () | |||||
Generic JpgScanHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgScanHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgScanHeader -> ShowS show :: JpgScanHeader -> String showList :: [JpgScanHeader] -> ShowS | |||||
Eq JpgScanHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
type Rep JpgScanHeader Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgScanHeader = D1 ('MetaData "JpgScanHeader" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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 Source #
Constructors
JpgQuantTableSpec | |
Fields
|
Instances
Binary JpgQuantTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgQuantTableSpec -> Put get :: Get JpgQuantTableSpec putList :: [JpgQuantTableSpec] -> Put | |||||
NFData JpgQuantTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgQuantTableSpec -> () | |||||
Generic JpgQuantTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
Methods from :: JpgQuantTableSpec -> Rep JpgQuantTableSpec x to :: Rep JpgQuantTableSpec x -> JpgQuantTableSpec | |||||
Show JpgQuantTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgQuantTableSpec -> ShowS show :: JpgQuantTableSpec -> String showList :: [JpgQuantTableSpec] -> ShowS | |||||
Eq JpgQuantTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgQuantTableSpec -> JpgQuantTableSpec -> Bool (/=) :: JpgQuantTableSpec -> JpgQuantTableSpec -> Bool | |||||
type Rep JpgQuantTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgQuantTableSpec = D1 ('MetaData "JpgQuantTableSpec" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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 Source #
Constructors
JpgHuffmanTableSpec | |
Fields
|
Instances
Binary JpgHuffmanTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgHuffmanTableSpec -> Put get :: Get JpgHuffmanTableSpec putList :: [JpgHuffmanTableSpec] -> Put | |||||
NFData JpgHuffmanTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgHuffmanTableSpec -> () | |||||
Generic JpgHuffmanTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
Methods from :: JpgHuffmanTableSpec -> Rep JpgHuffmanTableSpec x to :: Rep JpgHuffmanTableSpec x -> JpgHuffmanTableSpec | |||||
Show JpgHuffmanTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgHuffmanTableSpec -> ShowS show :: JpgHuffmanTableSpec -> String showList :: [JpgHuffmanTableSpec] -> ShowS | |||||
Eq JpgHuffmanTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgHuffmanTableSpec -> JpgHuffmanTableSpec -> Bool (/=) :: JpgHuffmanTableSpec -> JpgHuffmanTableSpec -> Bool | |||||
type Rep JpgHuffmanTableSpec Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgHuffmanTableSpec = D1 ('MetaData "JpgHuffmanTableSpec" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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 Source #
Constructors
BaseLineDCT | |
ProgressiveDCT |
data JpgScanSpecification Source #
Constructors
JpgScanSpecification | |
Fields
|
Instances
Binary JpgScanSpecification Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgScanSpecification -> Put get :: Get JpgScanSpecification putList :: [JpgScanSpecification] -> Put | |||||
NFData JpgScanSpecification Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgScanSpecification -> () | |||||
Generic JpgScanSpecification Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
Methods from :: JpgScanSpecification -> Rep JpgScanSpecification x to :: Rep JpgScanSpecification x -> JpgScanSpecification | |||||
Show JpgScanSpecification Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgScanSpecification -> ShowS show :: JpgScanSpecification -> String showList :: [JpgScanSpecification] -> ShowS | |||||
Eq JpgScanSpecification Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgScanSpecification -> JpgScanSpecification -> Bool (/=) :: JpgScanSpecification -> JpgScanSpecification -> Bool | |||||
type Rep JpgScanSpecification Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgScanSpecification = D1 ('MetaData "JpgScanSpecification" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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 Source #
Constructors
JpgColorSpaceYCbCr | |
JpgColorSpaceYCC | |
JpgColorSpaceY | |
JpgColorSpaceYA | |
JpgColorSpaceYCCA | |
JpgColorSpaceYCCK | |
JpgColorSpaceCMYK | |
JpgColorSpaceRGB | |
JpgColorSpaceRGBA |
Instances
NFData JpgColorSpace Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgColorSpace -> () | |||||
Generic JpgColorSpace Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgColorSpace Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgColorSpace -> ShowS show :: JpgColorSpace -> String showList :: [JpgColorSpace] -> ShowS | |||||
Eq JpgColorSpace Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
type Rep JpgColorSpace Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgColorSpace = D1 ('MetaData "JpgColorSpace" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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 Source #
Constructors
AdobeUnknown | Value 0 |
AdobeYCbCr | value 1 |
AdobeYCck | value 2 |
Instances
Binary AdobeTransform Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData AdobeTransform Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: AdobeTransform -> () | |||||
Generic AdobeTransform Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show AdobeTransform Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> AdobeTransform -> ShowS show :: AdobeTransform -> String showList :: [AdobeTransform] -> ShowS | |||||
Eq AdobeTransform Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: AdobeTransform -> AdobeTransform -> Bool (/=) :: AdobeTransform -> AdobeTransform -> Bool | |||||
type Rep AdobeTransform Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep AdobeTransform = D1 ('MetaData "AdobeTransform" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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 Source #
Constructors
JpgAdobeApp14 | |
Fields
|
Instances
Binary JpgAdobeApp14 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData JpgAdobeApp14 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgAdobeApp14 -> () | |||||
Generic JpgAdobeApp14 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgAdobeApp14 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgAdobeApp14 -> ShowS show :: JpgAdobeApp14 -> String showList :: [JpgAdobeApp14] -> ShowS | |||||
Eq JpgAdobeApp14 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
type Rep JpgAdobeApp14 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgAdobeApp14 = D1 ('MetaData "JpgAdobeApp14" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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 Source #
Constructors
JpgJFIFApp0 | |
Fields
|
Instances
Binary JpgJFIFApp0 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData JpgJFIFApp0 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgJFIFApp0 -> () | |||||
Generic JpgJFIFApp0 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgJFIFApp0 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgJFIFApp0 -> ShowS show :: JpgJFIFApp0 -> String showList :: [JpgJFIFApp0] -> ShowS | |||||
Eq JpgJFIFApp0 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
type Rep JpgJFIFApp0 Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JpgJFIFApp0 = D1 ('MetaData "JpgJFIFApp0" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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))))) |
Size: 1
Constructors
JFifUnitUnknown | 0 |
JFifPixelsPerInch | 1 |
JFifPixelsPerCentimeter | 2 |
Instances
Binary JFifUnit Source # | |||||
NFData JFifUnit Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
Generic JFifUnit Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JFifUnit Source # | |||||
Eq JFifUnit Source # | |||||
type Rep JFifUnit Source # | |||||
Defined in Codec.Picture.Jpg.Internal.Types type Rep JFifUnit = D1 ('MetaData "JFifUnit" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Ln65lRJQsFXFdla0se6Pt7" '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))) |
Type introduced only to avoid some typeclass overlapping problem
Constructors
TableList [a] |
newtype RestartInterval Source #
Constructors
RestartInterval Word16 |
Instances
Binary RestartInterval Source # | |
Defined in Codec.Picture.Jpg.Internal.Types |
getJpgImage :: Get JpgImage Source #
Like get
from `instance Binary JpgImage`, but without the legacy
semi-lazy implementation.
calculateSize :: SizeCalculable a => a -> Int Source #
dctBlockSize :: Num a => a Source #
parseECS :: Get ByteString Source #
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 Source #
Simpler implementation of parseECS
to allow an easier understanding
of the logic, and to provide a comparison for correctness.
skipUntilFrames :: Get () Source #
skipFrameMarker :: Get () Source #
parseFrameOfKind :: JpgFrameKind -> Get (Maybe JpgFrame) Source #
Parses a single frame.
Returns Nothing
when we encounter a frame we want to skip.
parseFrames :: Get [JpgFrame] Source #
Parse a list of JpgFrame
s.
parseFrameKinds :: Get [(JpgFrameKind, Int64, Int64)] Source #
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) Source #
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
).