Codec.Picture.Jpg.Internal.Types

JuicyPixels-3.3.8: Picture loading/serialization (in png, jpeg, bitmap, gif, tga, tiff and radiance)

Safe Haskell | None
Language | Haskell2010

Codec.Picture.Jpg.Internal.Types

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 {
  - jpgFrame :: [JpgFrame]
  }
- 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
  - = BaseLineDCT
  - | ProgressiveDCT
- data JpgScanSpecification = JpgScanSpecification {
  - componentSelector :: !Word8
  - dcEntropyCodingTable :: !Word8
  - acEntropyCodingTable :: !Word8
  }
- data JpgColorSpace
  - = JpgColorSpaceYCbCr
  - | JpgColorSpaceYCC
  - | JpgColorSpaceY
  - | JpgColorSpaceYA
  - | JpgColorSpaceYCCA
  - | JpgColorSpaceYCCK
  - | JpgColorSpaceCMYK
  - | JpgColorSpaceRGB
  - | JpgColorSpaceRGBA
- data AdobeTransform
  - = AdobeUnknown
  - | AdobeYCbCr
  - | AdobeYCck
- 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
  - = JFifUnitUnknown
  - | JFifPixelsPerInch
  - | JFifPixelsPerCentimeter
- calculateSize :: SizeCalculable a => a -> Int
- dctBlockSize :: Num a => a

# 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

data JpgImage #

Constructors

JpgImage |
Fields jpgFrame :: [JpgFrame]

#### Instances

Instances details

Show JpgImage # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgImage -> ShowS # show :: JpgImage -> String # showList :: [JpgImage] -> ShowS #
Binary JpgImage # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgImage -> Put # get :: Get JpgImage # putList :: [JpgImage] -> Put #

data JpgComponent #

Constructors

JpgComponent |
Fields componentIdentifier :: !Word8 horizontalSamplingFactor :: !Word8 Stored with 4 bits verticalSamplingFactor :: !Word8 Stored with 4 bits quantizationTableDest :: !Word8

#### Instances

Instances details

Show JpgComponent # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgComponent -> ShowS # show :: JpgComponent -> String # showList :: [JpgComponent] -> ShowS #
Binary JpgComponent # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgComponent -> Put # get :: Get JpgComponent # putList :: [JpgComponent] -> Put #

data JpgFrameHeader #

Constructors

JpgFrameHeader |
Fields jpgFrameHeaderLength :: !Word16 jpgSamplePrecision :: !Word8 jpgHeight :: !Word16 jpgWidth :: !Word16 jpgImageComponentCount :: !Word8 jpgComponents :: ![JpgComponent]

#### Instances

Instances details

Show JpgFrameHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrameHeader -> ShowS # show :: JpgFrameHeader -> String # showList :: [JpgFrameHeader] -> ShowS #
Binary JpgFrameHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgFrameHeader -> Put # get :: Get JpgFrameHeader # putList :: [JpgFrameHeader] -> Put #

data JpgFrame #

Constructors

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 |

#### Instances

Instances details

Show JpgFrame # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrame -> ShowS # show :: JpgFrame -> String # showList :: [JpgFrame] -> ShowS #

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

Instances details

Show JpgFrameKind # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgFrameKind -> ShowS # show :: JpgFrameKind -> String # showList :: [JpgFrameKind] -> ShowS #
Binary JpgFrameKind # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgFrameKind -> Put # get :: Get JpgFrameKind # putList :: [JpgFrameKind] -> Put #
Eq JpgFrameKind # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods (==) :: JpgFrameKind -> JpgFrameKind -> Bool # (/=) :: JpgFrameKind -> JpgFrameKind -> Bool #

data JpgScanHeader #

Constructors

JpgScanHeader |
Fields scanLength :: !Word16 scanComponentCount :: !Word8 scans :: [JpgScanSpecification] spectralSelection :: (Word8, Word8) (begin, end) successiveApproxHigh :: !Word8 Encoded as 4 bits successiveApproxLow :: !Word8 Encoded as 4 bits

#### Instances

Instances details

Show JpgScanHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgScanHeader -> ShowS # show :: JpgScanHeader -> String # showList :: [JpgScanHeader] -> ShowS #
Binary JpgScanHeader # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgScanHeader -> Put # get :: Get JpgScanHeader # putList :: [JpgScanHeader] -> Put #

data JpgQuantTableSpec #

Constructors

JpgQuantTableSpec |
Fields quantPrecision :: !Word8 Stored on 4 bits quantDestination :: !Word8 Stored on 4 bits quantTable :: MacroBlock Int16

#### Instances

Instances details

