!siQA      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ Safe7ABCDENoneA( JuicyPixels!Possible data held by an Exif tag  JuicyPixels5Tag values used for exif fields. Completly incomplete  JuicyPixels Short type JuicyPixelsShort or long type JuicyPixelsShort or long type JuicyPixels Rational type JuicyPixels Rational type JuicyPixelsShort or long type JuicyPixels Short or long JuicyPixels Short or long JuicyPixelsShort JuicyPixelsShort  JuicyPixelsShort" JuicyPixelsShort4 JuicyPixelsShort5 JuicyPixelsShortA JuicyPixelsJConvert a value to it's corresponding Exif tag. Will often be written as @B JuicyPixels*Convert a tag to it's corresponding value.D  !"#$%&'()*+,-./0123456789:;<=>?@ABCD  !"#$%&'()*+,-./0123456789:;<=>?@ ABCNone &'1=?EMUVXsJ JuicyPixelsgDependent storage used for metadatas. All metadatas of a given kind are unique within this container.RThe current data structure is based on list, so bad performances can be expected.K JuicyPixelsAElement describing a metadata and it's (typed) associated value.M JuicyPixels%Encode values for unknown informationQ JuicyPixelsyStore various additional information about an image. If something is not recognized, it can be stored in an unknown tag.U Dot per inch on this x axis.V Dot per inch on this y axis.W Image width in pixel. Relying on the metadata for this information can avoid the full decompression of the image. Ignored for image writing.X Image height in pixels. Relying on the metadata for this information can void the full decompression of the image. Ignored for image writing. ColorProfileX An unparsed ICC color profile. Currently only supported by the Bitmap format.c9 unlikely to be decoded, but usefull for metadata writingb Exif tag and associated data.d JuicyPixelsThe same color values may result in slightly different colors on different devices. To get consistent colors accross multiple devices we need a way of mapping color values from a source device into their equivalents on the target device.The solution is essentially to define, for each device, a family of mappings that convert between device colors and standard CIEXYZ or CIELAB colors. The collection of mappings for a device is known as the 'color-profile'L of that device, and each color-profile can be thought of as describing a  'color-space'.If we know the color-space of the input pixels, and the color space of the output device, then we can convert the colors in the image to their equivalents on the output device.RJuicyPixels does not parse color-profiles or attempt to perform color correction./The following color space types are recognised:sRGB: Standard RGB color space.`Windows BMP color space: Color space information embedded within a V4 Windows BMP file."ICC profile: An ICC color profile.h JuicyPixels5Type describing the original file format of the file.F JuicyPixelsRight based unionp JuicyPixels!Strict left fold of the metadatasq JuicyPixels!foldMap equivalent for metadatas.r JuicyPixelsURemove an element of the given keys from the metadatas. If not present does nothing.s JuicyPixels#Extract all Exif specific metadatast JuicyPixels%Search a metadata with the given key.u JuicyPixelscInsert an element in the metadatas, if an element with the same key is present, it is overwritten.v JuicyPixels'Create metadatas with a single element.w JuicyPixelsEmpty metadatas. Favor Gx JuicyPixelsConversion from dpm to dpiy JuicyPixelsConversion from dpi to dpmz JuicyPixelsConversion dpcm -> dpi{ JuicyPixels=Create metadatas indicating the resolution, with DpiX == DpiY| JuicyPixels6Create metadatas holding width and height information.} JuicyPixels3Create simple metadatas with Format, Width & Height~ JuicyPixels?Create simple metadatas with Format, Width, Height, DpiX & DpiY5JKLMNOPQTcbSRUVWXYZ[\]^_`adefghjinoklmpqrstuvwxyz{|}~5JQTcbSRUVWXYZ[\]^_`aMNOPKLhjinoklmdefgtwurvpq{|}~sxyzNone=>?@A6 JuicyPixels0 JuicyPixels1 JuicyPixels2 JuicyPixels0 JuicyPixels1 JuicyPixels2 JuicyPixels3 JuicyPixels4 JuicyPixels5 JuicyPixels6 JuicyPixels8 JuicyPixelsBecause having a polymorphic get with endianness is to nice to pass on, introducing this helper type class, which is just a superset of Binary, but formalising a parameter passing into it.H JuicyPixelsAll the IFD must be written in order according to the tag value of the IFD. To avoid getting to much restriction in the serialization code, just sort it.I JuicyPixelsiGiven an official offset and a list of IFD, update the offset information of the IFD with extended data.GBGBNoneNone2=>?@ACHSVX*z JuicyPixelsThis typeclass exist for performance reason, it allow to pack a pixel value to a simpler "primitive" data type to allow faster writing to moemory. JuicyPixelsVPrimitive type asociated to the current pixel It's Word32 for PixelRGBA8 for instance JuicyPixels<The packing function, allowing to transform to a primitive. JuicyPixels,Inverse transformation, to speed up reading JuicyPixelsEHelper class to help extract a luma plane out of an image or a pixel JuicyPixels%Compute the luminance part of a pixel JuicyPixelsjExtract a luma plane out of an image. This method is in the typeclass to help performant implementation. LjpegToGrayScale :: FilePath -> FilePath -> IO () jpegToGrayScale source dest JuicyPixels;Traversal type matching the definition in the Lens package.J JuicyPixels3Helpers to embed a rankNTypes inside an Applicative JuicyPixelsgThis class abstract colorspace conversion. This conversion can be lossy, which ColorConvertible cannot JuicyPixelsGPass a pixel from a colorspace (say RGB) to the second one (say YCbCr) JuicyPixels>Helper function to convert a whole image by taking a copy it. JuicyPixels=Implement upcasting for pixel types. Minimal declaration of V. It is strongly recommended to overload promoteImage to keep performance acceptable JuicyPixelsWConvert a pixel type to another pixel type. This operation should never lose any data. JuicyPixelsNChange the underlying pixel type of an image by performing a full copy of it. JuicyPixelstDefinition of pixels used in images. Each pixel has a color space, and a representative component (Word8 or Float). JuicyPixelsType of the pixel component, "classical" images would have Word8 type as their PixelBaseComponent, HDR image would have Float for instance JuicyPixelsoCall the function for every component of the pixels. For example for RGB pixels mixWith is declared like this: fmixWith f (PixelRGB8 ra ga ba) (PixelRGB8 rb gb bb) = PixelRGB8 (f 0 ra rb) (f 1 ga gb) (f 2 ba bb) JuicyPixelsExtension of the  which separate the treatment of the color components of the alpha value (transparency component). For pixel without alpha components, it is equivalent to mixWith. mixWithAlpha f fa (PixelRGBA8 ra ga ba aa) (PixelRGB8 rb gb bb ab) = PixelRGBA8 (f 0 ra rb) (f 1 ga gb) (f 2 ba bb) (fa aa ab) JuicyPixelsReturn the opacity of a pixel, if the pixel has an alpha layer, return the alpha value. If the pixel doesn't have an alpha value, return a value representing the opaqueness. JuicyPixels,Return the number of components of the pixel JuicyPixelsApply a function to each component of a pixel. If the color type possess an alpha (transparency channel), it is treated like the other color components. JuicyPixels1Calculate the index for the begining of the pixel JuicyPixels@Calculate theindex for the begining of the pixel at position x y JuicyPixelsExtract 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 JuicyPixels'Same as pixelAt but for mutable images. JuicyPixels0Write a pixel in a mutable image at position x y JuicyPixelsUnsafe version of pixelAt, read a pixel at the given index without bound checking (if possible). The index is expressed in number (PixelBaseComponent a) JuicyPixelsUnsafe version of readPixel, read a pixel at the given position without bound checking (if possible). The index is expressed in number (PixelBaseComponent a) JuicyPixelsUnsafe version of writePixel, write a pixel at the given position without bound checking. This can be _really_ unsafe. The index is expressed in number (PixelBaseComponent a)  JuicyPixelsrPixel type storing 16bit red, green, blue and alpha (RGBA) information. Values are stored in the following order:RedGreenBlueAlpha  JuicyPixels{Classical pixel type storing 8bit red, green, blue and alpha (RGBA) information. Values are stored in the following order:RedGreenBlueAlpha  JuicyPixelswPixel type storing 16bit cyan, magenta, yellow and black (CMYK) information. Values are stored in the following order:CyanMagentaYellowBlack JuicyPixelsvPixel type storing 8bit cyan, magenta, yellow and black (CMYK) information. Values are stored in the following order:CyanMagentaYellowBlack JuicyPixelsPixel type storing 8bit luminance, blue difference and red difference (YCbCr) information. Values are stored in the following order: Y (luminance)CbCr JuicyPixelsHDR pixel type storing floating point 32bit red, green and blue (RGB) information. Same value range and comments apply as for ,. Values are stored in the following order:RedGreenBlue JuicyPixelsjPixel type storing 16bit red, green and blue (RGB) information. Values are stored in the following order:RedGreenBlue JuicyPixels2Pixel type storing value for the YCCK color space: Y (Luminance)CbCrBlack JuicyPixelsqClassic pixel type storing 8bit red, green and blue (RGB) information. Values are stored in the following order:RedGreenBlue JuicyPixelslPixel type storing 16bit Luminance (Y) and alpha (A) information. Values are stored in the following order: LuminanceAlpha JuicyPixelskPixel type storing 8bit Luminance (Y) and alpha (A) information. Values are stored in the following order: LuminanceAlpha JuicyPixelsType alias for 32bit floating point greyscale pixels. The standard bounded value range is mapped to the closed interval [0,1] i.e. Kmap promotePixel [0, 1 .. 255 :: Pixel8] == [0/255, 1/255 .. 1.0 :: PixelF]  JuicyPixels&Type alias for 32bit greyscale pixels.! JuicyPixels&Type alias for 16bit greyscale pixels." JuicyPixelsuType alias for 8bit greyscale pixels. For simplicity, greyscale pixels use plain numbers instead of a separate type.# JuicyPixelsoDescribe an image and it's potential associated palette. If no palette is present, fallback to a DynamicImage$ JuicyPixelsFallback) JuicyPixels|Type used to expose a palette extracted during reading. Use palettedAsImage to convert it to a palette usable for writing.+ JuicyPixelsNumber of element in pixels., JuicyPixelsReal data used by the palette.- JuicyPixelssImage type enumerating all predefined pixel types. It enables loading and use of images of different pixel types.. JuicyPixelsA greyscale image./ JuicyPixels'A greyscale image with 16bit components0 JuicyPixels'A greyscale image with 32bit components1 JuicyPixelsA greyscale HDR image2 JuicyPixels,An image in greyscale with an alpha channel.3 JuicyPixels4An image in greyscale with alpha channel on 16 bits.4 JuicyPixelsAn image in true color.5 JuicyPixels(An image in true color with 16bit depth.6 JuicyPixelsAn image with HDR pixels7 JuicyPixels,An image in true color and an alpha channel.8 JuicyPixels)A true color image with alpha on 16 bits.9 JuicyPixels/An image in the colorspace used by Jpeg images.: JuicyPixelsAn image in the colorspace CMYK; JuicyPixels5An image in the colorspace CMYK and 16 bits precision< JuicyPixelsImage 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. The image can be transformed in place.> JuicyPixelsWidth of the image in pixels? JuicyPixelsHeight of the image in pixels.@ JuicyPixelsYThe real image, to extract pixels at some position you should use the helpers functions.A JuicyPixelsXClass modeling transparent pixel, should provide a method to combine transparent pixelsB JuicyPixels"Just return the opaque pixel valueC JuicyPixelsIaccess the transparency (alpha layer) of a given transparent pixel type.D JuicyPixels>Define plane for the black component of the CMYK color space.F JuicyPixels?Define plane for the yellow component of the CMYK color space.H JuicyPixels@Define plane for the magenta component of the CMYK color space.J JuicyPixels=Define plane for the cyan component of the CMYK color space.L JuicyPixels%Define the plane for the Cb componentN JuicyPixels%Define the plane for the Cr componentP JuicyPixels'Define the plane for the luma componentR JuicyPixels7Define the plane for the alpha (transparency) componentT JuicyPixels-Define the plane for the blue color componentV JuicyPixels.Define the plane for the green color componentX JuicyPixels,Define the plane for the red color componentZ JuicyPixelsClass used to describle plane present in the pixel type. If a pixel has a plane description associated, you can use the plane name to extract planes independently.K JuicyPixels=Retrieve the index of the component in the given pixel type.[ JuicyPixels-Type for the palette used in Gif & PNG files.\ JuicyPixelsJThe main type of this package, one that most functions work on, is Image.Parameterized by the underlying pixel format it forms a rigid type. If you wish to store images of different or unknown pixel formats use -.Image is essentially a rectangular pixel buffer of specified width and height. The coordinates are assumed to start from the upper-left corner of the image, with the horizontal position first and vertical second.^ JuicyPixelsWidth of the image in pixels_ JuicyPixelsHeight of the image in pixels.` JuicyPixels]Image pixel data. To extract pixels at a given position you should use the helper functions.Internally pixel data is stored as consecutively packed lines from top to bottom, scanned from left to right within individual lines, from first to last color component within each pixel.a JuicyPixelsQExtract a color plane from an image given a present plane in the image examples: a extractRedPlane :: Image PixelRGB8 -> Image Pixel8 extractRedPlane = extractComponent PlaneRed b JuicyPixelsYExtract a plane of an image. Returns the requested color component as a greyscale image.-If you ask for a component out of bound, the L function will be called.c JuicyPixels^For any image with an alpha component (transparency), drop it, returning a pure opaque image.d JuicyPixelsA`O(n)` Yield an immutable copy of an image by making a copy of ite JuicyPixels?`O(n)` Yield a mutable copy of an image by making a copy of it.f JuicyPixels`O(1)` Unsafe convert an imutable image to an mutable one without copying. The source image shouldn't be used after this operation.g JuicyPixels`O(1)` Unsafe convert a mutable image to an immutable one without copying. The mutable image may not be used after this operation.h JuicyPixels?Create a mutable image, filled with the given background color.i JuicyPixelsKCreate a mutable image with garbage as content. All data is uninitialized.j JuicyPixelsGConvert a palette to an image. Used mainly for backward compatibility.k JuicyPixels)Flatten a PalettedImage to a DynamicImagel JuicyPixelsHelper function to help extract information from dynamic image. To get the width of a dynamic image, you can use the following snippet: HdynWidth :: DynamicImage -> Int dynWidth img = dynamicMap imageWidth imgm JuicyPixelsEquivalent of the to function for the dynamic images. You can perform pixel colorspace independant operations with this function.For instance, if you want to extract a square crop of any image, without caring about colorspace, you can use the following snippet. dynSquare :: DynamicImage -> DynamicImage dynSquare = dynamicPixelMap squareImage squareImage :: Pixel a => Image a -> Image a squareImage img = generateImage (\x y -> pixelAt img x y) edge edge where edge = min (imageWidth img) (imageHeight img)n JuicyPixelsCreate an image given a function to generate pixels. The function will receive values from 0 to width-1 for the x parameter and 0 to height-1 for the y parameter. The coordinates 0,0 are the upper left corner of the image, and (width-1, height-1) the lower right corner..for example, to create a small gradient image: imageCreator :: String -> IO () imageCreator path = writePng path $ generateImage pixelRenderer 250 300 where pixelRenderer x y = PixelRGB8 (fromIntegral x) (fromIntegral y) 128o JuicyPixelsCreate an image using a monadic initializer function. The function will receive values from 0 to width-1 for the x parameter and 0 to height-1 for the y parameter. The coordinates 0,0 are the upper left corner of the image, and (width-1, height-1) the lower right corner.{The 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).p JuicyPixelsCreate an image given a function to generate pixels. The function will receive values from 0 to width-1 for the x parameter and 0 to height-1 for the y parameter. The coordinates 0,0 are the upper left corner of the image, and (width-1, height-1) the lower right corner.(the acc parameter is a user defined one.{The 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).q JuicyPixels\Fold over the pixel of an image with a raster scan order: from top to bottom, left to rightr JuicyPixelsrFold over the pixel of an image with a raster scan order: from top to bottom, left to right, carrying out a states JuicyPixelsFold over the pixel of an image with a raster scan order: from top to bottom, left to right. This functions is analog to the foldMap from the MU typeclass, but due to the Pixel constraint, Image cannot be made an instance of it.t JuicyPixelsNn equivalent for an image, working at the pixel level. Little example : a brightness function for an rgb image brightnessRGB8 :: Int -> Image PixelRGB8 -> Image PixelRGB8 brightnessRGB8 add = pixelMap brightFunction where up v = fromIntegral (fromIntegral v + add) brightFunction (PixelRGB8 r g b) = PixelRGB8 (up r) (up g) (up b)u JuicyPixelsrTraversal in "raster" order, from left to right the top to bottom. This traversal is matching pixelMap in spirit. Since 3.2.4v JuicyPixelsTraversal providing the pixel position with it's value. The traversal in raster order, from lef to right, then top to bottom. The traversal match pixelMapXY in spirit. Since 3.2.4w JuicyPixels Just like tK only the function takes the pixel coordinates as additional parameters.x JuicyPixelsdCombine, pixel by pixel and component by component the values of 3 different images. Usage example: averageBrightNess c1 c2 c3 = clamp $ toInt c1 + toInt c2 + toInt c3 where clamp = fromIntegral . min 0 . max 255 toInt :: a -> Int toInt = fromIntegral ziPixelComponent3 averageBrightNess img1 img2 img3O JuicyPixels7Convert RGB8 or RGB16 to CMYK8 and CMYK16 respectfully.Noteb - 32bit precision is not supported. Make sure to adjust implementation if ever used with Word32.y JuicyPixels8Perform a gamma correction for an image with HDR pixels.z JuicyPixels@Perform a tone mapping operation on an High dynamic range image.{ JuicyPixelsmThis function will fill an image with a simple packeable pixel. It will be faster than any unsafeWritePixel.| JuicyPixels*Fill a packeable pixel between two bounds.} JuicyPixelsDRead a packeable pixel from an image. Equivalent to unsafeReadPixel~ JuicyPixelsFWrite a packeable pixel into an image. equivalent to unsafeWritePixel. JuicyPixels&Free promotion for identic pixel types JuicyPixelsFunction for color component JuicyPixelsFunction for alpha componentb JuicyPixelsBThe component index, beginning at 0 ending at (componentCount - 1) JuicyPixels Source imageh JuicyPixelsWidth JuicyPixelsHeight JuicyPixelsBackground colori JuicyPixelsWidth JuicyPixelsHeightP JuicyPixelsGenerating function, with x and y params. JuicyPixelsWidth in pixels JuicyPixelsHeight in pixelsn JuicyPixelsGenerating function, with x and y params. JuicyPixelsWidth in pixels JuicyPixelsHeight in pixelso JuicyPixels Image width JuicyPixels Image height JuicyPixelsGenerating functionsp JuicyPixels"Function taking the state, x and y JuicyPixels Initial state JuicyPixelsWidth in pixels JuicyPixelsHeight in pixelsr JuicyPixelsmonadic mapping function JuicyPixels Initial state JuicyPixelsImage to fold overO JuicyPixelsPixel building function JuicyPixels RGB sample JuicyPixelsResulting sampley JuicyPixels*Gamma value, should be between 0.5 and 3.0 JuicyPixelsImage to treat.z JuicyPixelsExposure parameter JuicyPixelsImage to treat.| JuicyPixelsImage to write into JuicyPixelsPixel to write JuicyPixels#Start index in pixel base component JuicyPixelspixel count of pixel to write} JuicyPixelsImage to read from JuicyPixels&Index in (PixelBaseComponent px) count~ JuicyPixelsImage to write into JuicyPixels&Index in (PixelBaseComponent px) count JuicyPixelsPixel to write      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\]^_`<=>?@-./0123456789:;#$%&'([)*+,hidgefuv"!      ABCtwqrslmkjcoxnpyzZXYVWTURSPQNOLMJKHIFGDEab{}~|None 3  JuicyPixels/Different known interlace methods for PNG image  JuicyPixelsFNo interlacing, basic data ordering, line by line from left to right.  JuicyPixelsUse the Adam7 ordering, see adam7Reordering JuicyPixelswThe pixels value should be : +---+---+ | c | b | +---+---+ | a | x | +---+---+ x being the current filtered pixel JuicyPixels%Filt(x) = Orig(x), Recon(x) = Filt(x) JuicyPixels>Filt(x) = Orig(x) - Orig(a), Recon(x) = Filt(x) + Recon(a) JuicyPixels>Filt(x) = Orig(x) - Orig(b), Recon(x) = Filt(x) + Recon(b) JuicyPixelsjFilt(x) = Orig(x) - floor((Orig(a) + Orig(b)) / 2), Recon(x) = Filt(x) + floor((Recon(a) + Recon(b)) / 2) JuicyPixelsFilt(x) = Orig(x) - PaethPredictor(Orig(a), Orig(b), Orig(c)), Recon(x) = Filt(x) + PaethPredictor(Recon(a), Recon(b), Recon(c)) JuicyPixels#Low level access to PNG information JuicyPixelsThe real uncompressed image JuicyPixels8List of raw chunk where some user data might be present. JuicyPixelsGPNG chunk representing some extra information found in the parsed file. JuicyPixelsThe raw data inside the chunk JuicyPixelsThe name of the chunk. JuicyPixels.Data structure during real png loading/parsing" JuicyPixels4Palette with indices beginning at 0 to elemcount - 1# JuicyPixels*Raw parsed image which need to be decoded.' JuicyPixelsGWhat kind of information is encoded in the IDAT section of the PngFile/ JuicyPixelsStarting from 00 JuicyPixelsWidth of the following frame1 JuicyPixelsHeight of the following frame8 JuicyPixelsEncoded in a Word89 JuicyPixels#Overwrite output buffer. has value '0': JuicyPixels,Alpha blend to the output buffer. Has value '1'; JuicyPixelsEncoded in a Word8< JuicyPixels}No disposal is done on this frame before rendering the next; the contents of the output buffer are left as is. Has Value 0= JuicyPixelsThe frame's region of the output buffer is to be cleared to fully transparent black before rendering the next frame. Has Value 1> JuicyPixelsthe frame's region of the output buffer is to be reverted to the previous contents before rendering the next frame. Has Value 2L JuicyPixels0 valueM JuicyPixels1 valueN JuicyPixels"Generic header used in PNG images.P JuicyPixelsImage width in number of pixelQ JuicyPixelsImage height in number of pixelR JuicyPixelsNumber of bit per sampleS JuicyPixels5Kind of png image (greyscale, true color, indexed...)T JuicyPixelsCompression method usedU JuicyPixels Must be 0V JuicyPixels6If the image is interlaced (for progressive rendering)W JuicyPixels9Value used to identify a png chunk, must be 4 bytes long.X JuicyPixels!Parse a palette from a png chunk.Q JuicyPixels4Parse method for a png chunk, without decompression.R JuicyPixelsaImplementation of the get method for the PngRawImage, unpack raw data, without decompressing it.S JuicyPixelsWSignature signalling that the following data will be a png image in the png bit streamT JuicyPixels(Helper function to help pack signatures.U JuicyPixels9Signature for the header chunk of png (must be the first)Z JuicyPixelsHSignature for a palette chunk in the pgn file. Must occure before iDAT.[ JuicyPixels3Signature for a data chuck (with image parts in it)\ JuicyPixels>Signature for the last chunk of a png image, telling the end.V JuicyPixels*From the Annex D of the png specification.c JuicyPixelsSCompute the CRC of a raw buffer, as described in annex D of the PNG specification.Z   ! "#$&%'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdZNOPQRSTUV   "'()*+,FGHIJCDEKLM?@AB;<=>89:-./01234567XcZ[\]`a^_bW#$&%! dYNone&'NxyxyNone >EHVXyW JuicyPixelsEfficient representation of a left fold that preserves the fold's step function, initial accumulator, and extraction functionThis allows the XM instance to assemble derived folds that traverse the container only once~ JuicyPixels+To specify how the palette will be created. JuicyPixels"Algorithm used to find the palette JuicyPixelsDo we want to apply the dithering to the image. Enabling it often reduce compression ratio but enhance the perceived quality of the final image. JuicyPixels/Maximum number of color we want in the palette JuicyPixels-Define which palette creation method is used. JuicyPixels`MedianMeanCut method, provide the best results (visualy) at the cost of increased calculations. JuicyPixelsFVery fast algorithm (one pass), doesn't provide good looking results. JuicyPixelsXDefault palette option, which aim at the best quality and maximum possible colors (256) JuicyPixels1Reduces an image to a color palette according to  PaletteOpts and returns the  indices image along with its [.Y JuicyPixelsTModified median cut algorithm with optional ordered dithering. Returns an image of "+ that acts as a matrix of indices into the [.Z JuicyPixels#A naive one pass Color Quantiation algorithm - Uniform Quantization. Simply take the most significant bits. The maxCols parameter is rounded down to the nearest power of 2, and the bits are divided among the three color channels with priority order green, red, blue. Returns an image of "+ that acts as a matrix of indices into the [.[ JuicyPixelsApply a strict left W to a M containerMuch slower than [ on lists because M) operations currently do not trigger  build/foldr fusion\ JuicyPixelsLike ], except with a more general ^ return value ~ ~NoneHVX JuicyPixelsiImport a image from an unsafe pointer The pointer must have a size of width * height * componentCount px JuicyPixelsWidth in pixels JuicyPixelsHeight in pixels JuicyPixelsPointer to the raw data_` None =>?HPSVX^ JuicyPixelsDThis typeclass determine if a pixel can be saved in the TGA format. JuicyPixelsTTransform a raw tga image to an image, without modifying the underlying pixel type..This function can output the following images:.47 JuicyPixels1Equivalent to decodeTga but also provide metadata JuicyPixels;Equivalent to decodeTga but with metdata and palette if any JuicyPixels9Helper function to directly write an image a tga on disk. JuicyPixelsLTransform a compatible image to a raw bytestring representing a Targa file.a JuicyPixels Type witnessb JuicyPixels Type witness None =>HVXf  JuicyPixels'Encode an image into a png if possible. JuicyPixelsQTransform an image into a png encoded bytestring, ready to be written as a file. JuicyPixelsTEncode a png using some metadatas. The following metadata keys will be stored in a tEXt field :  !"#$%&'* using the key present in the constructor..the followings metadata will bes tored in the gAMA chunk.(,The followings metadata will be stored in a pHYs chunk)*  JuicyPixels/Encode a paletted image into a png if possible. JuicyPixelsvEncode a paletted image as a color indexed 8-bit PNG. the palette must have between 1 and 256 values in it. Accepts  and   as palette pixel type JuicyPixelsEquivalent to & but allow writing of metadatas. See / for the details of encoded metadatas Accepts  and   as palette pixel type JuicyPixels<Helper function to directly write an image as a png on disk. JuicyPixelshWrite a dynamic image in a .png image file if possible. The same restriction as encodeDynamicPng apply. JuicyPixels@Encode a dynamic image in PNG if possible, supported images are:./234578   None =>HPVX c JuicyPixelsTDirectly stolen from the definition in the standard (on W3C page), pixel predictor.d JuicyPixelsSimple structure used to hold information about Adam7 deinterlacing. A structure is used to avoid pollution of the module namespace.e JuicyPixelsThe real info about the matrix.f JuicyPixelsApply a filtering method on a reduced image. Apply the filter on each line, using the previous line (the one above it) to perform some prediction on the value.g JuicyPixels!Unpack lines where bit depth is 8h JuicyPixels!Unpack lines where bit depth is 1i JuicyPixels Unpack lines when bit depth is 2j JuicyPixels_Transform a scanline to a bunch of bytes. Bytes are then packed into pixels at a further step.k JuicyPixels]Given data and image size, recreate an image with deinterlaced data for PNG's adam 7 method.l JuicyPixelsDdeinterlace picture in function of the method indicated in the iHDR JuicyPixelsTransform a raw png image to an image, without modifying the underlying pixel type. If the image is greyscale and < 8 bits, a transformation to RGBA8 is performed. This should change in the future. The resulting image let you manage the pixel types..This function can output the following images:./234578 JuicyPixels4Decode a PNG file with, possibly, separated palette. JuicyPixelsSame as 3 but also extract meta datas present in the files.f JuicyPixels Image size   NoneHPV" JuicyPixels;Decode an HDR (radiance) image, the resulting image can be:6 JuicyPixels5Equivalent to decodeHDR but with aditional metadatas. JuicyPixelsFWrite an High dynamic range image into a radiance image file on disk. JuicyPixelsQWrite a RLE encoded High dynamic range image into a radiance image file on disk. JuicyPixels^Encode an High dynamic range image into a radiance image file format. Alias for encodeRawHDR JuicyPixelsZEncode an High dynamic range image into a radiance image file format. without compression JuicyPixelsEncode an High dynamic range image into a radiance image file format using a light RLE compression. Some problems seem to arise with some image viewer.None =>?HVXc/m JuicyPixels9Pixel formats used to encode indexed or grayscale images.n JuicyPixels,Pixel formats used to encode RGB image data.o JuicyPixels-Pixel formats used to encode RGBA image data.p JuicyPixels"Three bitfields (red, gree, blue).q JuicyPixels(Four bitfields (red, green, blue, alpha)r JuicyPixels5Information required to extract data from a bitfield.s JuicyPixelsThe original bitmask.t JuicyPixels+The computed number of bits to shift right.u JuicyPixels-The scale factor to fit the data into 8 bits. JuicyPixelsSAll the instance of this class can be written as a bitmap file using this library.v JuicyPixelsBITMAPxHEADER with compatibility up to V5. This header was first introduced with Windows 2.0 as the BITMAPCOREHEADER, and was later extended in Windows 3.1, Windows 95 and Windows 98. The original BITMAPCOREHEADER includes all fields up to w>. The Windows 3.1 BITMAPINFOHEADER adds all the fields up to importantColors.;Some Windows 3.1 bitmaps with 16 or 32 bits per pixel might also have three bitmasks following the BITMAPINFOHEADER. These bitmasks were later incorporated into the bitmap header structure in the unreleased BITMAPV2INFOHEADER. The (also unreleased) BITMAPV3INFOHEADER added another bitmask for an alpha channel.The later Windows 95 and Windows 98 extensions to the BITMAPINFOHEADER extend the BITMAPV3INFOHEADER, adding support for color correction.BITMAPV4HEADER (Windows 95) may include a simple color profile in a proprietary format. The fields in this color profile (which includes gamma values) are not to be used unless the x field is y.BITMAPV5HEADER (Windows 98) adds support for an ICC color profile. The presence of an ICC color profile is indicated by setting the x field to z or { . If it is { then the profile data is actually a Windows-1252 encoded string containing the fully qualified path to an ICC color profile.| JuicyPixelsPixels per meter} JuicyPixelsPixels per meter~ JuicyPixelsNumber of colors in the palette JuicyPixels'Red bitfield mask, set to 0 if not used JuicyPixels)Green bitfield mask, set to 0 if not used JuicyPixelsJBlue bitfield mask, set to 0 if not used Fields added to the header in V3 JuicyPixelsKAlpha bitfield mask, set to 0 if not used Fields added to the header in V4 JuicyPixelsBWindows color space, not decoded Fields added to the header in V5 JuicyPixels7The type of color space declared in a Windows BMP file. JuicyPixelsin bytes JuicyPixels?Size of the Windows BITMAPV4INFOHEADER color space information. JuicyPixelsSizes of basic BMP headers. JuicyPixelsSizes of basic BMP headers. JuicyPixelsSizes of basic BMP headers. JuicyPixelsSizes of extended BMP headers. JuicyPixelsSizes of extended BMP headers. JuicyPixelsSizes of extended BMP headers. JuicyPixelsSizes of extended BMP headers. JuicyPixels!Default bitfields 32 bit bitmaps. JuicyPixels%Default bitfields for 16 bit bitmaps. JuicyPixels#Extract pixel data from a bitfield. JuicyPixelsConvert a bit mask into a BitField. JuicyPixelsHelper method to cast a  to a  of some type. JuicyPixelsVTry to decode a bitmap image. Right now this function can output the following image:.47 JuicyPixelsSame as  but also extracts metadata. JuicyPixelsSame as : but also extracts metadata and provide separated palette. JuicyPixelsADecode the rest of a bitmap, after the headers have been decoded. JuicyPixels6Decode a bitfield. Will fail if the bitfield is empty. JuicyPixels"Compute the size of the pixel data JuicyPixels/Write an image in a file use the bitmap format. JuicyPixelsNEncode an image into a bytestring in .bmp format ready to be written on disk. JuicyPixelsEquivalent to ) but also store the following metadatas:)* JuicyPixelsQWrite a dynamic image in a .bmp image file if possible. The same restriction as  apply. JuicyPixels@Encode a dynamic image in BMP if possible, supported images are:.47 JuicyPixels8Convert an image to a bytestring ready to be serialized. JuicyPixelsEquivalent to ) but also store the following metadatas:)*  +NoneSXo JuicyPixelsType used to read bits JuicyPixels(Current bit index, current value, string JuicyPixels"Bitify a list of things to decode. JuicyPixelszDrop all bit until the bit of indice 0, usefull to parse restart marker, as they are byte aligned, but Huffman might not. JuicyPixelssBitify a list of things to decode. Handle Jpeg escape code (0xFF 0x00), thus should be only used in JPEG decoding. JuicyPixels%Append some data bits to a Put monad. JuicyPixels%Append some data bits to a Put monad. JuicyPixels<The real data to be stored. Actual data should be in the LSB JuicyPixels#Number of bit to write from 1 to 32 JuicyPixels<The real data to be stored. Actual data should be in the LSB JuicyPixels#Number of bit to write from 1 to 32None>P|  JuicyPixelsBEnumeration used to search in the tables for different components. JuicyPixelsRepresent 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 JuicyPixels0Tree storing the code used for huffman encoding. JuicyPixels4If bit is 0 take the first subtree, if 1, the right. JuicyPixelsWe should output the value JuicyPixelsno value present JuicyPixels<Helper function to create pure macro block of the good size. JuicyPixels_Transform parsed coefficients from the jpeg header to a tree which can be used to decode data. JuicyPixels#From the Table K.3 of ITU-81 (p153) JuicyPixels#From the Table K.4 of ITU-81 (p153) JuicyPixels#From the Table K.5 of ITU-81 (p154)NoneHVX2 JuicyPixels 0 : DC, 1 : AC, stored on 4 bits JuicyPixelsStored on 4 bits JuicyPixelsAType introduced only to avoid some typeclass overlapping problem  JuicyPixelsStored on 4 bits  JuicyPixelsStored on 4 bits JuicyPixels (begin, end) JuicyPixelsEncoded as 4 bits JuicyPixelsEncoded as 4 bits JuicyPixelsEncoded as 4 bits JuicyPixelsEncoded as 4 bits JuicyPixelsStored with 4 bits  JuicyPixelsStored with 4 bits0 JuicyPixelsSize: 11 JuicyPixels02 JuicyPixels13 JuicyPixels2; JuicyPixelsValue 0< JuicyPixelsvalue 1= JuicyPixelsvalue 2i JuicyPixels#Macroblock that can be transformed.j JuicyPixelsrType only used to make clear what kind of integer we are carrying Might be transformed into newtype in the future JuicyPixels4Parse JFIF or JFXX information. Right now only JFIF.k JuicyPixels0Create a new macroblock with the good array sizer      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnriklmj !"#$%&'()HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh     >?@ABCDEFG:;<=456789*+,-./0123nNoneNone>HV JuicyPixelsYAlgorithm to call to perform an IDCT, return the same block that the one given as input. JuicyPixels0Perform a Jpeg level shift in a mutable fashion.ikikNoneHV JuicyPixelsReference 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. JuicyPixelsFast DCT extracted from libjpegNoneHV JuicyPixelsWhen in progressive mode, we can have many color in a scan or only one. The indices changes on this fact, when mixed, there is whole MCU for all color components, spanning multiple block lines. With only one color component we use the normal raster order. JuicyPixels;Same as for DcCoefficient, to provide nicer type signatures JuicyPixels+Apply a quantization matrix to a macroblock JuicyPixels8Unpack an int of the given size encoded from MSB to LSB. JuicyPixelsGiven 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) JuicyPixelsThis is one of the most important function of the decoding, it form the barebone decoding pipeline for macroblock. It's all there is to know for macro block transformation JuicyPixelsComponent count JuicyPixelsWidth coefficient JuicyPixelsHeight coefficient JuicyPixelsComponent index JuicyPixelsx JuicyPixelsyNone=?PX' JuicyPixels@Iteration from 0 to n in monadic context, without data keeping.None =>?HPVX  JuicyPixels:Helper type class describing all JPG-encodable pixel types JuicyPixelsRecord gathering all information to encode a component from the source image. Previously was a huge tuple burried in the code JuicyPixels1Assume the macro block is initialized with zeroes JuicyPixelsYDecompress a macroblock from a bitstream given the current configuration from the frame. JuicyPixelsnThis pseudo interpreter interpret the Jpg frame for the huffman, quant table and restart interval parameters. JuicyPixelsTry to decompress and decode a jpeg file. The colorspace is still YCbCr if you want to perform computation on the luma part. You can convert it to RGB using  from the  typeclass..This function can output the following images:.24:9 JuicyPixelsEquivalent to  but also extracts metadatas.4Extract the following metadatas from the JFIF block:)* ,Exif metadata are also extracted if present. JuicyPixelszEncode an image in jpeg at a reasonnable quality level. If you want better quality or reduced file size, you should use  JuicyPixels{Function to call to encode an image to jpeg. The quality factor should be between 0 and 100 (100 being the best quality). JuicyPixelsEquivalent to I, but will store the following metadatas in the file using a JFIF block:)*  JuicyPixelsEquivalent to I, but will store the following metadatas in the file using a JFIF block:)* NThis function also allow to create JPEG files with the following color space:Y (") for greyscale.RGB ()) with no color downsampling on any planeCMYK ()) with no color downsampling on any plane  JuicyPixelscomponent index JuicyPixelsx JuicyPixelsy JuicyPixelsTree used for DC coefficient JuicyPixelsTree used for Ac coefficient JuicyPixelsCurrent quantization table JuicyPixels#A zigzag table, to avoid allocation JuicyPixelsPrevious dc value JuicyPixelscomponent index JuicyPixelsx JuicyPixelsy JuicyPixelsComponent index JuicyPixelsx JuicyPixelsy JuicyPixelsComponent index JuicyPixelsx JuicyPixelsy JuicyPixelsResult image to write into JuicyPixels Source image JuicyPixels*Mutable block where to put extracted block JuicyPixelsPlane JuicyPixelsX sampling factor JuicyPixelsY sampling factor JuicyPixelsSample per pixel JuicyPixelsBlock x JuicyPixelsBlock y JuicyPixelsQuality factor JuicyPixelsImage to encode JuicyPixels Encoded JPEG JuicyPixelsQuality factor JuicyPixelsImage to encode JuicyPixels Encoded JPEG JuicyPixelsQuality factor JuicyPixelsImage to encode JuicyPixels Encoded JPEGNoneӄNone JuicyPixels?Gif image constraint from spec-gif89a, code size max : 12 bits.None/=>?@AHPVXc  JuicyPixelsCClass defining which pixel types can be serialized in a Tiff file. JuicyPixels.Final image and size, return offset and vector JuicyPixelsdwhile mandatory some images don't put correct rowperstrip. So replacing 0 with actual image height. JuicyPixelswDecode a tiff encoded image while preserving the underlying pixel type (except for Y32 which is truncated to 16 bits)..This function can output the following images: ./01234578:; JuicyPixelsLike : but also provides some metdata present in the Tiff file.The metadata extracted are the ) & *- information alongside the EXIF informations. JuicyPixels6Decode TIFF and provide separated palette and metadata JuicyPixelsRTransform an image into a Tiff encoded bytestring, ready to be written as a file. JuicyPixels=Helper function to directly write an image as a tiff on disk. JuicyPixelsHThe Word8 instance is just a passthrough, to avoid copying memory twice JuicyPixels(Type witness, just for the type checker. JuicyPixels(Temporary buffer handling decompression. JuicyPixelsLine size in pixels JuicyPixelsWrite index, in bytes JuicyPixelssize, in bytes JuicyPixelsStride JuicyPixels Final bufferNone>HVX+ JuicyPixelsStored on 3 bits JuicyPixelsSection 20 of spec-gif89a JuicyPixelsSection 18 of spec-gif89a JuicyPixelsStored on 16 bits JuicyPixelsStored on 16 bits JuicyPixelsStored on 8 bits JuicyPixelsStored on 1 bit JuicyPixelsStored on 3 bits JuicyPixelsStored on 1 bit JuicyPixelsStored on 3 bits JuicyPixels(An individual image frame in a GIF image JuicyPixelsImage X offset in GIF canvas JuicyPixelsImage Y offset in GIF canvas JuicyPixels:Image local palette, optional if a global palette is given JuicyPixels!Transparent color index, optional JuicyPixels/Frame transition delay, in 1/100ths of a second JuicyPixelsFrame disposal method JuicyPixels Image pixels JuicyPixels!GIF image definition for encoding JuicyPixels Screen width JuicyPixels Screen height JuicyPixelsGlobal palette, optional JuicyPixelsMBackground color index, optional. If given, a global palette is also required JuicyPixelsLooping behaviour JuicyPixels Image frames JuicyPixels7Help to control the behaviour of GIF animation looping. JuicyPixels/The animation will stop once the end is reached JuicyPixels2The animation will restart once the end is reached JuicyPixels0The animation will repeat n times before stoping JuicyPixels]Delay to wait before showing the next Gif image. The delay is expressed in 100th of seconds. JuicyPixelstTransform a raw gif image to an image, without modifying the pixels. This function can output the following images:47 JuicyPixelsuTransform a raw gif image to an image, without modifying the pixels. This function can output the following images:47-Metadatas include Width & Height information. JuicyPixelsReturn the gif image with metadata and palette. The palette is only returned for the first image of an animation and has no transparency. JuicyPixelsVTransform a raw gif to a list of images, representing all the images of an animation. JuicyPixels.Extract a list of frame delays from a raw gif. JuicyPixels,Default palette to produce greyscale images. JuicyPixels%Encode a complex gif to a bytestring.!There must be at least one image.BThe screen and every frame dimensions must be between 1 and 65535.4Every frame image must fit within the screen bounds.3Every palette must have between one and 256 colors.HThere must be a global palette or every image must have a local palette.AThe background color index must be present in the global palette.aEvery frame's transparent color index, if set, must be present in the palette used by that frame.UEvery color index used in an image must be present in the palette used by that frame. JuicyPixels'Encode a gif animation to a bytestring.#Every image must have the same size3Every palette must have between one and 256 colors. JuicyPixels)Encode a greyscale image to a bytestring.  JuicyPixelsVEncode an image with a given palette. Can return errors if the palette is ill-formed.,A palette must have between 1 and 256 colors  JuicyPixels,Write a greyscale in a gif file on the disk.  JuicyPixels4Write a list of images as a gif animation in a file.#Every image must have the same size3Every palette must have between one and 256 colors.  JuicyPixels+Write a gif image with a palette to a file.,A palette must have between 1 and 256 colors*     *     NoneHV1 JuicyPixelszThis function will try to do anything to encode an image as RADIANCE, make all color conversion and such. Equivalent of  decodeImage for radiance encoding JuicyPixelsvThis function will try to do anything to encode an image as JPEG, make all color conversion and such. Equivalent of  decodeImage for jpeg encoding Save Y or YCbCr Jpeg only, all other colorspaces are converted. To save a RGB or CMYK JPEG file, use the ,- function JuicyPixelsuThis function will try to do anything to encode an image as PNG, make all color conversion and such. Equivalent of  decodeImage for PNG encoding JuicyPixelsxThis function will try to do anything to encode an image as a Tiff, make all color conversion and such. Equivalent of  decodeImage for Tiff encoding JuicyPixelsxThis function will try to do anything to encode an image as bitmap, make all color conversion and such. Equivalent of  decodeImage for Bitmap encoding JuicyPixelsThis function will try to do anything to encode an image as a gif, make all color conversion and quantization. Equivalent of  decodeImage for gif encoding JuicyPixelsThis function will try to do anything to encode an image as a tga, make all color conversion and quantization. Equivalent of  decodeImage for tga encoding None =>?@AHPVd JuicyPixels0Return the first Right thing, accumulating error JuicyPixelsUEncode a full color image to a gif by applying a color quantization algorithm on it. JuicyPixelsTWrite a full color image to a gif by applying a color quantization algorithm on it. JuicyPixelsmHelper function to create a gif animation. All the images of the animation are separated by the same delay. JuicyPixelsIHelper function to write a gif animation on disk. See encodeGifAnimation  JuicyPixelsJLoad an image file without even thinking about it, it does everything as "! JuicyPixelsEquivalent to   but also providing metadatas." JuicyPixelsIf you want to decode an image in a bytestring without even thinking in term of format or whatever, this is the function to use. It will try to decode in each known format and if one decoding succeeds, it will return the decoded image in it's own colorspace.# JuicyPixelsConvert by any means possible a dynamic image to an image in RGBA. The process can lose precision while converting from 16bits pixels or Floating point pixels.$ JuicyPixelsConvert by any means possible a dynamic image to an image in RGB. The process can lose precision while converting from 16bits pixels or Floating point pixels. Any alpha layer will be dropped% JuicyPixelsConvert by any means possible a dynamic image to an image in RGB. The process can lose precision while converting from 32bits pixels or Floating point pixels. Any alpha layer will be dropped& JuicyPixelsEquivalent to "o, but also provide potential metadatas present in the given file and the palettes if the format provides them.' JuicyPixelsEquivalent to "B, but also provide potential metadatas present in the given file.( JuicyPixels>Helper function trying to load a png file from a file on disk.) JuicyPixels>Helper function trying to load a gif file from a file on disk.* JuicyPixels=Helper function trying to load tiff file from a file on disk.+ JuicyPixelsGHelper function trying to load all the images of an animated gif file., JuicyPixelsTry to load a jpeg file and decompress. The colorspace is still YCbCr if you want to perform computation on the luma part. You can convert it to RGB using colorSpaceConversion.- JuicyPixels@Try to load a .bmp file. The colorspace would be RGB, RGBA or Y.. JuicyPixelsWTry to load a .pic file. The colorspace can only be RGB with floating point precision./ JuicyPixels"Try to load a .tga file from disk.0 JuicyPixelsSave an image to a '.jpg'2 file, will do everything it can to save an image.1 JuicyPixelsSave an image to a '.gif', file, will do everything it can to save it.2 JuicyPixelsSave an image to a '.tiff'2 file, will do everything it can to save an image.3 JuicyPixelsSave an image to a '.hdr'2 file, will do everything it can to save an image.4 JuicyPixelsSave an image to a '.png'[ file, will do everything it can to save an image. For example, a simple transcoder to png transcodeToPng :: FilePath -> FilePath -> IO () transcodeToPng pathIn pathOut = do eitherImg <- readImage pathIn case eitherImg of Left _ -> return () Right img -> savePngImage pathOut img5 JuicyPixelsSave an image to a '.bmp'2 file, will do everything it can to save an image.     !"-./0123456789:;[\]^_`klmnoptuv~     !"#$%&'()*+,-./012345 !"'&tlmnpok$%#uv501423-)+    ,(/*.~\]^_`-./0123456789:;["!     ./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~()* !"#$%&'      !"#$%&''(())**++,,--..//001123456789:;<<=>?@ABCDEFGHIJKLMNNOPQRSTUUVVWWXXYYZZ[[\\]]^^__`abbcdefghijklmnopqrstuvwxyz{|}~      !"#$%%&'()*+,-../0123456789:;<=>??@ABBCDDEFGHIJKKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzz{|}~                                                         !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~tu-                          ! " # $ % & ' ( ) * + ,-./01234567893:;3<=34>?@ABCDEFG34HIJKL3<M3NOPQ R S T U V W X Y Z [ \ ]^_`abcdefghijklmnopqrstuvwxyz{|}~++++++++++++++++++++++ (JuicyPixels-3.3.4-7iwMa758Ey23Qw5yPb90vTCodec.Picture.Metadata.ExifCodec.Picture.Metadata!Codec.Picture.Tiff.Internal.Types$Codec.Picture.Tiff.Internal.MetadataCodec.Picture.TypesCodec.Picture.Png.Internal.Type#Codec.Picture.Png.Internal.MetadataCodec.Picture.ColorQuant Codec.PictureCodec.Picture.Tga!Codec.Picture.Png.Internal.ExportCodec.Picture.PngCodec.Picture.HDRCodec.Picture.Bitmap'Codec.Picture.Jpg.Internal.DefaultTable Codec.Picture.Jpg.Internal.Types#Codec.Picture.Jpg.Internal.Metadata#Codec.Picture.Jpg.Internal.FastIdct"Codec.Picture.Jpg.Internal.FastDct!Codec.Picture.Jpg.Internal.Common&Codec.Picture.Jpg.Internal.ProgressiveCodec.Picture.Jpg&Codec.Picture.Gif.Internal.LZWEncodingCodec.Picture.Gif.Internal.LZWCodec.Picture.TiffCodec.Picture.GifCodec.Picture.SavingCodec.Picture.InternalHelper"Codec.Picture.VectorByteConversionTitle DescriptionAuthor CopyrightSoftwareComment DisclaimerSourceWarningUnknownGammaDpiXDpiYCodec.Picture.BitWriterCodec.Picture.Jpg.Internal%encodeDirectJpegAtQualityWithMetadataExifDataExifNoneExifLong ExifShort ExifString ExifUndefined ExifShorts ExifLongs ExifRationalExifSignedRationalExifIFDExifTagTagPhotometricInterpretationTagCompression TagImageWidthTagImageLengthTagXResolutionTagYResolutionTagResolutionUnitTagRowPerStripTagStripByteCountsTagStripOffsetsTagBitsPerSample TagColorMap TagTileWidth TagTileLength TagTileOffsetTagTileByteCountTagSamplesPerPixel TagArtistTagDocumentName TagSoftwareTagPlanarConfigurationTagOrientationTagSampleFormat TagInkSetTagSubfileType TagFillOrder TagYCbCrCoeffTagYCbCrSubsamplingTagYCbCrPositioningTagReferenceBlackWhite TagXPosition TagYPositionTagExtraSampleTagImageDescription TagPredictor TagCopyrightTagMakeTagModel TagDateTime TagGPSInfoTagLightSourceTagFlash TagJpegProcTagJPEGInterchangeFormatTagJPEGInterchangeFormatLengthTagJPEGRestartIntervalTagJPEGLosslessPredictorsTagJPEGPointTransformsTagJPEGQTablesTagJPEGDCTablesTagJPEGACTables TagExifOffset TagUnknown tagOfWord16 word16OfTagisInIFD0$fNFDataExifTag$fNFDataExifData $fEqExifTag $fOrdExifTag $fShowExifTag$fShowExifData MetadatasElem:=>ValueIntDoubleStringKeys ColorSpaceFormatWidthHeightExifSRGBWindowsBitmapColorSpace ICCProfile SourceFormat SourceJpeg SourceGif SourceBitmap SourceTiff SourcePng SourceHDR SourceTGAfoldl'foldMapdeleteextractExifMetaslookupinsert singletonemptydotsPerMeterToDotPerInchdotPerInchToDotsPerMeterdotsPerCentiMeterToDotPerInch mkDpiMetadatamkSizeMetadata basicMetadatasimpleMetadata$fNFDataSourceFormat$fNFDataColorSpace $fNFDataValue $fNFDataElem$fSemigroupMetadatas$fMonoidMetadatas$fEqSourceFormat$fShowSourceFormat$fEqColorSpace$fShowColorSpace $fEqValue $fShowValue$fShowMetadatas$fNFDataMetadatas $fShowElem$fEqKeys $fShowKeys ExtraSampleExtraSampleUnspecifiedExtraSampleAssociatedAlphaExtraSampleUnassociatedAlphaTiffColorspaceTiffMonochromeWhite0TiffMonochromeTiffRGB TiffPaletedTiffTransparencyMaskTiffCMYK TiffYCbCr TiffCIELabImageFileDirectory ifdIdentifierifdTypeifdCount ifdOffset ifdExtendedTiffSampleFormatTiffSampleUint TiffSampleIntTiffSampleFloatTiffSampleUnknown Predictor PredictorNonePredictorHorizontalDifferencingIfdTypeTypeByte TypeAscii TypeShortTypeLong TypeRational TypeSByte TypeUndefinedTypeSignedShortTypeSignedLongTypeSignedRational TypeFloat TypeDoubleTiffCompressionCompressionNoneCompressionModifiedRLECompressionLZWCompressionJPEGCompressionPackBitTiffPlanarConfigurationPlanarConfigContigPlanarConfigSeparate TiffHeader hdrEndianness hdrOffset BinaryParamgetPputP Endianness EndianLittle EndianBigplanarConfgOfConstantconstantToPlaneConfigurationpredictorOfConstantunpackSampleFormatpackSampleFormatpackPhotometricInterpretationunpackPhotometricInterpretationcodeOfExtraSampleunPackCompressionpackCompression$fBinaryEndianness$fBinaryParamEndiannessExifTag$fBinaryParamEndiannessWord32$fBinaryParamEndiannessInt32$fBinaryParamEndiannessWord16$fBinaryTiffHeader$fBinaryParamEndiannessIfdType$fBinaryParamEndianness[])$fBinaryParamEndiannessImageFileDirectory$fBinaryParamByteString(,)$fBinaryParam(,,)ExifData$fEqEndianness$fShowEndianness$fEqTiffHeader$fShowTiffHeader $fShowIfdType $fEqPredictor$fEqTiffSampleFormat$fShowImageFileDirectory exifOffsetIfdencodeTiffStringMetadataextractTiffMetadataPackeablePixelPackedRepresentation packPixel unpackPixelLumaPlaneExtractable computeLumaextractLumaPlane TraversalColorSpaceConvertible convertPixel convertImageColorConvertible promotePixel promoteImagePixelPixelBaseComponentmixWith mixWithAlpha pixelOpacitycomponentCountcolorMappixelBaseIndexmutablePixelBaseIndexpixelAt readPixel writePixel unsafePixelAtunsafeReadPixelunsafeWritePixel PixelRGBA16 PixelRGBA8 PixelCMYK16 PixelCMYK8 PixelYCbCr8 PixelRGBF PixelRGB16 PixelYCbCrK8 PixelRGB8 PixelYA16PixelYA8PixelFPixel32Pixel16Pixel8 PalettedImageTrueColorImage PalettedY8 PalettedRGB8 PalettedRGBA8 PalettedRGB16Palette' _paletteSize _paletteData DynamicImageImageY8ImageY16ImageY32ImageYFImageYA8 ImageYA16 ImageRGB8 ImageRGB16 ImageRGBF ImageRGBA8 ImageRGBA16 ImageYCbCr8 ImageCMYK8 ImageCMYK16 MutableImagemutableImageWidthmutableImageHeightmutableImageDataTransparentPixeldropTransparencygetTransparency PlaneBlack PlaneYellow PlaneMagenta PlaneCyanPlaneCbPlaneCr PlaneLuma PlaneAlpha PlaneBlue PlaneGreenPlaneRed ColorPlanePaletteImage imageWidth imageHeight imageDataextractComponentunsafeExtractComponentdropAlphaLayer freezeImage thawImageunsafeThawImageunsafeFreezeImagecreateMutableImagenewMutableImagepalettedAsImagepalettedToTrueColor dynamicMapdynamicPixelMap generateImage withImagegenerateFoldImage pixelFold pixelFoldM pixelFoldMappixelMap imagePixels imageIPixels pixelMapXYzipPixelComponent3gammaCorrection toneMapping fillImageWithunsafeWritePixelBetweenAtreadPackedPixelAtwritePackedPixelAt$fColorPlanePixelYA8PlaneAlpha$fColorPlanePixelYA8PlaneLuma$fColorPlanePixelYA16PlaneAlpha$fColorPlanePixelYA16PlaneLuma$fColorPlanePixelRGB8PlaneBlue$fColorPlanePixelRGB8PlaneGreen$fColorPlanePixelRGB8PlaneRed$fColorPlanePixelRGB16PlaneBlue $fColorPlanePixelRGB16PlaneGreen$fColorPlanePixelRGB16PlaneRed$fColorPlanePixelRGBFPlaneBlue$fColorPlanePixelRGBFPlaneGreen$fColorPlanePixelRGBFPlaneRed$fColorPlanePixelYCbCr8PlaneCr$fColorPlanePixelYCbCr8PlaneCb $fColorPlanePixelYCbCr8PlaneLuma $fColorPlanePixelCMYK8PlaneBlack!$fColorPlanePixelCMYK8PlaneYellow"$fColorPlanePixelCMYK8PlaneMagenta$fColorPlanePixelCMYK8PlaneCyan!$fColorPlanePixelCMYK16PlaneBlack"$fColorPlanePixelCMYK16PlaneYellow#$fColorPlanePixelCMYK16PlaneMagenta $fColorPlanePixelCMYK16PlaneCyan $fColorPlanePixelRGBA8PlaneAlpha$fColorPlanePixelRGBA8PlaneBlue $fColorPlanePixelRGBA8PlaneGreen$fColorPlanePixelRGBA8PlaneRed!$fColorPlanePixelRGBA16PlaneAlpha $fColorPlanePixelRGBA16PlaneBlue!$fColorPlanePixelRGBA16PlaneGreen$fColorPlanePixelRGBA16PlaneRed$fPixelPixelCMYK16$fPixelPixelYCbCrK8$fPixelPixelCMYK8$fPixelPixelYCbCr8$fPixelPixelRGBA16$fPixelPixelRGBA8$fPixelPixelRGB8$fPixelPixelRGB16$fPixelPixelRGBF$fPixelPixelYA16$fPixelPixelYA8 $fPixelFloat $fPixelWord32 $fPixelWord16 $fPixelWord8$fNFDataMutableImage $fNFDataImage $fEqImage'$fTransparentPixelPixelRGBA16PixelRGB16!$fTransparentPixelPixelYA16Word16$fTransparentPixelPixelYA8Word8%$fTransparentPixelPixelRGBA8PixelRGB8$fNFDataDynamicImage'$fColorConvertiblePixelRGBA8PixelRGBA16&$fColorConvertiblePixelRGB8PixelRGBA16%$fColorConvertiblePixelRGB8PixelRGB16$$fColorConvertiblePixelRGB8PixelRGBF%$fColorConvertiblePixelRGB8PixelRGBA8'$fColorConvertiblePixelRGB16PixelRGBA16&$fColorConvertiblePixelYA16PixelRGBA16%$fColorConvertiblePixelYA16PixelRGB16$$fColorConvertiblePixelYA8PixelRGBA8$$fColorConvertiblePixelYA8PixelRGB16#$fColorConvertiblePixelYA8PixelRGB8 $fColorConvertibleFloatPixelRGBF#$fColorConvertibleWord16PixelRGBA16"$fColorConvertibleWord16PixelRGB16!$fColorConvertibleWord16PixelYA16!$fColorConvertibleWord8PixelRGBA8!$fColorConvertibleWord8PixelRGB16 $fColorConvertibleWord8PixelRGB8$fColorConvertibleWord8Word16$fColorConvertibleWord8Float$fColorConvertibleWord8PixelYA8$fColorConvertibleaa,$fColorSpaceConvertiblePixelCMYK16PixelRGB16*$fColorSpaceConvertiblePixelRGB8PixelCMYK8-$fColorSpaceConvertiblePixelYCbCrK8PixelCMYK8,$fColorSpaceConvertiblePixelYCbCrK8PixelRGB8*$fColorSpaceConvertiblePixelCMYK8PixelRGB8+$fColorSpaceConvertiblePixelYCbCr8PixelRGB8+$fColorSpaceConvertiblePixelRGB8PixelYCbCr8$fColorSpaceConvertibleaa,$fColorSpaceConvertiblePixelRGB16PixelCMYK16$fLumaPlaneExtractablePixelRGB8 $fLumaPlaneExtractablePixelRGB16$fLumaPlaneExtractablePixelYA8!$fLumaPlaneExtractablePixelYCbCr8 $fLumaPlaneExtractablePixelRGBA8$fLumaPlaneExtractablePixelRGBF$fLumaPlaneExtractableFloat$fLumaPlaneExtractableWord32$fLumaPlaneExtractableWord16$fLumaPlaneExtractableWord8$fPackeablePixelPixelYA8$fPackeablePixelPixelYA16$fPackeablePixelPixelCMYK16$fPackeablePixelPixelCMYK8$fPackeablePixelPixelRGBA16$fPackeablePixelPixelRGBA8$fPackeablePixelFloat$fPackeablePixelWord32$fPackeablePixelWord16$fPackeablePixelWord8 $fEqPixelYA8 $fOrdPixelYA8$fShowPixelYA8 $fEqPixelYA16$fOrdPixelYA16$fShowPixelYA16 $fEqPixelRGB8$fOrdPixelRGB8$fShowPixelRGB8$fEqPixelYCbCrK8$fOrdPixelYCbCrK8$fShowPixelYCbCrK8$fEqPixelRGB16$fOrdPixelRGB16$fShowPixelRGB16 $fEqPixelRGBF$fOrdPixelRGBF$fShowPixelRGBF$fEqPixelYCbCr8$fOrdPixelYCbCr8$fShowPixelYCbCr8$fEqPixelCMYK8$fOrdPixelCMYK8$fShowPixelCMYK8$fEqPixelCMYK16$fOrdPixelCMYK16$fShowPixelCMYK16$fEqPixelRGBA8$fOrdPixelRGBA8$fShowPixelRGBA8$fEqPixelRGBA16$fOrdPixelRGBA16$fShowPixelRGBA16$fEqDynamicImagePngInterlaceMethodPngNoInterlacePngInterlaceAdam7 PngFilter FilterNone FilterSubFilterUp FilterAverage FilterPaeth PngLowLevelpngImage pngChunksPngChunk pngChunkDatapngChunkSignature PngRawChunk chunkLength chunkTypechunkCRC chunkData PngPalette PngRawImageheaderchunks PngImageType PngGreyscale PngTrueColourPngIndexedColorPngGreyscaleWithAlphaPngTrueColourWithAlphaAPngFrameControlframeSequenceNum frameWidth frameHeight frameLeftframeTopframeDelayNumeratorframeDelayDenuminator frameDisposal frameBlending APngBlendOpAPngBlendSource APngBlendOverAPngFrameDisposalAPngDisposeNoneAPngDisposeBackgroundAPngDisposePreviousAPngAnimationControlanimationFrameCountanimationPlayCountPngGamma getPngGammaPngPhysicalDimensionpngDpiXpngDpiYpngUnitPngUnitPngUnitUnknown PngUnitMeterPngIHdrwidthheightbitDepth colourTypecompressionMethod filterMethodinterlaceMethodChunkSignature parsePalette mkRawChunk pLTESignature iDATSignature iENDSignature tRNSSignaturegammaSignature pHYsSignature tEXtSignature zTXtSignatureanimationControlSignature pngComputeCrc chunksWithSig$fBinaryPngUnit$fBinaryPngPhysicalDimension$fBinaryPngGamma$fBinaryPngImageType$fBinaryPngRawChunk$fBinaryPngFilter$fBinaryPngInterlaceMethod$fBinaryPngIHdr$fBinaryPngRawImage$fShowAPngAnimationControl$fShowAPngFrameDisposal$fShowAPngBlendOp$fShowAPngFrameControl$fShowPngImageType$fEnumPngFilter$fShowPngFilter$fEnumPngInterlaceMethod$fShowPngInterlaceMethod $fShowPngIHdrextractMetadatasencodeMetadatas$fBinaryPngText$fBinaryPngZText $fShowPngText$fShowPngZTextPaletteOptionspaletteCreationMethodenableImageDitheringpaletteColorCountPaletteCreationMethod MedianMeanCutUniformdefaultPaletteOptions palettize $fFunctorFold$fApplicativeFold $fOrdCluster $fEqClusterimageFromUnsafePtr TgaSaveable decodeTgadecodeTgaWithMetadatadecodeTgaWithPaletteAndMetadatawriteTga encodeTga$fBinaryTgaColorMapType$fBinaryTgaImageType$fBinaryTgaImageDescription$fBinaryTgaHeader$fBinaryTgaFile$fTGAPixelDepth32$fTGAPixelDepth24$fTGAPixelDepth15$fTGAPixelDepth8$fTgaSaveablePixelRGBA8$fTgaSaveablePixelRGB8$fTgaSaveableWord8 PngSavable encodePngencodePngWithMetadataPngPaletteSaveableencodePalettedPngencodePalettedPngWithMetadatawritePngwriteDynamicPngencodeDynamicPng$fPngPaletteSaveablePixelRGBA8$fPngPaletteSaveablePixelRGB8$fPngSavablePixelRGBA16$fPngSavablePixelRGB16$fPngSavableWord16$fPngSavablePixelYA16$fPngSavablePixelYA8$fPngSavableWord8$fPngSavablePixelRGB8$fPngSavablePixelRGBA8 decodePngdecodePngWithMetadatadecodePngWithPaletteAndMetadata decodeHDRdecodeHDRWithMetadatawriteHDRwriteRLENewStyleHDR encodeHDR encodeRawHDRencodeRLENewStyleHDR $fBinaryRGBE$fBinaryRadianceFormat$fBinaryRadianceHeader BmpEncodable decodeBitmapdecodeBitmapWithMetadata"decodeBitmapWithPaletteAndMetadata writeBitmap encodeBitmapencodeBitmapWithMetadatawriteDynamicBitmapencodeDynamicBitmap"encodeBitmapWithPaletteAndMetadata$fBinaryBmpHeader$fBinaryColorSpaceType$fBinaryBmpV5Header$fBmpEncodablePixelRGB8$fBmpEncodablePixelRGBA8$fBmpEncodableWord8$fEqColorSpaceType$fShowColorSpaceType$fShowBmpV5Header $fEqBitfield$fShowBitfield$fEqBitfields4$fShowBitfields4$fEqBitfields3$fShowBitfields3$fEqRGBABmpFormat$fShowRGBABmpFormat$fEqRGBBmpFormat$fShowRGBBmpFormat$fShowIndexedBmpFormat HuffmanTable DctComponent DcComponent AcComponentQuantificationTable MacroBlockHuffmanWriterCodeHuffmanPackedTree HuffmanTreeBranchLeafEmptypackHuffmanTreemakeInverseTablemakeMacroBlockbuildHuffmanTreescaleQuantisationMatrixhuffmanPackedDecodedefaultLumaQuantizationTabledefaultChromaQuantizationTabledefaultDcLumaHuffmanTreedefaultDcLumaHuffmanTabledefaultDcChromaHuffmanTreedefaultDcChromaHuffmanTabledefaultAcLumaHuffmanTreedefaultAcLumaHuffmanTabledefaultAcChromaHuffmanTreedefaultAcChromaHuffmanTable$fEqHuffmanTree$fShowHuffmanTree$fEqDctComponent$fShowDctComponent JpgImageKind BaseLineDCTProgressiveDCTJpgHuffmanTableSpechuffmanTableClasshuffmanTableDest huffSizes huffCodes calculateSizeJpgQuantTableSpecquantPrecisionquantDestination quantTable JpgScanHeader scanLengthscanComponentCountscansspectralSelectionsuccessiveApproxHighsuccessiveApproxLowJpgScanSpecificationcomponentSelectordcEntropyCodingTableacEntropyCodingTableJpgImagejpgFrame JpgComponentcomponentIdentifierhorizontalSamplingFactorverticalSamplingFactorquantizationTableDestJpgFrameHeaderjpgFrameHeaderLengthjpgSamplePrecision jpgHeightjpgWidthjpgImageComponentCount jpgComponents JpgJFIFApp0 _jfifUnit _jfifDpiX _jfifDpiY_jfifThumbnailJFifUnitJFifUnitUnknownJFifPixelsPerInchJFifPixelsPerCentimeter JpgAdobeApp14_adobeDctVersion _adobeFlag0 _adobeFlag1_adobeTransformAdobeTransform AdobeUnknown AdobeYCbCr AdobeYCck JpgColorSpaceJpgColorSpaceYCbCrJpgColorSpaceYCCJpgColorSpaceYJpgColorSpaceYAJpgColorSpaceYCCAJpgColorSpaceYCCKJpgColorSpaceCMYKJpgColorSpaceRGBJpgColorSpaceRGBAJpgFrame JpgAppFrame JpgAdobeAPP14JpgJFIFJpgExif JpgExtension JpgQuantTableJpgHuffmanTable JpgScanBlobJpgScansJpgIntervalRestart JpgFrameKindJpgBaselineDCTHuffmanJpgExtendedSequentialDCTHuffmanJpgProgressiveDCTHuffmanJpgLosslessHuffman#JpgDifferentialSequentialDCTHuffman$JpgDifferentialProgressiveDCTHuffmanJpgDifferentialLosslessHuffmanJpgExtendedSequentialArithmeticJpgProgressiveDCTArithmeticJpgLosslessArithmetic&JpgDifferentialSequentialDCTArithmetic'JpgDifferentialProgressiveDCTArithmetic!JpgDifferentialLosslessArithmeticJpgQuantizationTableJpgHuffmanTableMarkerJpgStartOfScan JpgEndOfImage JpgAppSegmentJpgExtensionSegmentJpgRestartIntervalJpgRestartIntervalEndMutableMacroBlock DcCoefficientcreateEmptyMutableMacroBlockprintMacroBlockprintPureMacroBlock dctBlockSize$fBinaryJpgFrameKind$fBinaryAdobeTransform$fBinaryJpgAdobeApp14$fBinaryJFifUnit$fBinaryJpgJFIFApp0$fBinaryJpgComponent$fBinaryJpgFrameHeader$fBinaryJpgScanSpecification$fBinaryJpgScanHeader$fBinaryJpgQuantTableSpec!$fSizeCalculableJpgQuantTableSpec$fSizeCalculableJpgScanHeader$$fSizeCalculableJpgScanSpecification$fSizeCalculableJpgComponent$fSizeCalculableJpgFrameHeader$fBinaryTableList$fBinaryJpgHuffmanTableSpec#$fSizeCalculableJpgHuffmanTableSpec$fBinaryJpgImage$fBinaryRestartInterval$fEqJpgFrameKind$fShowJpgFrameKind$fShowJpgColorSpace$fShowAdobeTransform$fShowJpgAdobeApp14$fShowJFifUnit$fShowJpgJFIFApp0$fShowJpgComponent$fShowJpgFrameHeader$fShowJpgScanSpecification$fShowJpgScanHeader$fShowJpgQuantTableSpec$fShowJpgHuffmanTableSpec$fShowJpgFrame$fShowJpgImagefastIdctmutableLevelShift referenceDctfastDctLibJpegJpgUnpackerParameter dcHuffmanTree acHuffmanTreecomponentIndexrestartIntervalcomponentWidthcomponentHeight subSamplingcoefficientRangesuccessiveApprox readerIndex indiceVector blockIndex blockMcuX blockMcuYDctCoefficients toBlockSizedecodeRestartInterval decodeIntdecodeRrrrSsssdcCoefficientDecode deQuantizeinverseDirectCosineTransformzigZagReorderForwardvzigZagReorderForward zigZagReorder unpackInt rasterMapunpackMacroBlockdecodeMacroBlock$fShowJpgUnpackerParameterprogressiveUnpack JpgEncodable decodeJpegdecodeJpegWithMetadata encodeJpegencodeJpegAtQualityencodeJpegAtQualityWithMetadata$fJpgEncodablePixelCMYK8$fJpgEncodablePixelRGB8$fJpgEncodablePixelYCbCr8$fJpgEncodableWord8 lzwEncode decodeLzw decodeLzwTiff$fEqTiffVariant TiffSaveable decodeTiffdecodeTiffWithMetadata decodeTiffWithPaletteAndMetadata encodeTiff writeTiff$fBinaryParamByteStringTiffInfo$fUnpackableFloat$fUnpackableWord32$fUnpackableWord16$fUnpackableWord8$fUnpackablePack4$fUnpackablePack2$fUnpackablePack12$fUnpackableYCbCrSubsampling$fTiffSaveablePixelYCbCr8$fTiffSaveablePixelRGBA16$fTiffSaveablePixelRGBA8$fTiffSaveablePixelRGB16$fTiffSaveablePixelRGB8$fTiffSaveablePixelCMYK16$fTiffSaveablePixelCMYK8$fTiffSaveablePixelYA16$fTiffSaveablePixelYA8$fTiffSaveableFloat$fTiffSaveableWord32$fTiffSaveableWord16$fTiffSaveableWord8GifDisposalMethod DisposalAny DisposalDoNotDisposalRestoreBackgroundDisposalRestorePreviousDisposalUnknownGifFrame gfXOffset gfYOffset gfPalette gfTransparentgfDelay gfDisposalgfPixels GifEncodegeWidthgeHeight gePalette geBackground geLoopinggeFrames GifLooping LoopingNeverLoopingForever LoopingRepeatGifDelay decodeGifdecodeGifWithMetadatadecodeGifWithPaletteAndMetadatadecodeGifImagesgetDelaysGifImages greyPaletteencodeComplexGifImageencodeGifImagesencodeGifImageencodeGifImageWithPalette writeGifImagewriteGifImageswriteGifImageWithPalettewriteComplexGifImage$fBinaryGifVersion$fBinaryLogicalScreenDescriptor$fBinaryImageDescriptor$fBinaryGraphicControlExtension$fBinaryGifImage$fBinaryGifHeader$fBinaryGifFileimageToRadiance imageToJpg imageToPng imageToTiff imageToBitmap imageToGif imageToTgaencodeColorReducedGifImagewriteColorReducedGifImageencodeGifAnimationwriteGifAnimation readImagereadImageWithMetadata decodeImage convertRGBA8 convertRGB8 convertRGB16!decodeImageWithPaletteAndMetadatadecodeImageWithMetadatareadPngreadGifreadTiff readGifImagesreadJpeg readBitmapreadHDRreadTGA saveJpgImage saveGifImage saveTiffImagesaveRadianceImage savePngImage saveBmpImage$fDecimablePixelRGBFPixelRGB16$fDecimablePixelRGBFPixelRGB8$fDecimableFloatWord16$fDecimableFloatWord8 $fDecimablePixelCMYK16PixelCMYK8 $fDecimablePixelRGBA16PixelRGBA8$fDecimablePixelRGB16PixelRGB8$fDecimablePixelYA16PixelYA8$fDecimableWord32Word8$fDecimableWord32Word16$fDecimableWord16Word8decoderunGet runGetStrictgetRemainingBytesgetRemainingLazyBytesunionbaseGHC.Basemempty orderIfdByTagsetupIfdOffsetsGenSTtoComponentIndexGHC.Errerror Data.FoldableFoldablemapintegralRGBToCMYKgenerateMutableImage parseChunksparseRawPngImage pngSignature signature iHDRSignature pngCrcTableFold ApplicativemedianMeanCutQuantizationuniformQuantizationfold intLengthlengthGHC.NumNum blitVector toByteStringunpackUncompressedTga unpackRLETgaPngLineAdam7MatrixInfoadam7MatrixInfo pngFiltering byteUnpacker bitUnpackertwoBitsUnpackerscanlineUnpacker8 adam7Unpack deinterlacerIndexedBmpFormat RGBBmpFormat RGBABmpFormat Bitfields3 Bitfields4BitfieldbfMaskbfShiftbfScale BmpV5Header bitPerPixelcolorSpaceType CalibratedRGBProfileEmbedded ProfileLinked xResolution yResolution colorCountredMask greenMaskblueMask alphaMask colorSpaceColorSpaceTypefileSizesizeofColorProfilesizeofBmpHeadersizeofBmpCoreHeadersizeofBmpInfoHeadersizeofBmpV2HeadersizeofBmpV3HeadersizeofBmpV4HeadersizeofBmpV5HeaderdefaultBitfieldsRGB32defaultBitfieldsRGB16extractBitfield makeBitfieldcastByteStringbytestring-0.10.8.2Data.ByteString.Internal ByteString&vector-0.12.0.3-ChzWbiXyvuNAQj0dcU08SgData.Vector.StorableVectordecodeBitmapWithHeaders getBitfieldsizeofPixelDataencodeBitmapWithPalette BoolReader BoolStatesetDecodedString byteAlignJpgsetDecodedStringJpg writeBits' writeBitsGifBoolWriteStateRefemptyBoolState runBoolReaderrunBoolReaderWithexecBoolReader initBoolStateinitBoolStateJpg getNextBitJpg getNextIntJpgsetDecodedStringMSBgetNextBitsMSBFirstgetNextBitsLSBFirstnewWriteStateReffinalizeBoolWriterfinalizeBoolWriterGif TableList parseJF__lineMap EncoderStateacCoefficientsDecodedecompressMacroBlockjpgMachineStepUnpacker unpack444Yunpack444Ycbcrunpack421Ycbcr extractBlocklzwallocTempBufferunpackmergeBackTempBuffergceDisposalMethodImageDescriptorLogicalScreenDescriptor screenWidth screenHeightbackgroundIndex hasGlobalMapcolorResolutionisColorTableSortedcolorTableSize eitherLoad