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

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

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 JpgImage Source #

Constructors

JpgImage 

Fields

Instances

Instances details
Generic JpgImage Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgImage :: Type -> Type

Methods

from :: JpgImage -> Rep JpgImage x

to :: Rep JpgImage x -> JpgImage

Show JpgImage Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgImage -> ShowS

show :: JpgImage -> String

showList :: [JpgImage] -> ShowS

Binary JpgImage Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: JpgImage -> Put

get :: Get JpgImage

putList :: [JpgImage] -> Put

NFData JpgImage Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgImage -> ()

Eq JpgImage Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

(==) :: JpgImage -> JpgImage -> Bool

(/=) :: JpgImage -> JpgImage -> Bool

type Rep JpgImage Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

type Rep JpgImage = D1 ('MetaData "JpgImage" "Codec.Picture.Jpg.Internal.Types" "JuicyPixels-3.3.9-Fpv7pN9BKOy7eCVQxsU3eX" 'False) (C1 ('MetaCons "JpgImage" 'PrefixI 'True) (S1 ('MetaSel ('Just "jpgFrame") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [JpgFrame])))

data JpgComponent Source #

Constructors

JpgComponent 

Fields

Instances

Instances details
Generic JpgComponent Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgComponent :: Type -> Type

Show JpgComponent Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgComponent -> ShowS

show :: JpgComponent -> String

showList :: [JpgComponent] -> ShowS

Binary JpgComponent Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: JpgComponent -> Put

get :: Get JpgComponent

putList :: [JpgComponent] -> Put

NFData JpgComponent Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgComponent -> ()

Eq JpgComponent Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

(==) :: JpgComponent -> JpgComponent -> Bool

(/=) :: JpgComponent -> JpgComponent -> Bool

type Rep JpgComponent Source # 
Instance details

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

Instances details
Generic JpgFrameHeader Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgFrameHeader :: Type -> Type

Show JpgFrameHeader Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgFrameHeader -> ShowS

show :: JpgFrameHeader -> String

showList :: [JpgFrameHeader] -> ShowS

Binary JpgFrameHeader Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: JpgFrameHeader -> Put

get :: Get JpgFrameHeader

putList :: [JpgFrameHeader] -> Put

NFData JpgFrameHeader Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgFrameHeader -> ()

Eq JpgFrameHeader Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

type Rep JpgFrameHeader Source # 
Instance details

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])))))

data JpgFrame Source #

Constructors

JpgAppFrame !Word8 ByteString 
JpgAdobeAPP14 !JpgAdobeApp14 
JpgJFIF !JpgJFIFApp0 
JpgExif ![ImageFileDirectory] 
JpgExtension !Word8 ByteString 
JpgQuantTable ![JpgQuantTableSpec] 
JpgHuffmanTable ![(JpgHuffmanTableSpec, HuffmanPackedTree)] 
JpgScanBlob !JpgScanHeader !ByteString

The ByteString is the ECS (Entropy-Coded Segment), typically the largest part of compressed image data.

JpgScans !JpgFrameKind !JpgFrameHeader 
JpgIntervalRestart !Word16 

Instances

Instances details
Generic JpgFrame Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgFrame :: Type -> Type

Methods

from :: JpgFrame -> Rep JpgFrame x

to :: Rep JpgFrame x -> JpgFrame

Show JpgFrame Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgFrame -> ShowS

show :: JpgFrame -> String

showList :: [JpgFrame] -> ShowS

NFData JpgFrame Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgFrame -> ()

Eq JpgFrame Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

(==) :: JpgFrame -> JpgFrame -> Bool

(/=) :: JpgFrame -> JpgFrame -> Bool

type Rep JpgFrame Source # 
Instance details

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 #

Instances

Instances details
Generic JpgFrameKind Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgFrameKind :: Type -> Type

Show JpgFrameKind Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgFrameKind -> ShowS

show :: JpgFrameKind -> String

showList :: [JpgFrameKind] -> ShowS

Binary JpgFrameKind Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: JpgFrameKind -> Put

get :: Get JpgFrameKind

putList :: [JpgFrameKind] -> Put

NFData JpgFrameKind Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgFrameKind -> ()

Eq JpgFrameKind Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

(==) :: JpgFrameKind -> JpgFrameKind -> Bool

(/=) :: JpgFrameKind -> JpgFrameKind -> Bool

type Rep JpgFrameKind Source # 
Instance details

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

Instances details
Generic JpgScanHeader Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgScanHeader :: Type -> Type

Show JpgScanHeader Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgScanHeader -> ShowS

show :: JpgScanHeader -> String

showList :: [JpgScanHeader] -> ShowS

Binary JpgScanHeader Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: JpgScanHeader -> Put

get :: Get JpgScanHeader

putList :: [JpgScanHeader] -> Put

NFData JpgScanHeader Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgScanHeader -> ()

Eq JpgScanHeader Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

type Rep JpgScanHeader Source # 
Instance details

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

Instances details
Generic JpgQuantTableSpec Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgQuantTableSpec :: Type -> Type

Show JpgQuantTableSpec Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgQuantTableSpec -> ShowS

show :: JpgQuantTableSpec -> String

showList :: [JpgQuantTableSpec] -> ShowS

Binary JpgQuantTableSpec Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

NFData JpgQuantTableSpec Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgQuantTableSpec -> ()

