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

Safe Haskell | None
Language | Haskell2010

Codec.Picture.Jpg.Internal.DefaultTable

Description

Module used by the jpeg decoder internally, shouldn't be used in user code.

Synopsis

- data DctComponent
  - = DcComponent
  - | AcComponent
- data HuffmanTree
  - = Branch HuffmanTree HuffmanTree
  - | Leaf Word8
  - | Empty
- type HuffmanTable = [[Word8]]
- type HuffmanPackedTree = Vector Word16
- type MacroBlock a = Vector a
- type QuantificationTable = MacroBlock Int16
- type HuffmanWriterCode = Vector (Word8, Word16)
- scaleQuantisationMatrix :: Int -> QuantificationTable -> QuantificationTable
- makeMacroBlock :: Storable a => [a] -> MacroBlock a
- makeInverseTable :: HuffmanTree -> HuffmanWriterCode
- buildHuffmanTree :: [[Word8]] -> HuffmanTree
- packHuffmanTree :: HuffmanTree -> HuffmanPackedTree
- huffmanPackedDecode :: HuffmanPackedTree -> BoolReader s Word8
- defaultChromaQuantizationTable :: QuantificationTable
- defaultLumaQuantizationTable :: QuantificationTable
- defaultAcChromaHuffmanTree :: HuffmanTree
- defaultAcChromaHuffmanTable :: HuffmanTable
- defaultAcLumaHuffmanTree :: HuffmanTree
- defaultAcLumaHuffmanTable :: HuffmanTable
- defaultDcChromaHuffmanTree :: HuffmanTree
- defaultDcChromaHuffmanTable :: HuffmanTable
- defaultDcLumaHuffmanTree :: HuffmanTree
- defaultDcLumaHuffmanTable :: HuffmanTable

# Documentation

data DctComponent #

Enumeration used to search in the tables for different components.

Constructors

DcComponent |
AcComponent |

#### Instances

Instances details

Eq DctComponent # |
Instance details Defined in Codec.Picture.Jpg.Internal.DefaultTable Methods (==) :: DctComponent -> DctComponent -> Bool # (/=) :: DctComponent -> DctComponent -> Bool #
Show DctComponent # |
Instance details Defined in Codec.Picture.Jpg.Internal.DefaultTable Methods showsPrec :: Int -> DctComponent -> ShowS # show :: DctComponent -> String # showList :: [DctComponent] -> ShowS #

data HuffmanTree #

Tree storing the code used for huffman encoding.

Constructors

Branch HuffmanTree HuffmanTree | If bit is 0 take the first subtree, if 1, the right.
Leaf Word8 | We should output the value
Empty | no value present

#### Instances

Instances details

Eq HuffmanTree # |
Instance details Defined in Codec.Picture.Jpg.Internal.DefaultTable Methods (==) :: HuffmanTree -> HuffmanTree -> Bool # (/=) :: HuffmanTree -> HuffmanTree -> Bool #
Show HuffmanTree # |
Instance details Defined in Codec.Picture.Jpg.Internal.DefaultTable Methods showsPrec :: Int -> HuffmanTree -> ShowS # show :: HuffmanTree -> String # showList :: [HuffmanTree] -> ShowS #

type HuffmanTable = [[Word8]] #

type HuffmanPackedTree = Vector Word16 #

type MacroBlock a = Vector a #

Represent a compact array of 8 * 8 values. The size is not guarenteed by type system, but if makeMacroBlock is used, everything should be fine size-wise

type QuantificationTable = MacroBlock Int16 #

type HuffmanWriterCode = Vector (Word8, Word16) #

scaleQuantisationMatrix :: Int -> QuantificationTable -> QuantificationTable #

makeMacroBlock :: Storable a => [a] -> MacroBlock a #

Helper function to create pure macro block of the good size.

makeInverseTable :: HuffmanTree -> HuffmanWriterCode #

buildHuffmanTree :: [[Word8]] -> HuffmanTree #

Transform parsed coefficients from the jpeg header to a tree which can be used to decode data.

packHuffmanTree :: HuffmanTree -> HuffmanPackedTree #

huffmanPackedDecode :: HuffmanPackedTree -> BoolReader s Word8 #

defaultChromaQuantizationTable :: QuantificationTable #

defaultLumaQuantizationTable :: QuantificationTable #

defaultAcChromaHuffmanTree :: HuffmanTree #

defaultAcChromaHuffmanTable :: HuffmanTable #

defaultAcLumaHuffmanTree :: HuffmanTree #

defaultAcLumaHuffmanTable :: HuffmanTable #

From the Table K.5 of ITU-81 (p154)

defaultDcChromaHuffmanTree :: HuffmanTree #

defaultDcChromaHuffmanTable :: HuffmanTable #

From the Table K.4 of ITU-81 (p153)

defaultDcLumaHuffmanTree :: HuffmanTree #

defaultDcLumaHuffmanTable :: HuffmanTable #

From the Table K.3 of ITU-81 (p153)