Codec.Picture.Png.Internal.Type

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

Safe Haskell | None
Language | Haskell2010

Codec.Picture.Png.Internal.Type

Contents

- Low level types

Description

Low level png module, you should import `Internal` instead.

Synopsis

- data PngIHdr = PngIHdr {
  - width :: !Word32
  - height :: !Word32
  - bitDepth :: !Word8
  - colourType :: !PngImageType
  - compressionMethod :: !Word8
  - filterMethod :: !Word8
  - interlaceMethod :: !PngInterlaceMethod
  }
- data PngFilter
  - = FilterNone
  - | FilterSub
  - | FilterUp
  - | FilterAverage
  - | FilterPaeth
- data PngInterlaceMethod
  - = PngNoInterlace
  - | PngInterlaceAdam7
- type PngPalette = Palette' PixelRGB8
- data PngImageType
  - = PngGreyscale
  - | PngTrueColour
  - | PngIndexedColor
  - | PngGreyscaleWithAlpha
  - | PngTrueColourWithAlpha
- data PngPhysicalDimension = PngPhysicalDimension {
  - pngDpiX :: !Word32
  - pngDpiY :: !Word32
  - pngUnit :: !PngUnit
  }
- newtype PngGamma = PngGamma {
  - getPngGamma :: Double
  }
- data PngUnit
  - = PngUnitUnknown
  - | PngUnitMeter
- data APngAnimationControl = APngAnimationControl {
  - animationFrameCount :: !Word32
  - animationPlayCount :: !Word32
  }
- data APngFrameDisposal
  - = APngDisposeNone
  - | APngDisposeBackground
  - | APngDisposePrevious
- data APngBlendOp
  - = APngBlendSource
  - | APngBlendOver
- data APngFrameControl = APngFrameControl {
  - frameSequenceNum :: !Word32
  - frameWidth :: !Word32
  - frameHeight :: !Word32
  - frameLeft :: !Word32
  - frameTop :: !Word32
  - frameDelayNumerator :: !Word16
  - frameDelayDenuminator :: !Word16
  - frameDisposal :: !APngFrameDisposal
  - frameBlending :: !APngBlendOp
  }
- parsePalette :: PngRawChunk -> Either String PngPalette
- pngComputeCrc :: [ByteString] -> Word32
- pngSignature :: ChunkSignature
- iHDRSignature :: ChunkSignature
- pLTESignature :: ChunkSignature
- iDATSignature :: ChunkSignature
- iENDSignature :: ChunkSignature
- tRNSSignature :: ChunkSignature
- tEXtSignature :: ChunkSignature
- zTXtSignature :: ChunkSignature
- gammaSignature :: ChunkSignature
- pHYsSignature :: ChunkSignature
- animationControlSignature :: ChunkSignature
- type ChunkSignature = ByteString
- data PngRawImage = PngRawImage {
  - header :: PngIHdr
  - chunks :: [PngRawChunk]
  }
- data PngChunk = PngChunk {
  - pngChunkData :: ByteString
  - pngChunkSignature :: ChunkSignature
  }
- data PngRawChunk = PngRawChunk {
  - chunkLength :: Word32
  - chunkType :: ChunkSignature
  - chunkCRC :: Word32
  - chunkData :: ByteString
  }
- data PngLowLevel a = PngLowLevel {
  - pngImage :: Image a
  - pngChunks :: [PngChunk]
  }
- chunksWithSig :: PngRawImage -> ChunkSignature -> [ByteString]
- mkRawChunk :: ChunkSignature -> ByteString -> PngRawChunk

# Documentation

data PngIHdr #

Generic header used in PNG images.

Constructors

PngIHdr |
Fields width :: !Word32 Image width in number of pixel height :: !Word32 Image height in number of pixel bitDepth :: !Word8 Number of bit per sample colourType :: !PngImageType Kind of png image (greyscale, true color, indexed...) compressionMethod :: !Word8 Compression method used filterMethod :: !Word8 Must be 0 interlaceMethod :: !PngInterlaceMethod If the image is interlaced (for progressive rendering)

#### Instances

Instances details

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

data PngFilter #

The pixels value should be : +---+---+ | c | b | +---+---+ | a | x | +---+---+ x being the current filtered pixel

Constructors

