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 {}
- data JpgFrameHeader = JpgFrameHeader {}
- 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 {}
- data JpgQuantTableSpec = JpgQuantTableSpec {}
- data JpgHuffmanTableSpec = JpgHuffmanTableSpec {
- huffmanTableClass :: !DctComponent
- huffmanTableDest :: !Word8
- huffSizes :: !(Vector Word8)
- huffCodes :: !(Vector (Vector Word8))
- data JpgImageKind
- data JpgScanSpecification = JpgScanSpecification {}
- data JpgColorSpace
- data AdobeTransform
- data JpgAdobeApp14 = JpgAdobeApp14 {}
- data JpgJFIFApp0 = JpgJFIFApp0 {}
- 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 #
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
Instances
Binary JpgImage # | |||||
NFData JpgImage # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
Generic JpgImage # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgImage # | |||||
Eq JpgImage # | |||||
type Rep JpgImage # | |||||
Defined in Codec.Picture.Jpg.Internal.Types |
data JpgComponent #
Constructors
JpgComponent | |
Fields
|
Instances
data JpgFrameHeader #
Constructors
JpgFrameHeader | |
Fields
|
Instances
Binary JpgFrameHeader # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgFrameHeader -> Put # get :: Get JpgFrameHeader # putList :: [JpgFrameHeader] -> Put # | |||||
NFData JpgFrameHeader # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgFrameHeader -> () # | |||||
Generic JpgFrameHeader # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
Methods from :: JpgFrameHeader -> Rep JpgFrameHeader x # to :: Rep JpgFrameHeader x -> JpgFrameHeader # | |||||
Show JpgFrameHeader # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrameHeader -> ShowS # show :: JpgFrameHeader -> String # showList :: [JpgFrameHeader] -> ShowS # | |||||
Eq JpgFrameHeader # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgFrameHeader -> JpgFrameHeader -> Bool # (/=) :: JpgFrameHeader -> JpgFrameHeader -> Bool # | |||||
type Rep JpgFrameHeader # | |||||
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]))))) |
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 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
Generic JpgFrame # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgFrame # | |||||
Eq JpgFrame # | |||||
type Rep JpgFrame # | |||||
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
Binary JpgFrameKind # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData JpgFrameKind # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgFrameKind -> () # | |||||
Generic JpgFrameKind # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgFrameKind # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrameKind -> ShowS # show :: JpgFrameKind -> String # showList :: [JpgFrameKind] -> ShowS # | |||||
Eq JpgFrameKind # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
type Rep JpgFrameKind # | |||||
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
|
Instances
Binary JpgScanHeader # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData JpgScanHeader # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgScanHeader -> () # | |||||
Generic JpgScanHeader # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgScanHeader # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgScanHeader -> ShowS # show :: JpgScanHeader -> String # showList :: [JpgScanHeader] -> ShowS # | |||||
Eq JpgScanHeader # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgScanHeader -> JpgScanHeader -> Bool # (/=) :: JpgScanHeader -> JpgScanHeader -> Bool # | |||||
type Rep JpgScanHeader # | |||||
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
|
Instances
Binary JpgQuantTableSpec # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgQuantTableSpec -> Put # get :: Get JpgQuantTableSpec # putList :: [JpgQuantTableSpec] -> Put # | |||||
NFData JpgQuantTableSpec # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgQuantTableSpec -> () # | |||||
Generic JpgQuantTableSpec # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
Methods from :: JpgQuantTableSpec -> Rep JpgQuantTableSpec x # to :: Rep JpgQuantTableSpec x -> JpgQuantTableSpec # | |||||
Show JpgQuantTableSpec # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgQuantTableSpec -> ShowS # show :: JpgQuantTableSpec -> String # showList :: [JpgQuantTableSpec] -> ShowS # | |||||
Eq JpgQuantTableSpec # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgQuantTableSpec -> JpgQuantTableSpec -> Bool # (/=) :: JpgQuantTableSpec -> JpgQuantTableSpec -> Bool # | |||||
type Rep JpgQuantTableSpec # | |||||
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
|
Instances
Binary JpgHuffmanTableSpec # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgHuffmanTableSpec -> Put # get :: Get JpgHuffmanTableSpec # putList :: [JpgHuffmanTableSpec] -> Put # | |||||
NFData JpgHuffmanTableSpec # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgHuffmanTableSpec -> () # | |||||
Generic JpgHuffmanTableSpec # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
Methods from :: JpgHuffmanTableSpec -> Rep JpgHuffmanTableSpec x # to :: Rep JpgHuffmanTableSpec x -> JpgHuffmanTableSpec # | |||||
Show JpgHuffmanTableSpec # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgHuffmanTableSpec -> ShowS # show :: JpgHuffmanTableSpec -> String # showList :: [JpgHuffmanTableSpec] -> ShowS # | |||||
Eq JpgHuffmanTableSpec # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgHuffmanTableSpec -> JpgHuffmanTableSpec -> Bool # (/=) :: JpgHuffmanTableSpec -> JpgHuffmanTableSpec -> Bool # | |||||
type Rep JpgHuffmanTableSpec # | |||||
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
|
Instances
Binary JpgScanSpecification # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgScanSpecification -> Put # get :: Get JpgScanSpecification # putList :: [JpgScanSpecification] -> Put # | |||||
NFData JpgScanSpecification # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgScanSpecification -> () # | |||||
Generic JpgScanSpecification # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
Methods from :: JpgScanSpecification -> Rep JpgScanSpecification x # to :: Rep JpgScanSpecification x -> JpgScanSpecification # | |||||
Show JpgScanSpecification # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgScanSpecification -> ShowS # show :: JpgScanSpecification -> String # showList :: [JpgScanSpecification] -> ShowS # | |||||
Eq JpgScanSpecification # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgScanSpecification -> JpgScanSpecification -> Bool # (/=) :: JpgScanSpecification -> JpgScanSpecification -> Bool # | |||||
type Rep JpgScanSpecification # | |||||
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
NFData JpgColorSpace # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgColorSpace -> () # | |||||
Generic JpgColorSpace # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgColorSpace # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgColorSpace -> ShowS # show :: JpgColorSpace -> String # showList :: [JpgColorSpace] -> ShowS # | |||||
Eq JpgColorSpace # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgColorSpace -> JpgColorSpace -> Bool # (/=) :: JpgColorSpace -> JpgColorSpace -> Bool # | |||||
type Rep JpgColorSpace # | |||||
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
Binary AdobeTransform # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods put :: AdobeTransform -> Put # get :: Get AdobeTransform # putList :: [AdobeTransform] -> Put # | |||||
NFData AdobeTransform # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: AdobeTransform -> () # | |||||
Generic AdobeTransform # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
Methods from :: AdobeTransform -> Rep AdobeTransform x # to :: Rep AdobeTransform x -> AdobeTransform # | |||||
Show AdobeTransform # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> AdobeTransform -> ShowS # show :: AdobeTransform -> String # showList :: [AdobeTransform] -> ShowS # | |||||
Eq AdobeTransform # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: AdobeTransform -> AdobeTransform -> Bool # (/=) :: AdobeTransform -> AdobeTransform -> Bool # | |||||
type Rep AdobeTransform # | |||||
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
|
Instances
Binary JpgAdobeApp14 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData JpgAdobeApp14 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgAdobeApp14 -> () # | |||||
Generic JpgAdobeApp14 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgAdobeApp14 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgAdobeApp14 -> ShowS # show :: JpgAdobeApp14 -> String # showList :: [JpgAdobeApp14] -> ShowS # | |||||
Eq JpgAdobeApp14 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgAdobeApp14 -> JpgAdobeApp14 -> Bool # (/=) :: JpgAdobeApp14 -> JpgAdobeApp14 -> Bool # | |||||
type Rep JpgAdobeApp14 # | |||||
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 | |
Instances
Binary JpgJFIFApp0 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
NFData JpgJFIFApp0 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods rnf :: JpgJFIFApp0 -> () # | |||||
Generic JpgJFIFApp0 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JpgJFIFApp0 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgJFIFApp0 -> ShowS # show :: JpgJFIFApp0 -> String # showList :: [JpgJFIFApp0] -> ShowS # | |||||
Eq JpgJFIFApp0 # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
type Rep JpgJFIFApp0 # | |||||
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))))) |
Size: 1
Constructors
JFifUnitUnknown | 0 |
JFifPixelsPerInch | 1 |
JFifPixelsPerCentimeter | 2 |
Instances
Binary JFifUnit # | |||||
NFData JFifUnit # | |||||
Defined in Codec.Picture.Jpg.Internal.Types | |||||
Generic JFifUnit # | |||||
Defined in Codec.Picture.Jpg.Internal.Types Associated Types
| |||||
Show JFifUnit # | |||||
Eq JFifUnit # | |||||
type Rep JFifUnit # | |||||
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))) |
Type introduced only to avoid some typeclass overlapping problem
Constructors
TableList [a] |
newtype RestartInterval #
Constructors
RestartInterval Word16 |
Instances
Binary RestartInterval # | |
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
).