hz      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  None CEnumeration used to search in the tables for different components. 4Represent 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 1Tree storing the code used for huffman encoding. no value present We should output the value 5If bit is 0 take the first subtree, if 1, the right. =Helper function to create pure macro block of the good size. 8Transform parsed coefficients from the jpeg header to a ( tree which can be used to decode data. $From the Table K.3 of ITU-81 (p153) $From the Table K.4 of ITU-81 (p153) $From the Table K.5 of ITU-81 (p154)  None$Macroblock that can be transformed. 1Create a new macroblock with the good array size  None6Algorithm to call to perform an IDCT, return the same $ block that the one given as input. 1Perform a Jpeg level shift in a mutable fashion.  NoneGReference implementation of the DCT, directly implementing the formula  of ITU-81. It'<s slow as hell, perform to many operations, but is accurate  and a good reference point.  Fast DCT extracted from libjpeg NoneNoneType used to read bits )Current bit index, current value, string #Bitify a list of things to decode. ADrop all bit until the bit of indice 0, usefull to parse restart : marker, as they are byte aligned, but Huffman might not. 6Bitify a list of things to decode. Handle Jpeg escape > code (0xFF 0x00), thus should be only used in JPEG decoding. &Append some data bits to a Put monad. =The real data to be stored. Actual data should be in the LSB $Number of bit to write from 1 to 32 None@Gif image constraint from spec-gif89a, code size max : 12 bits.   Safe-InferredNoneU.Helper class to help extract a luma plane out  of an image or a pixel &Compute the luminance part of a pixel +Extract a luma plane out of an image. This / method is in the typeclass to help performant  implementation. 2 jpegToGrayScale :: FilePath -> FilePath -> IO ()  jpegToGrayScale source dest 0This class abstract colorspace conversion. This 8 conversion can be lossy, which ColorConvertible cannot ;Pass a pixel from a colorspace (say RGB) to the second one  (say YCbCr) 5Helper function to convert a whole image by taking a  copy it. $Implement upcasting for pixel types ! Minimal declaration declaration  = It is strongly recommanded to overload promoteImage to keep  performance acceptable 1Convert a pixel type to another pixel type. This ' operation should never loss any data. GChange the underlying pixel type of an image by performing a full copy  of it. XDefinition of pixels used in images. Each pixel has a color space, and a representative  component (Word8 or Float). Type of the pixel component,  classical images 4 would have Word8 type as their PixelBaseComponent, ) HDR image would have Float for instance ,Return the number of component of the pixel 4Apply a function to all color component of a pixel. 2Calculate the index for the begining of the pixel ACalculate theindex for the begining of the pixel at position x y 8Extract a pixel at a given position, (x, y), the origin < is assumed to be at the corner top left, positive y to the  bottom of the image (Same as pixelAt but for mutable images. 1Write a pixel in a mutable image at position x y 5Unsafe version of pixelAt, read a pixel at the given - index without bound checking (if possible). 9 The index is expressed in number (PixelBaseComponent a) 8Unsafe version of readPixel, read a pixel at the given : position without bound checking (if possible). The index / is expressed in number (PixelBaseComponent a) 3Unsafe version of writePixel, write a pixel at the E given position without bound checking. This can be _really_ unsafe. 9 The index is expressed in number (PixelBaseComponent a) 3Pixel type storing a RGB information with an alpha  channel on 16 bits. * Values are stored in the following order  Red  Green  Blue  Alpha =Pixel type storing a classic pixel, with an alpha component. * Values are stored in the following order  Red  Green  Blue  Alpha 1Pixel storing data in the CMYK colorspace. value % are stored in the following order :  Cyan  Magenta  Yellow  Black 1Pixel storing data in the CMYK colorspace. value % are stored in the following order :  Cyan  Magenta  Yellow  Black ,Pixel storing data in the YCbCr colorspace, + value are stored in the following order :  Y (luminance)  Cr  Cb .Pixel type storing HDR pixel on 32 bits float + Value are stored in the following order :  Red  Green  Blue !%Pixel type storing pixels on 16 bits + Value are stored in the following order :  Red  Green  Blue #+Pixel type storing classic pixel on 8 bits + Value are stored in the following order :  Red  Green  Blue %7Pixel type storing Luminance (Y) and alpha information  on 16 bits. + Value are stored in the following order :  Luminance  Alpha '7Pixel type storing Luminance (Y) and alpha information  on 8 bits. + Value are stored in the following order :  Luminance  Alpha )8Floating greyscale value, the 0 to 255 8 bit range maps $ to 0 to 1 in this floating version *-Simple alias for greyscale value in 16 bits. +,Simple alias for greyscale value in 8 bits. ,;Type allowing the loading of an image with different pixel  structures -6An image in the colorspace CMYK and 16 bots precision . An image in the colorspace CMYK /0An image in the colorspace used by Jpeg images. 0*A true color image with alpha on 16 bits. 1-An image in true color and an alpha channel. 2An image with HDR pixels 3)An image in true color with 16bit depth. 4An image in true color. 55An image in greyscale with alpha channel on 16 bits. 6-An image in greyscale with an alpha channel. 7A greyscale HDR image 8(A greyscale image with 16bit components 9A greyscale image. :<Image or pixel buffer, the coordinates are assumed to start > from the upper-left corner of the image, with the horizontal O position first, then the vertical one. The image can be transformed in place. <Width of the image in pixels =Height of the image in pixels. >3The real image, to extract pixels at some position ' you should use the helpers functions. ?:Class modeling transparent pixel, should provide a method  to combine transparent pixels @#Just return the opaque pixel value A(Define plane for the black component of  the CMYK color space. C.Define plane for the yellow component of the  CMYK color space. E/Define plane for the magenta component of the  CMYK color space. G,Define plane for the cyan component of the  CMYK color space. I&Define the plane for the Cb component K&Define the plane for the Cr component M(Define the plane for the luma component O8Define the plane for the alpha (transparency) component Q.Define the plane for the blue color component S/Define the plane for the green color component U-Define the plane for the red color component W3Class used to describle plane present in the pixel 6 type. If a pixel has a plane description associated, = you can use the plane name to extract planes independently. +Retrieve the index of the component in the  given pixel type. X<Image or pixel buffer, the coordinates are assumed to start > from the upper-left corner of the image, with the horizontal ( position first, then the vertical one. ZWidth of the image in pixels [Height of the image in pixels. \3The real image, to extract pixels at some position ' you should use the helpers functions. ]GExtract a color plane from an image given a present plane in the image  examples :  4 extractRedPlane :: Image PixelRGB8-> Image Pixel8 . extractRedPlane = extractComponent PlaneRed ^=Extract an image plane of an image, returning an image which + can be represented by a gray scale image. * If you ask a component out of bound, the  function will  be called _6For any image with an alpha component (transparency), ) drop it, returning a pure opaque image. ``O(n)`< Yield an immutable copy of an image by making a copy of it a`O(1)`E Unsafe convert a mutable image to an immutable one without copying. 9 The mutable image may not be used after this operation. b9Helper function to help extract information from dynamic : image. To get the width of an dynamic image, you can use  the following snippet : ! dynWidth :: DynamicImage -> Int * dynWidth img = dynamicMap imageWidth img c5Create an image given a function to generate pixels. G The function will receive value from 0 to width-1 for the x parameter H and 0 to height-1 for the y parameter. The coordinate 0,0 is the upper K left corner of the image, and (width-1, height-1) the lower right corner. 0for example, to create a small gradient image : + imageCreator :: String -> Image PixelRGB8 I imageCreator path = writePng path $ generateImage pixelRenderer 250 300 0 where pixelRenderer x y = PixelRGB8 x y 128 d6Create an image using a monadic initializer function. G The function will receive value from 0 to width-1 for the x parameter H and 0 to height-1 for the y parameter. The coordinate 0,0 is the upper K left corner of the image, and (width-1, height-1) the lower right corner. VThe function is called for each pixel in the line from left to right (0 to width - 1) & and for each line (0 to height - 1). e5Create an image given a function to generate pixels. G The function will receive value from 0 to width-1 for the x parameter H and 0 to height-1 for the y parameter. The coordinate 0,0 is the upper K left corner of the image, and (width-1, height-1) the lower right corner. )the acc parameter is a user defined one. VThe function is called for each pixel in the line from left to right (0 to width - 1) & and for each line (0 to height - 1). f;Fold over the pixel of an image with a raster scan order : # from top to bottom, left to right g6 equivalent for an image, working at the pixel level. 9 Little example : a brightness function for an rgb image = brightnessRGB8 :: Int -> Image PixelRGB8 -> Image PixelRGB8 . brightnessRGB8 add = pixelMap brightFunction 7 where up v = fromIntegral (fromIntegral v + add) / brightFunction (PixelRGB8 r g b) = 3 PixelRGB8 (up r) (up g) (up b) h9Perform a gamma correction for an image with HDR pixels. iAPerform a tone mapping operation on an High dynamic range image. 'Free promotion for identic pixel types   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ]^CThe component index, beginning at 0 ending at (componentCount - 1)  Source image _ `abcGenerating function, with x and y params. Width in pixels Height in pixels d Image width  Image height Generating functions e#Function taking the state, x and y Initial state Width in pixels Height in pixels fg   Pixel building function  RGB sample Resulting sample h+Gamma value, should be between 0.5 and 3.0 Image to treat. iExposure parameter Image to treat.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoj  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijXYZ[\:;<=>,9876543210/.-`a+*)'(%&#$!"  ?@bgf_dcehiWUVSTQROPMNKLIJGHEFCDAB]^  !"#$%&'()*+, 9876543210/.-:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ]^_ `abcdefg   hi !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoNone'p0Different known interlace methods for PNG image qUse the Adam7 ordering, see adam7Reordering r2No interlacing, basic data ordering, line by line  from left to right. sThe pixels value should be :  +---+---+  | c | b |  +---+---+  | a | x |  +---+---+ $ x being the current filtered pixel t?Filt(x) = Orig(x) - PaethPredictor(Orig(a), Orig(b), Orig(c)), C Recon(x) = Filt(x) + PaethPredictor(Recon(a), Recon(b), Recon(c)) u.Filt(x) = Orig(x) - floor((Orig(a) + Orig(b)) / 2), 2 Recon(x) = Filt(x) + floor((Recon(a) + Recon(b)) / 2) v<Filt(x) = Orig(x) - Orig(b), Recon(x) = Filt(x) + Recon(b) w<Filt(x) = Orig(x) - Orig(a), Recon(x) = Filt(x) + Recon(a) x&Filt(x) = Orig(x), Recon(x) = Filt(x) y$Low level access to PNG information zThe real uncompressed image {9List of raw chunk where some user data might be present. |HPNG chunk representing some extra information found in the parsed file. }The raw data inside the chunk ~The name of the chunk. &Data structure during real png loading/parsing 5Palette with indices beginning at 0 to elemcount - 1 +Raw parsed image which need to be decoded. 8What kind of information is encoded in the IDAT section  of the PngFile #Generic header used in PNG images. Image width in number of pixel  Image height in number of pixel Number of bit per sample 6Kind of png image (greyscale, true color, indexed...) Compression method used  Must be 0 7If the image is interlaced (for progressive rendering) :Value used to identify a png chunk, must be 4 bytes long. "Parse a palette from a png chunk. 5Parse method for a png chunk, without decompression. 6Implementation of the get method for the PngRawImage, , unpack raw data, without decompressing it. ASignature signalling that the following data will be a png image  in the png bit stream )Helper function to help pack signatures. :Signature for the header chunk of png (must be the first) 4Signature for a palette chunk in the pgn file. Must  occure before iDAT. 4Signature for a data chuck (with image parts in it) 5Signature for the last chunk of a png image, telling  the end. +From the Annex D of the png specification. DCompute the CRC of a raw buffer, as described in annex D of the PNG  specification. >pqrstuvwxyz{|}~1pqrstuvwxyz{|}~prqsxwvutyz{|}~Nonej(Encode an image into a png if possible. k8Transform an image into a png encoded bytestring, ready  to be writte as a file. l=Helper function to directly write an image as a png on disk. m8Write a dynamic image in a .png image file if possible. 1 The same restriction as encodeDynamicPng apply. nFEncode a dynamic image in bmp if possible, supported pixel type are :  Y8  Y16  YA8  YA16  RGB8  RGB16  RGBA8  RGBA16 jklmnjklmnjklmnNone /Final image and size, return offset and vector 8 6 5 4 3 2 1 0 o:Transform a raw tiff image to an image, without modifying  the underlying pixel type. 5This function can output the following pixel types :  PixelY8  PixelY16  PixelRGB8  PixelRGB16  PixelCMYK8  PixelCMYK16 3The Word8 instance is just a passthrough, to avoid  copying memory twice )Type witness, just for the type checker. )Temporary buffer handling decompression. Line size in pixels Write index, in bytes size, in bytes Stride  Final buffer       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\o]^_`abcoo4,$#"!      % 10/.-,+*)('&2765438:9;<=>?A@BCDEFGHIJKLMNOPQRSTUVWXYZ[\o]^_`abcNonep4Decode an HDR (radiance) image, the resulting pixel  type can be :  PixelRGBF q2Write an High dynamic range image into a radiance  image file on disk. r9Encode an High dynamic range image into a radiance image  file format. -defghijklmnopqrstuvwxyz{|}~pqrpqrprq$defghijkmlnopqrstuvwxyz{|}~pqrNone Stored on 3 bits Section 20 of spec-gif89a Section 18 of spec-gif89a Stored on 16 bits Stored on 16 bits Stored on 8 bits Stored on 1 bit Stored on 3 bits Stored on 1 bit Stored on 3 bits s.Transform a raw gif image to an image, witout  modifying the pixels. 6 This function can output the following pixel types :  PixelRGB8 t6Transform a raw gif to a list of images, representing ! all the images of an animation. Jststst# stNone CDirectly stolen from the definition in the standard (on W3C page),  pixel predictor. ESimple structure used to hold information about Adam7 deinterlacing. A A structure is used to avoid pollution of the module namespace.  The real info about the matrix. >Apply a filtering method on a reduced image. Apply the filter E on each line, using the previous line (the one above it) to perform  some prediction on the value. "Unpack lines where bit depth is 8 "Unpack lines where bit depth is 1 !Unpack lines when bit depth is 2 @Transform a scanline to a bunch of bytes. Bytes are then packed  into pixels at a further step. ?Given data and image size, recreate an image with deinterlaced  data for PNG's adam 7 method. 8deinterlace picture in function of the method indicated  in the iHDR u=Transform a raw png image to an image, without modifying the 6 underlying pixel type. If the image is greyscale and < 8 bits, < a transformation to RGBA8 is performed. This should change  in the future. 5 The resulting image let you manage the pixel types. 5This function can output the following pixel types :  PixelY8  PixelY16  PixelYA8  PixelYA16  PixelRGB8  PixelRGB16  PixelRGBA8  PixelRGBA16 " Image size ujklmnujkulnmuNone<Same as for DcCoefficient, to provide nicer type signatures BType only used to make clear what kind of integer we are carrying 1 Might be transformed into newtype in the future !0 : DC, 1 : AC, stored on 4 bits Stored on 4 bits 9Type introduced only to avoid some typeclass overlapping  problem Stored on 4 bits Stored on 4 bits  (begin, end) Encoded as 4 bits Encoded as 4 bits Encoded as 4 bits Encoded as 4 bits Stored with 4 bits Stored with 4 bits ,Apply a quantization matrix to a macroblock <This is one of the most important function of the decoding, : it form the barebone decoding pipeline for macroblock. It's all 1 there is to know for macro block transformation 9Unpack an int of the given size encoded from MSB to LSB. 2Assume the macro block is initialized with zeroes  IDecompress a macroblock from a bitstream given the current configuration  from the frame.  =Given a size coefficient (how much a pixel span horizontally @ and vertically), the position of the macroblock, return a list ? of indices and value to be stored in an array (like the final  image) vFTry to decompress a jpeg file and decompress. The colorspace is still D YCbCr if you want to perform computation on the luma part. You can  convert it to RGB using  from the   typeclass. 5This function can output the following pixel types :  PixelY8  PixelYCbCr8 w8Encode an image in jpeg at a reasonnable quality level. = If you want better quality or reduced file size, you should  use x x-Function to call to encode an image to jpeg. ; The quality factor should be between 0 and 100 (100 being  the best quality).     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a Tree used for DC coefficient Tree used for Ac coefficient Current quantization table $A zigzag table, to avoid allocation Previous dc value bcdefx y gComponent index x y hComponent index x y  Component count Component index Width coefficient Height coefficient x y ijComponent count Result image to write into kvl Source image +Mutable block where to put extracted block Plane X sampling factor Y sampling factor Sample per pixel Block x Block y mnopwxQuality factor Image to encode  Encoded JPEG qrstuvwxyz{|}~vwxvxwN    !"#$%&'()*+,-.543210/67JIHGFEDCBA@?>=<;:98KLMNOPQRSTUVWXYZ[\]^_`a bcdefgh ijkvlmnopwxqrstuvwxyz{|}~None y?All the instance of this class can be written as a bitmap file  using this library. Pixels per meter Pixels per meter  in bytes zTry to decode a bitmap image. @ Right now this function can output the following pixel types :  PixelRGB8 {0Write an image in a file use the bitmap format. |EEncode an image into a bytestring in .bmp format ready to be written  on disk. }8Write a dynamic image in a .bmp image file if possible. 4 The same restriction as encodeDynamicBitmap apply. ~FEncode a dynamic image in bmp if possible, supported pixel type are :  RGB8  RGBA8  Y8 9Convert an image to a bytestring ready to be serialized. ,yz{|}~yz{|}~{|z~}yy z{|}~None9This function will try to do anything to encode an image = as RADIANCE, make all color conversion and such. Equivalent  of  decodeImage for radiance encoding 9This function will try to do anything to encode an image 9 as JPEG, make all color conversion and such. Equivalent  of  decodeImage for jpeg encoding 9This function will try to do anything to encode an image 8 as PNG, make all color conversion and such. Equivalent  of  decodeImage for PNG encoding 9This function will try to do anything to encode an image ; as bitmap, make all color conversion and such. Equivalent  of  decodeImage for Bitmap encoding   None 1Return the first Right thing, accumulating error FLoad an image file without even thinking about it, it does everything  as  EIf you want to decode an image in a bytestring without even thinking I in term of format or whatever, this is the function to use. It will try H to decode in each known format and if one decoding succeed will return  the decoded image in it's own colorspace ?Helper function trying to load a png file from a file on disk. ?Helper function trying to load a gif file from a file on disk. =Helper function trying to load all the images of an animated  gif file. @Try to load a jpeg file and decompress. The colorspace is still D YCbCr if you want to perform computation on the luma part. You can  convert it to RGB using colorSpaceConversion =Try to load a .bmp file. The colorspace would be RGB or RGBA 4Try to load a .pic file. The colorspace can only be $ RGB with floating point precision. Save an image to a '.jpg'3 file, will do everything it can to save an image. Save an image to a '.hdr'3 file, will do everything it can to save an image. Save an image to a '.png'3 file, will do everything it can to save an image. ) For example, a simple transcoder to png 1 transcodeToPng :: FilePath -> FilePath -> IO () $ transcodeToPng pathIn pathOut = do $ eitherImg <- decodeImage pathIn  case eitherImg of  Left _ -> return () . Right img -> savePngImage pathOut img Save an image to a '.bmp'3 file, will do everything it can to save an image. [  !"#$%&'()*+,-./0123456789XYZ[\cdegjklmnopqrstuvwxyz{|}~[gcedy{|z~}stvwxjkulnmoprqXYZ[\,9876543210/.- +*)'(%&#$!"  !"#$%&'())**++,,--..//0011223456789:;<=>?@ABCDDEFGHIJJKKLLMMNNOOPPQQRRSSTTUVVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~svy{}      !"#$%&'()**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRRSTUVWXYZ[[\]^_`abcdefghijklmnopqrstuvwxyz{|}~z{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aabbc~defghijjklmnopqrstuvwxyz{|}~  JuicyPixels-3.1Codec.Picture.TypesCodec.Picture.PngCodec.Picture.TiffCodec.Picture.HDRCodec.Picture.GifCodec.Picture.JpgCodec.Picture.BitmapCodec.Picture.Saving Codec.PictureCodec.Picture.Jpg.DefaultTableCodec.Picture.Jpg.TypesCodec.Picture.Jpg.FastIdctCodec.Picture.Jpg.FastDct"Codec.Picture.VectorByteConversionCodec.Picture.BitWriterCodec.Picture.Gif.LZWCodec.Picture.InternalHelperCodec.Picture.Png.TypeCodec.Picture.Png.ExportLumaPlaneExtractable computeLumaextractLumaPlaneColorSpaceConvertible convertPixel convertImageColorConvertible promotePixel promoteImagePixelPixelBaseComponentcomponentCountcolorMappixelBaseIndexmutablePixelBaseIndexpixelAt readPixel writePixel unsafePixelAtunsafeReadPixelunsafeWritePixel PixelRGBA16 PixelRGBA8 PixelCMYK16 PixelCMYK8 PixelYCbCr8 PixelRGBF PixelRGB16 PixelRGB8 PixelYA16PixelYA8PixelFPixel16Pixel8 DynamicImage ImageCMYK16 ImageCMYK8 ImageYCbCr8 ImageRGBA16 ImageRGBA8 ImageRGBF ImageRGB16 ImageRGB8 ImageYA16ImageYA8ImageYFImageY16ImageY8 MutableImagemutableImageWidthmutableImageHeightmutableImageDataTransparentPixeldropTransparency PlaneBlack PlaneYellow PlaneMagenta PlaneCyanPlaneCbPlaneCr PlaneLuma PlaneAlpha PlaneBlue PlaneGreenPlaneRed ColorPlaneImage imageWidth imageHeight imageDataextractComponentunsafeExtractComponentdropAlphaLayer freezeImageunsafeFreezeImage dynamicMap generateImage withImagegenerateFoldImage pixelFoldpixelMapgammaCorrection toneMapping PngSavable encodePngwritePngwriteDynamicPngencodeDynamicPng decodeTiff decodeHDRwriteHDR encodeHDR decodeGifdecodeGifImages decodePng decodeJpeg encodeJpegencodeJpegAtQuality BmpEncodable decodeBitmap writeBitmap encodeBitmapwriteDynamicBitmapencodeDynamicBitmapimageToRadiance imageToJpg imageToPng imageToBitmap readImage decodeImagereadPngreadGif readGifImagesreadJpeg readBitmapreadHDR saveJpgImagesaveRadianceImage savePngImage saveBmpImage DctComponent MacroBlock HuffmanTreeEmptyLeafBranchmakeMacroBlockbuildHuffmanTreedefaultDcLumaHuffmanTabledefaultDcChromaHuffmanTabledefaultAcLumaHuffmanTable HuffmanTable AcComponent DcComponentQuantificationTableHuffmanWriterCodeHuffmanPackedTreepackHuffmanTreemakeInverseTablescaleQuantisationMatrixdefaultLumaQuantizationTabledefaultChromaQuantizationTabledefaultDcLumaHuffmanTreedefaultDcChromaHuffmanTreedefaultAcLumaHuffmanTreedefaultAcChromaHuffmanTreedefaultAcChromaHuffmanTableMutableMacroBlockcreateEmptyMutableMacroBlockprintMacroBlockfastIdctmutableLevelShift IDctStagex0x1x2x3x4x5x6x7x8iclipw1w2w3w5w6w7idctRowidctCol referenceDctfastDctLibJpeg cONST_BITS pASS1_BITSfIX_0_298631336fIX_0_390180644fIX_0_541196100fIX_0_765366865fIX_0_899976223fIX_1_175875602fIX_1_501321110fIX_1_847759065fIX_1_961570560fIX_2_053119869fIX_2_562915447fIX_3_072711026 cENTERJSAMPLE blitVector BoolReader BoolStatesetDecodedString byteAlignJpgsetDecodedStringJpg writeBits'BoolWriteStateRef bwsCurrBuffer bwsBufferListbwsWrittenWords bwsBitAcc bwsBitReaded runBoolReader getNextBitJpg getNextBitMSBgetNextBitsMSBFirstgetNextBitsLSBFirst getNextBitdefaultBufferSizenewWriteStateReffinalizeBoolWriterforceBufferFlushing'flushCurrentBuffer'byteStringFromVector setBitCount'resetBitCount' pushByte'lzw TiffVariantOldTiffVariant GifVariant.!!!...!!!...<-...<-.. duplicateData rangeSetter decodeLzw isOldTiffLZW decodeLzwTiffdecoderunGet runGetStrictgetRemainingBytesgetRemainingLazyBytestoComponentIndexbaseGHC.ErrerrorGHC.Basemap$fColorConvertibleaa!!!stride scaleBitsoneHalffixrYTabgYTabbYTabrCbTabgCbTabbCbTabgCrTabbCrTabcrRTabcbBTabcrGTabcbGTabintegralRGBToCMYK!$fColorPlanePixelCMYK16PlaneBlack"$fColorPlanePixelCMYK16PlaneYellow#$fColorPlanePixelCMYK16PlaneMagenta $fColorPlanePixelCMYK16PlaneCyan,$fColorSpaceConvertiblePixelCMYK16PixelRGB16$fPixelPixelCMYK16 $fColorPlanePixelCMYK8PlaneBlack!$fColorPlanePixelCMYK8PlaneYellow"$fColorPlanePixelCMYK8PlaneMagenta$fColorPlanePixelCMYK8PlaneCyan*$fColorSpaceConvertiblePixelRGB8PixelCMYK8*$fColorSpaceConvertiblePixelCMYK8PixelRGB8$fPixelPixelCMYK8$fColorPlanePixelYCbCr8PlaneCr$fColorPlanePixelYCbCr8PlaneCb $fColorPlanePixelYCbCr8PlaneLuma+$fColorSpaceConvertiblePixelYCbCr8PixelRGB8+$fColorSpaceConvertiblePixelRGB8PixelYCbCr8$fColorSpaceConvertibleaa$fPixelPixelYCbCr8!$fColorPlanePixelRGBA16PlaneAlpha $fColorPlanePixelRGBA16PlaneBlue!$fColorPlanePixelRGBA16PlaneGreen$fColorPlanePixelRGBA16PlaneRed'$fTransparentPixelPixelRGBA16PixelRGB16$fPixelPixelRGBA16 $fColorPlanePixelRGBA8PlaneAlpha$fColorPlanePixelRGBA8PlaneBlue $fColorPlanePixelRGBA8PlaneGreen$fColorPlanePixelRGBA8PlaneRed$fPixelPixelRGBA8$fLumaPlaneExtractablePixelRGB8$fColorPlanePixelRGB8PlaneBlue$fColorPlanePixelRGB8PlaneGreen$fColorPlanePixelRGB8PlaneRed$$fColorConvertiblePixelRGB8PixelRGBF%$fColorConvertiblePixelRGB8PixelRGBA8$fPixelPixelRGB8 $fLumaPlaneExtractablePixelRGB16'$fColorConvertiblePixelRGB16PixelRGBA16,$fColorSpaceConvertiblePixelRGB16PixelCMYK16$fColorPlanePixelRGB16PlaneBlue $fColorPlanePixelRGB16PlaneGreen$fColorPlanePixelRGB16PlaneRed$fPixelPixelRGB16$fColorPlanePixelRGBFPlaneBlue$fColorPlanePixelRGBFPlaneGreen$fColorPlanePixelRGBFPlaneRed$fPixelPixelRGBF!$fTransparentPixelPixelYA16Word16$fColorPlanePixelYA16PlaneAlpha$fColorPlanePixelYA16PlaneLuma&$fColorConvertiblePixelYA16PixelRGBA16$fPixelPixelYA16$fLumaPlaneExtractablePixelYA8$fTransparentPixelPixelYA8Word8$fColorPlanePixelYA8PlaneAlpha$fColorPlanePixelYA8PlaneLuma$$fColorConvertiblePixelYA8PixelRGBA8#$fColorConvertiblePixelYA8PixelRGB8$fPixelPixelYA8 $fColorConvertibleFloatPixelRGBF $fPixelFloat#$fColorConvertibleWord16PixelRGBA16"$fColorConvertibleWord16PixelRGB16!$fColorConvertibleWord16PixelYA16 $fPixelWord16!$fColorConvertibleWord8PixelRGBA8 $fColorConvertibleWord8PixelRGB8$fColorConvertibleWord8Word16$fColorConvertibleWord8Float$fColorConvertibleWord8PixelYA8 $fPixelWord8!$fLumaPlaneExtractablePixelYCbCr8 $fLumaPlaneExtractablePixelRGBA8$fLumaPlaneExtractablePixelRGBF$fLumaPlaneExtractableFloat$fLumaPlaneExtractableWord16$fLumaPlaneExtractableWord8$fNFDataDynamicImage$fNFDataMutableImage $fNFDataImage%$fTransparentPixelPixelRGBA8PixelRGB8PngInterlaceMethodPngInterlaceAdam7PngNoInterlace PngFilter FilterPaeth FilterAverageFilterUp FilterSub FilterNone PngLowLevelpngImage pngChunksPngChunk pngChunkDatapngChunkSignature PngRawChunk PngPalette PngRawImage PngImageTypePngIHdrwidthheightbitDepth colourTypecompressionMethod filterMethodinterlaceMethodChunkSignature parsePalette parseChunksparseRawPngImage pngSignature signature iHDRSignature pLTESignature iDATSignature iENDSignature pngCrcTable pngComputeCrc chunkLength chunkTypechunkCRC chunkDataheaderchunksPngTrueColourWithAlphaPngGreyscaleWithAlphaPngIndexedColor PngTrueColour PngGreyscaleimageTypeOfCode$fBinaryPngImageType$fBinaryPngInterlaceMethod$fBinaryPngIHdr$fBinaryPngRawChunk$fBinaryPngRawImage$fBinaryPngFilterpreparePngHeaderendChunkprepareIDatChunkgenericEncode16BitsPnggenericEncodePng$fPngSavablePixelRGBA16$fPngSavablePixelRGB16$fPngSavableWord16$fPngSavablePixelYA16$fPngSavablePixelYA8$fPngSavableWord8$fPngSavablePixelRGB8$fPngSavablePixelRGBA8allocTempBuffer TiffCIELab TiffYCbCrTiffCMYKTiffTransparencyMask TiffPaletedTiffRGBTiffMonochromeTiffMonochromeWhite0$fUnpackableWord8YCbCrSubsampling ycbcrWidth ycbcrHeightycbcrImageWidthycbcrStripHeightPack12Pack2Pack4 Unpackable StorageTypeoutAlloc offsetStridemergeBackTempBufferTiffColorspaceTiffInfo tiffHeader tiffWidth tiffHeighttiffColorspacetiffSampleCounttiffRowPerStriptiffPlaneConfigurationtiffSampleFormattiffBitsPerSampletiffCompression tiffStripSize tiffOffsets tiffPalettetiffYCbCrSubsamplingImageFileDirectory ifdIdentifierifdTypeifdCount ifdOffset ifdExtendedTiffSampleFormatTiffSampleUnknownTiffSampleDouble TiffSampleIntTiffSampleUintExtendedDirectoryDataExtendedDataLongExtendedDataShortExtendedDataAsciiExtendedDataNoneTiffTag TagUnknownTagJPEGACTablesTagJPEGDCTablesTagJPEGQTablesTagJPEGPointTransformsTagJPEGLosslessPredictorsTagJPEGRestartIntervalTagJPEGInterchangeFormatLengthTagJPEGInterchangeFormat TagJpegProcTagImageDescriptionTagExtraSample TagYPosition TagXPositionTagReferenceBlackWhiteTagYCbCrPositioningTagYCbCrSubsampling TagYCbCrCoeff TagFillOrderTagSubfileType TagInkSetTagSampleFormatTagOrientationTagPlanarConfiguration TagSoftwareTagDocumentName TagArtistTagSamplesPerPixelTagTileByteCount TagTileOffset TagTileLength TagTileWidth TagColorMapTagBitsPerSampleTagStripOffsetsTagStripByteCountsTagRowPerStripTagResolutionUnitTagYResolutionTagXResolutionTagImageLength TagImageWidthTagCompressionTagPhotometricInterpretationIfdType TypeDouble TypeFloatTypeSignedRationalTypeSignedLongTypeSignedShort TypeUndefined TypeSByte TypeRationalTypeLong TypeShort TypeAsciiTypeByteTiffCompressionCompressionPackBitCompressionJPEGCompressionLZWCompressionModifiedRLECompressionNoneTiffPlanarConfigurationPlanarConfigSeparatePlanarConfigContig TiffHeader hdrEndianness hdrOffset Endianness EndianBig EndianLittleputWord16EndiangetWord16EndianputWord32EndiangetWord32EndianplanarConfgOfConstant typeOfWord tagOfWord16unpackSampleFormatunLongcleanImageFileDirectorygetImageFileDirectorygetImageFileDirectories fetchExtendedfindIFD findPalette findIFDDatafindIFDDefaultData findIFDExtfindIFDExtDefaultDataunpackPhotometricInterpretationunPackCompressioncopyByteString unpackPackBit uncompressAt gatherStrips getTiffInfounpack$fUnpackableYCbCrSubsampling$fUnpackablePack12$fUnpackablePack2$fUnpackablePack4$fUnpackableWord16$fBinaryTiffHeader$fBinaryEndiannessRadianceHeader radianceInfosradianceFormatradianceHeight radianceWidth radianceDataRadianceFormat FormatXYZE FormatRGBERGBE HDRReader.<<..>>.checkLineLengthisNewRunLengthMarkerradiance32bitRleRGBEFormatradiance32bitRleXYZEFromattoRGBE dropUntilgetUntilradianceFileSignature unpackColor storeColor parsePair decodeInfosgetChar8isSign isAxisLetter decodeNum copyPrevColor oldStyleRLE newStyleRLE decodeHeadertoFloatencodeScanlineColordecodeRadiancePicture$fBinaryRadianceHeader$fBinaryRadianceFormat $fBinaryRGBEgceDisposalMethodImageDescriptorLogicalScreenDescriptor screenWidth screenHeightbackgroundIndex hasGlobalMapcolorResolutionisColorTableSortedcolorTableSizeGifFile gifHeader gifImages GifHeader gifVersiongifScreenDescriptor gifGlobalMapPaletteBlockBlockGraphicControl BlockImageGifImage imgDescriptorimgLocalPaletteimgLzwRootSizeimgDataGraphicControlExtensiongceUserInputFlaggceTransparentFlaggceDelaygceTransparentColorIndexgDescPixelsFromLeftgDescPixelsFromTopgDescImageWidthgDescImageHeightgDescHasLocalMapgDescIsInterlacedgDescIsImgDescriptorSortedgDescLocalColorTableSize GifVersionGIF89aGIF87agif87aSignaturegif89aSignatureimageSeparatorextensionIntroducer gifTrailergraphicControlLabelparseDataBlocksparseGifBlocks getPaletteassociateDescrsubstituteColorsdeinterlaceGifImagegifInterlacingIndices paletteOfdecodeAllGifImagesdecodeFirstGifImage$fBinaryGifFile$fBinaryGifHeader$fBinaryImageDescriptor$fBinaryGifImage$fBinaryGraphicControlExtension$fBinaryLogicalScreenDescriptor$fBinaryGifVersionPngLineAdam7MatrixInfoadam7MatrixInfo pngFiltering byteUnpacker bitUnpackertwoBitsUnpackerscanlineUnpacker8 adam7Unpack deinterlacer BeginOffset StrideInfo LineUnpackeradam7StartingRowadam7StartingColadam7RowIncrementadam7ColIncrementadam7BlockHeightadam7BlockWidthunparsePngFilter getBoundshalfByteUnpacker shortUnpackerbyteSizeOfBitLengthscanLineInterleavinggenerateGreyscalePalettesampleCountOfImageType paletteRGBA1 paletteRGBA2 paletteRGBA4bounds applyPaletteDctCoefficients DcCoefficienthuffmanTableClasshuffmanTableDest TableListquantPrecisionquantDestinationspectralSelectionsuccessiveApproxHighsuccessiveApproxLowdcEntropyCodingTableacEntropyCodingTablehorizontalSamplingFactorverticalSamplingFactor deQuantizedecodeMacroBlock unpackIntacCoefficientsDecodedecompressMacroBlockunpackMacroBlockRestartIntervalJpgHuffmanTableSpec huffSizes huffCodesSizeCalculable calculateSizeJpgQuantTableSpec quantTable JpgScanHeader scanLengthscanComponentCountscansJpgScanSpecificationcomponentSelectorJpgImagejpgFrame JpgComponentcomponentIdentifierquantizationTableDestJpgFrameHeaderjpgFrameHeaderLengthjpgSamplePrecision jpgHeightjpgWidthjpgImageComponentCount jpgComponentsJpgFrameJpgIntervalRestartJpgScans JpgScanBlobJpgHuffmanTable JpgQuantTable JpgExtension JpgAppFrameHuffmanTreeInfo JpgFrameKindJpgRestartIntervalJpgExtensionSegment JpgAppSegmentJpgStartOfScanJpgHuffmanTableMarkerJpgQuantizationTable!JpgDifferentialLosslessArithmetic'JpgDifferentialProgressiveDCTArithmetic&JpgDifferentialSequentialDCTArithmeticJpgLosslessArithmeticJpgProgressiveDCTArithmeticJpgExtendedSequentialArithmeticJpgDifferentialLosslessHuffman$JpgDifferentialProgressiveDCTHuffman#JpgDifferentialSequentialDCTHuffmanJpgLosslessHuffmanJpgProgressiveDCTHuffmanJpgExtendedSequentialDCTHuffmanJpgBaselineDCTHuffmanbuildPackedHuffmanTreehuffmanPackedDecodecommonMarkerFirstByte checkMarker eatUntilCodetakeCurrentFrameputFrame parseFramessecondStartOfFrameByteOfKindput4BitsOfEach get4BitOfEachquantizeinverseDirectCosineTransform zigZagOrderzigZagReorderForwardvzigZagOrderForwardzigZagReorderForward zigZagReorderpackIntpowerOf encodeInt decodeIntdcCoefficientDecodegatherQuantTablesgatherHuffmanTablesgatherScanInfo pixelClamp unpack444Yunpack444Ycbcrunpack422YcbcrdecodeRestartIntervalallElementsEqual extractBlockserializeMacroBlockencodeMacroBlock divUpwardprepareHuffmanTable$fBinaryJpgScanHeader$fBinaryJpgScanSpecification$fBinaryJpgFrameHeader$fBinaryJpgComponent$fBinaryRestartInterval$fBinaryJpgFrameKind$fBinaryJpgImage$fBinaryJpgHuffmanTableSpec#$fSizeCalculableJpgHuffmanTableSpec$fBinaryJpgQuantTableSpec!$fSizeCalculableJpgQuantTableSpec$fBinaryTableList$fSizeCalculableJpgScanHeader$$fSizeCalculableJpgScanSpecification$fSizeCalculableJpgComponent$fSizeCalculableJpgFrameHeader xResolution yResolutionfileSizeencodeBitmapWithPalette bitsPerPixel bmpEncodedefaultPalette BmpPalette BmpInfoHeadersizeplanes bitPerPixelbitmapCompression byteImageSize colorCountimportantColours BmpHeadermagicIdentifier reserved1 reserved2 dataOffsetbitmapMagicIdentifiersizeofBmpHeader sizeofBmpInfo putPalette stridePutdecodeImageRGB8 linePadding$fBmpEncodablePixelRGB8$fBmpEncodablePixelRGBA8$fBmpEncodableWord8$fBinaryBmpInfoHeader$fBinaryBmpHeadercomponentToLDR toStandardDefgreyScaleToStandardDef from16to8 from16toFloat eitherLoadwithImageDecoder