FilterNone | Filt(x) = Orig(x), Recon(x) = Filt(x)
FilterSub | Filt(x) = Orig(x) - Orig(a), Recon(x) = Filt(x) + Recon(a)
FilterUp | Filt(x) = Orig(x) - Orig(b), Recon(x) = Filt(x) + Recon(b)
FilterAverage | Filt(x) = Orig(x) - floor((Orig(a) + Orig(b)) / 2), Recon(x) = Filt(x) + floor((Recon(a) + Recon(b)) / 2)
FilterPaeth | Filt(x) = Orig(x) - PaethPredictor(Orig(a), Orig(b), Orig(c)), Recon(x) = Filt(x) + PaethPredictor(Recon(a), Recon(b), Recon(c))

#### Instances

Instances details

Binary PngFilter # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods put :: PngFilter -> Put # get :: Get PngFilter # putList :: [PngFilter] -> Put #
Enum PngFilter # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods succ :: PngFilter -> PngFilter # pred :: PngFilter -> PngFilter # toEnum :: Int -> PngFilter # fromEnum :: PngFilter -> Int # enumFrom :: PngFilter -> [PngFilter] # enumFromThen :: PngFilter -> PngFilter -> [PngFilter] # enumFromTo :: PngFilter -> PngFilter -> [PngFilter] # enumFromThenTo :: PngFilter -> PngFilter -> PngFilter -> [PngFilter] #
Show PngFilter # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods showsPrec :: Int -> PngFilter -> ShowS # show :: PngFilter -> String # showList :: [PngFilter] -> ShowS #

data PngInterlaceMethod #

Different known interlace methods for PNG image

Constructors

PngNoInterlace | No interlacing, basic data ordering, line by line from left to right.
PngInterlaceAdam7 | Use the Adam7 ordering, see `adam7Reordering`

#### Instances

Instances details

Binary PngInterlaceMethod # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods put :: PngInterlaceMethod -> Put # get :: Get PngInterlaceMethod # putList :: [PngInterlaceMethod] -> Put #
Enum PngInterlaceMethod # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods succ :: PngInterlaceMethod -> PngInterlaceMethod # pred :: PngInterlaceMethod -> PngInterlaceMethod # toEnum :: Int -> PngInterlaceMethod # fromEnum :: PngInterlaceMethod -> Int # enumFrom :: PngInterlaceMethod -> [PngInterlaceMethod] # enumFromThen :: PngInterlaceMethod -> PngInterlaceMethod -> [PngInterlaceMethod] # enumFromTo :: PngInterlaceMethod -> PngInterlaceMethod -> [PngInterlaceMethod] # enumFromThenTo :: PngInterlaceMethod -> PngInterlaceMethod -> PngInterlaceMethod -> [PngInterlaceMethod] #
Show PngInterlaceMethod # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods showsPrec :: Int -> PngInterlaceMethod -> ShowS # show :: PngInterlaceMethod -> String # showList :: [PngInterlaceMethod] -> ShowS #

type PngPalette = Palette' PixelRGB8 #

Palette with indices beginning at 0 to elemcount - 1

data PngImageType #

What kind of information is encoded in the IDAT section of the PngFile

Constructors

PngGreyscale |
PngTrueColour |
PngIndexedColor |
PngGreyscaleWithAlpha |
PngTrueColourWithAlpha |

#### Instances

Instances details

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

data PngPhysicalDimension #

Constructors

PngPhysicalDimension |
Fields pngDpiX :: !Word32 pngDpiY :: !Word32 pngUnit :: !PngUnit

#### Instances

Instances details

Binary PngPhysicalDimension # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods put :: PngPhysicalDimension -> Put # get :: Get PngPhysicalDimension # putList :: [PngPhysicalDimension] -> Put #

newtype PngGamma #

Constructors

PngGamma |
Fields getPngGamma :: Double

#### Instances

Instances details

Binary PngGamma # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods put :: PngGamma -> Put # get :: Get PngGamma # putList :: [PngGamma] -> Put #

data PngUnit #

Constructors

PngUnitUnknown | 0 value
PngUnitMeter | 1 value

#### Instances

Instances details

Binary PngUnit # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods put :: PngUnit -> Put # get :: Get PngUnit # putList :: [PngUnit] -> Put #

data APngAnimationControl #

Constructors

APngAnimationControl |
Fields animationFrameCount :: !Word32 animationPlayCount :: !Word32

#### Instances

Instances details