Show JpgQuantTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgQuantTableSpec -> ShowS # show :: JpgQuantTableSpec -> String # showList :: [JpgQuantTableSpec] -> ShowS #
Binary JpgQuantTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgQuantTableSpec -> Put # get :: Get JpgQuantTableSpec # putList :: [JpgQuantTableSpec] -> Put #

data JpgHuffmanTableSpec #

Constructors

JpgHuffmanTableSpec |
Fields huffmanTableClass :: !DctComponent 0 : DC, 1 : AC, stored on 4 bits huffmanTableDest :: !Word8 Stored on 4 bits huffSizes :: !(Vector Word8) huffCodes :: !(Vector (Vector Word8))

#### Instances

Instances details

Show JpgHuffmanTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgHuffmanTableSpec -> ShowS # show :: JpgHuffmanTableSpec -> String # showList :: [JpgHuffmanTableSpec] -> ShowS #
Binary JpgHuffmanTableSpec # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgHuffmanTableSpec -> Put # get :: Get JpgHuffmanTableSpec # putList :: [JpgHuffmanTableSpec] -> Put #

data JpgImageKind #

Constructors

BaseLineDCT |
ProgressiveDCT |

data JpgScanSpecification #

Constructors

JpgScanSpecification |
Fields componentSelector :: !Word8 dcEntropyCodingTable :: !Word8 Encoded as 4 bits acEntropyCodingTable :: !Word8 Encoded as 4 bits

#### Instances

Instances details

Show JpgScanSpecification # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgScanSpecification -> ShowS # show :: JpgScanSpecification -> String # showList :: [JpgScanSpecification] -> ShowS #
Binary JpgScanSpecification # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgScanSpecification -> Put # get :: Get JpgScanSpecification # putList :: [JpgScanSpecification] -> Put #

data JpgColorSpace #

Constructors

JpgColorSpaceYCbCr |
JpgColorSpaceYCC |
JpgColorSpaceY |
JpgColorSpaceYA |
JpgColorSpaceYCCA |
JpgColorSpaceYCCK |
JpgColorSpaceCMYK |
JpgColorSpaceRGB |
JpgColorSpaceRGBA |

#### Instances

Instances details

Show JpgColorSpace # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgColorSpace -> ShowS # show :: JpgColorSpace -> String # showList :: [JpgColorSpace] -> ShowS #

data AdobeTransform #

Constructors

AdobeUnknown | Value 0
AdobeYCbCr | value 1
AdobeYCck | value 2

#### Instances

Instances details

Show AdobeTransform # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> AdobeTransform -> ShowS # show :: AdobeTransform -> String # showList :: [AdobeTransform] -> ShowS #
Binary AdobeTransform # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: AdobeTransform -> Put # get :: Get AdobeTransform # putList :: [AdobeTransform] -> Put #

data JpgAdobeApp14 #

Constructors

JpgAdobeApp14 |
Fields _adobeDctVersion :: !Word16 _adobeFlag0 :: !Word16 _adobeFlag1 :: !Word16 _adobeTransform :: !AdobeTransform

#### Instances

Instances details

Show JpgAdobeApp14 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgAdobeApp14 -> ShowS # show :: JpgAdobeApp14 -> String # showList :: [JpgAdobeApp14] -> ShowS #
Binary JpgAdobeApp14 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgAdobeApp14 -> Put # get :: Get JpgAdobeApp14 # putList :: [JpgAdobeApp14] -> Put #

data JpgJFIFApp0 #

Constructors

JpgJFIFApp0 |
Fields _jfifUnit :: !JFifUnit _jfifDpiX :: !Word16 _jfifDpiY :: !Word16 _jfifThumbnail :: !(Maybe Int)

#### Instances

Instances details

Show JpgJFIFApp0 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JpgJFIFApp0 -> ShowS # show :: JpgJFIFApp0 -> String # showList :: [JpgJFIFApp0] -> ShowS #
Binary JpgJFIFApp0 # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JpgJFIFApp0 -> Put # get :: Get JpgJFIFApp0 # putList :: [JpgJFIFApp0] -> Put #

data JFifUnit #

Size: 1

Constructors

JFifUnitUnknown | 0
JFifPixelsPerInch | 1
JFifPixelsPerCentimeter | 2

#### Instances

Instances details

Show JFifUnit # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods showsPrec :: Int -> JFifUnit -> ShowS # show :: JFifUnit -> String # showList :: [JFifUnit] -> ShowS #
Binary JFifUnit # |
Instance details Defined in Codec.Picture.Jpg.Internal.Types Methods put :: JFifUnit -> Put # get :: Get JFifUnit # putList :: [JFifUnit] -> Put #

calculateSize :: SizeCalculable a => a -> Int #

dctBlockSize :: Num a => a #