Eq JpgQuantTableSpec Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

type Rep JpgQuantTableSpec Source # 
Instance details

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

Instances details
Generic JpgHuffmanTableSpec Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgHuffmanTableSpec :: Type -> Type

Show JpgHuffmanTableSpec Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgHuffmanTableSpec -> ShowS

show :: JpgHuffmanTableSpec -> String

showList :: [JpgHuffmanTableSpec] -> ShowS

Binary JpgHuffmanTableSpec Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

NFData JpgHuffmanTableSpec Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgHuffmanTableSpec -> ()

Eq JpgHuffmanTableSpec Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

type Rep JpgHuffmanTableSpec Source # 
Instance details

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 JpgScanSpecification Source #

Constructors

JpgScanSpecification 

Fields

Instances

Instances details
Generic JpgScanSpecification Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgScanSpecification :: Type -> Type

Show JpgScanSpecification Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgScanSpecification -> ShowS

show :: JpgScanSpecification -> String

showList :: [JpgScanSpecification] -> ShowS

Binary JpgScanSpecification Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

NFData JpgScanSpecification Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgScanSpecification -> ()

Eq JpgScanSpecification Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

type Rep JpgScanSpecification Source # 
Instance details

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 #

Instances

Instances details
Generic JpgColorSpace Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgColorSpace :: Type -> Type

Show JpgColorSpace Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgColorSpace -> ShowS

show :: JpgColorSpace -> String

showList :: [JpgColorSpace] -> ShowS

NFData JpgColorSpace Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgColorSpace -> ()

Eq JpgColorSpace Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

type Rep JpgColorSpace Source # 
Instance details

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

Instances details
Generic AdobeTransform Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep AdobeTransform :: Type -> Type

Show AdobeTransform Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> AdobeTransform -> ShowS

show :: AdobeTransform -> String

showList :: [AdobeTransform] -> ShowS

Binary AdobeTransform Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: AdobeTransform -> Put

get :: Get AdobeTransform

putList :: [AdobeTransform] -> Put

NFData AdobeTransform Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: AdobeTransform -> ()

Eq AdobeTransform Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

type Rep AdobeTransform Source # 
Instance details

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

Instances details
Generic JpgAdobeApp14 Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgAdobeApp14 :: Type -> Type

Show JpgAdobeApp14 Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgAdobeApp14 -> ShowS

show :: JpgAdobeApp14 -> String

showList :: [JpgAdobeApp14] -> ShowS

Binary JpgAdobeApp14 Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: JpgAdobeApp14 -> Put

get :: Get JpgAdobeApp14

putList :: [JpgAdobeApp14] -> Put

NFData JpgAdobeApp14 Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgAdobeApp14 -> ()

Eq JpgAdobeApp14 Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

type Rep JpgAdobeApp14 Source # 
Instance details

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

Instances details
Generic JpgJFIFApp0 Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JpgJFIFApp0 :: Type -> Type

Methods

from :: JpgJFIFApp0 -> Rep JpgJFIFApp0 x

to :: Rep JpgJFIFApp0 x -> JpgJFIFApp0

Show JpgJFIFApp0 Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JpgJFIFApp0 -> ShowS

show :: JpgJFIFApp0 -> String

showList :: [JpgJFIFApp0] -> ShowS

Binary JpgJFIFApp0 Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: JpgJFIFApp0 -> Put

get :: Get JpgJFIFApp0

putList :: [JpgJFIFApp0] -> Put

NFData JpgJFIFApp0 Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JpgJFIFApp0 -> ()

Eq JpgJFIFApp0 Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

(==) :: JpgJFIFApp0 -> JpgJFIFApp0 -> Bool

(/=) :: JpgJFIFApp0 -> JpgJFIFApp0 -> Bool

type Rep JpgJFIFApp0 Source # 
Instance details

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)))))

data JFifUnit Source #

Size: 1

Instances

Instances details
Generic JFifUnit Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Associated Types

type Rep JFifUnit :: Type -> Type

Methods

from :: JFifUnit -> Rep JFifUnit x

to :: Rep JFifUnit x -> JFifUnit

Show JFifUnit Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

showsPrec :: Int -> JFifUnit -> ShowS

show :: JFifUnit -> String

showList :: [JFifUnit] -> ShowS

Binary JFifUnit Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: JFifUnit -> Put

get :: Get JFifUnit

putList :: [JFifUnit] -> Put

NFData JFifUnit Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

rnf :: JFifUnit -> ()

Eq JFifUnit Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

(==) :: JFifUnit -> JFifUnit -> Bool

(/=) :: JFifUnit -> JFifUnit -> Bool

type Rep JFifUnit Source # 
Instance details

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)))

newtype TableList a Source #

Type introduced only to avoid some typeclass overlapping problem

Constructors

TableList [a] 

Instances

Instances details
(SizeCalculable a, Binary a) => Binary (TableList a) Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: TableList a -> Put

get :: Get (TableList a)

putList :: [TableList a] -> Put

newtype RestartInterval Source #

Constructors

RestartInterval Word16 

Instances

Instances details
Binary RestartInterval Source # 
Instance details

Defined in Codec.Picture.Jpg.Internal.Types

Methods

put :: RestartInterval -> Put

get :: Get RestartInterval

putList :: [RestartInterval] -> Put

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.

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 JpgFrames.

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

Parse a list of JpgFrameKinds 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).