Show APngAnimationControl # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods showsPrec :: Int -> APngAnimationControl -> ShowS # show :: APngAnimationControl -> String # showList :: [APngAnimationControl] -> ShowS #

data APngFrameDisposal #

Encoded in a Word8

Constructors

APngDisposeNone | No disposal is done on this frame before rendering the next; the contents of the output buffer are left as is. Has Value 0
APngDisposeBackground | The frame's region of the output buffer is to be cleared to fully transparent black before rendering the next frame. Has Value 1
APngDisposePrevious | the frame's region of the output buffer is to be reverted to the previous contents before rendering the next frame. Has Value 2

#### Instances

Instances details

Show APngFrameDisposal # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods showsPrec :: Int -> APngFrameDisposal -> ShowS # show :: APngFrameDisposal -> String # showList :: [APngFrameDisposal] -> ShowS #

data APngBlendOp #

Encoded in a Word8

Constructors

APngBlendSource | Overwrite output buffer. has value '0'
APngBlendOver | Alpha blend to the output buffer. Has value '1'

#### Instances

Instances details

Show APngBlendOp # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods showsPrec :: Int -> APngBlendOp -> ShowS # show :: APngBlendOp -> String # showList :: [APngBlendOp] -> ShowS #

data APngFrameControl #

Constructors

APngFrameControl |
Fields frameSequenceNum :: !Word32 Starting from 0 frameWidth :: !Word32 Width of the following frame frameHeight :: !Word32 Height of the following frame frameLeft :: !Word32 frameTop :: !Word32 frameDelayNumerator :: !Word16 frameDelayDenuminator :: !Word16 frameDisposal :: !APngFrameDisposal frameBlending :: !APngBlendOp

#### Instances

Instances details

Show APngFrameControl # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods showsPrec :: Int -> APngFrameControl -> ShowS # show :: APngFrameControl -> String # showList :: [APngFrameControl] -> ShowS #

parsePalette :: PngRawChunk -> Either String PngPalette #

Parse a palette from a png chunk.

pngComputeCrc :: [ByteString] -> Word32 #

Compute the CRC of a raw buffer, as described in annex D of the PNG specification.

pngSignature :: ChunkSignature #

Signature signalling that the following data will be a png image in the png bit stream

iHDRSignature :: ChunkSignature #

Signature for the header chunk of png (must be the first)

pLTESignature :: ChunkSignature #

Signature for a palette chunk in the pgn file. Must occure before iDAT.

iDATSignature :: ChunkSignature #

Signature for a data chuck (with image parts in it)

iENDSignature :: ChunkSignature #

Signature for the last chunk of a png image, telling the end.

tRNSSignature :: ChunkSignature #

tEXtSignature :: ChunkSignature #

zTXtSignature :: ChunkSignature #

gammaSignature :: ChunkSignature #

pHYsSignature :: ChunkSignature #

animationControlSignature :: ChunkSignature #

# Low level types

type ChunkSignature = ByteString #

Value used to identify a png chunk, must be 4 bytes long.

data PngRawImage #

Raw parsed image which need to be decoded.

Constructors

PngRawImage |
Fields header :: PngIHdr chunks :: [PngRawChunk]

#### Instances

Instances details

Binary PngRawImage # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods put :: PngRawImage -> Put # get :: Get PngRawImage # putList :: [PngRawImage] -> Put #

data PngChunk #

PNG chunk representing some extra information found in the parsed file.

Constructors

PngChunk |
Fields pngChunkData :: ByteString The raw data inside the chunk pngChunkSignature :: ChunkSignature The name of the chunk.

data PngRawChunk #

Data structure during real png loading/parsing

Constructors

PngRawChunk |
Fields chunkLength :: Word32 chunkType :: ChunkSignature chunkCRC :: Word32 chunkData :: ByteString

#### Instances

Instances details

Binary PngRawChunk # |
Instance details Defined in Codec.Picture.Png.Internal.Type Methods put :: PngRawChunk -> Put # get :: Get PngRawChunk # putList :: [PngRawChunk] -> Put #

data PngLowLevel a #

Low level access to PNG information

Constructors

PngLowLevel |
Fields pngImage :: Image a The real uncompressed image pngChunks :: [PngChunk] List of raw chunk where some user data might be present.

chunksWithSig :: PngRawImage -> ChunkSignature -> [ByteString] #

mkRawChunk :: ChunkSignature -> ByteString -> PngRawChunk #