Safe Haskell | Safe-Inferred |
---|---|
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
data JpgComponent Source #
Constructors
JpgComponent | |
Fields
|
Instances
Generic JpgComponent Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep JpgComponent :: Type -> Type | |
Show JpgComponent Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgComponent -> ShowS show :: JpgComponent -> String showList :: [JpgComponent] -> ShowS | |
Binary JpgComponent Source # | |
Defined in Codec.Picture.Jpg.Internal.Types | |
NFData JpgComponent Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgComponent -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JpgFrameHeader Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep JpgFrameHeader :: Type -> Type | |
Show JpgFrameHeader Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrameHeader -> ShowS show :: JpgFrameHeader -> String showList :: [JpgFrameHeader] -> ShowS | |
Binary JpgFrameHeader Source # | |
Defined in Codec.Picture.Jpg.Internal.Types | |
NFData JpgFrameHeader Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgFrameHeader -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JpgFrame Source # | |
Show JpgFrame Source # | |
NFData JpgFrame Source # | |
Defined in Codec.Picture.Jpg.Internal.Types | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JpgFrameKind Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep JpgFrameKind :: Type -> Type | |
Show JpgFrameKind Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrameKind -> ShowS show :: JpgFrameKind -> String showList :: [JpgFrameKind] -> ShowS | |
Binary JpgFrameKind Source # | |
Defined in Codec.Picture.Jpg.Internal.Types | |
NFData JpgFrameKind Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgFrameKind -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JpgScanHeader Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep JpgScanHeader :: Type -> Type | |
Show JpgScanHeader Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgScanHeader -> ShowS show :: JpgScanHeader -> String showList :: [JpgScanHeader] -> ShowS | |
Binary JpgScanHeader Source # | |
Defined in Codec.Picture.Jpg.Internal.Types | |
NFData JpgScanHeader Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgScanHeader -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JpgQuantTableSpec Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep JpgQuantTableSpec :: Type -> Type 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 | |
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 -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JpgHuffmanTableSpec Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep JpgHuffmanTableSpec :: Type -> Type 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 | |
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 -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JpgScanSpecification Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep JpgScanSpecification :: Type -> Type 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 | |
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 -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JpgColorSpace Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep JpgColorSpace :: Type -> Type | |
Show JpgColorSpace Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgColorSpace -> ShowS show :: JpgColorSpace -> String showList :: [JpgColorSpace] -> ShowS | |
NFData JpgColorSpace Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgColorSpace -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic AdobeTransform Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep AdobeTransform :: Type -> Type | |
Show AdobeTransform Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> AdobeTransform -> ShowS show :: AdobeTransform -> String showList :: [AdobeTransform] -> ShowS | |
Binary AdobeTransform Source # | |
Defined in Codec.Picture.Jpg.Internal.Types | |
NFData AdobeTransform Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: AdobeTransform -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JpgAdobeApp14 Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep JpgAdobeApp14 :: Type -> Type | |
Show JpgAdobeApp14 Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgAdobeApp14 -> ShowS show :: JpgAdobeApp14 -> String showList :: [JpgAdobeApp14] -> ShowS | |
Binary JpgAdobeApp14 Source # | |
Defined in Codec.Picture.Jpg.Internal.Types | |
NFData JpgAdobeApp14 Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgAdobeApp14 -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JpgJFIFApp0 Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Associated Types type Rep JpgJFIFApp0 :: Type -> Type | |
Show JpgJFIFApp0 Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgJFIFApp0 -> ShowS show :: JpgJFIFApp0 -> String showList :: [JpgJFIFApp0] -> ShowS | |
Binary JpgJFIFApp0 Source # | |
Defined in Codec.Picture.Jpg.Internal.Types | |
NFData JpgJFIFApp0 Source # | |
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgJFIFApp0 -> () | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
Generic JFifUnit Source # | |
Show JFifUnit Source # | |
Binary JFifUnit Source # | |
NFData JFifUnit Source # | |
Defined in Codec.Picture.Jpg.Internal.Types | |
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-Fpv7pN9BKOy7eCVQxsU3eX" '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
).