ihaskell-juicypixels 0.2.0.0 → 0.2.2.0
raw patch · 2 files changed
+68/−43 lines, 2 filesdep ~basedep ~classy-preludedep ~ihaskell
Dependency ranges changed: base, classy-prelude, ihaskell
Files
IHaskell/Display/Juicypixels.hs view
@@ -1,33 +1,58 @@-{-# LANGUAGE NoImplicitPrelude, TypeSynonymInstances, FlexibleInstances #-}-module IHaskell.Display.Juicypixels - ( module IHaskell.Display- , module Codec.Picture- ) where+{-# LANGUAGE NoImplicitPrelude, TypeSynonymInstances, FlexibleInstances #-} -import Codec.Picture-import ClassyPrelude-import IHaskell.Display-import System.Directory-import System.IO.Unsafe+module IHaskell.Display.Juicypixels (module IHaskell.Display, module Codec.Picture) where +import Codec.Picture+import ClassyPrelude+import IHaskell.Display+import System.Directory+import System.IO.Unsafe+ -- instances-instance IHaskellDisplay DynamicImage where display = displayImageAsJpg -instance IHaskellDisplay (Image Pixel8) where display = displayImageAsJpg . ImageY8-instance IHaskellDisplay (Image Pixel16) where display = displayImageAsJpg . ImageY16 -instance IHaskellDisplay (Image PixelF) where display = displayImageAsJpg . ImageYF-instance IHaskellDisplay (Image PixelYA8) where display = displayImageAsJpg . ImageYA8-instance IHaskellDisplay (Image PixelYA16) where display = displayImageAsJpg . ImageYA16-instance IHaskellDisplay (Image PixelRGB8) where display = displayImageAsJpg . ImageRGB8-instance IHaskellDisplay (Image PixelRGB16) where display = displayImageAsJpg . ImageRGB16-instance IHaskellDisplay (Image PixelRGBF) where display = displayImageAsJpg . ImageRGBF-instance IHaskellDisplay (Image PixelRGBA8) where display = displayImageAsJpg . ImageRGBA8-instance IHaskellDisplay (Image PixelRGBA16) where display = displayImageAsJpg . ImageRGBA16 -instance IHaskellDisplay (Image PixelYCbCr8) where display = displayImageAsJpg . ImageYCbCr8-instance IHaskellDisplay (Image PixelCMYK8) where display = displayImageAsJpg . ImageCMYK8 -instance IHaskellDisplay (Image PixelCMYK16) where display = displayImageAsJpg . ImageCMYK16 +instance IHaskellDisplay DynamicImage where+ display = displayImageAsJpg +instance IHaskellDisplay (Image Pixel8) where+ display = displayImageAsJpg . ImageY8++instance IHaskellDisplay (Image Pixel16) where+ display = displayImageAsJpg . ImageY16++instance IHaskellDisplay (Image PixelF) where+ display = displayImageAsJpg . ImageYF++instance IHaskellDisplay (Image PixelYA8) where+ display = displayImageAsJpg . ImageYA8++instance IHaskellDisplay (Image PixelYA16) where+ display = displayImageAsJpg . ImageYA16++instance IHaskellDisplay (Image PixelRGB8) where+ display = displayImageAsJpg . ImageRGB8++instance IHaskellDisplay (Image PixelRGB16) where+ display = displayImageAsJpg . ImageRGB16++instance IHaskellDisplay (Image PixelRGBF) where+ display = displayImageAsJpg . ImageRGBF++instance IHaskellDisplay (Image PixelRGBA8) where+ display = displayImageAsJpg . ImageRGBA8++instance IHaskellDisplay (Image PixelRGBA16) where+ display = displayImageAsJpg . ImageRGBA16++instance IHaskellDisplay (Image PixelYCbCr8) where+ display = displayImageAsJpg . ImageYCbCr8++instance IHaskellDisplay (Image PixelCMYK8) where+ display = displayImageAsJpg . ImageCMYK8++instance IHaskellDisplay (Image PixelCMYK16) where+ display = displayImageAsJpg . ImageCMYK16+ -- main rendering function-displayImageAsJpg :: DynamicImage -> IO Display+displayImageAsJpg :: DynamicImage -> IO Display displayImageAsJpg renderable = do switchToTmpDir @@ -35,35 +60,35 @@ -- Write the image saveJpgImage 95 filename renderable -- Convert to base64.- imgData <- readFile $ fpFromString filename+ imgData <- readFile filename return $ Display [jpg (imWidth renderable) (imHeight renderable) $ base64 imgData] -- The type DynamicImage does not have a function to extract width and height imWidth :: DynamicImage -> Int-imWidth img = w- where (w, h) = imWidthHeight img+imWidth img = w+ where+ (w, h) = imWidthHeight img imHeight :: DynamicImage -> Int imHeight img = h- where (w, h) = imWidthHeight img+ where+ (w, h) = imWidthHeight img -- Helper functions to pattern match on the DynamicImage Constructors imWidthHeight :: DynamicImage -> (Int, Int)-imWidthHeight (ImageY8 im) = imWH im-imWidthHeight (ImageY16 im) = imWH im-imWidthHeight (ImageYF im) = imWH im-imWidthHeight (ImageYA8 im) = imWH im+imWidthHeight (ImageY8 im) = imWH im+imWidthHeight (ImageY16 im) = imWH im+imWidthHeight (ImageYF im) = imWH im+imWidthHeight (ImageYA8 im) = imWH im imWidthHeight (ImageYA16 im) = imWH im-imWidthHeight (ImageRGB8 im) = imWH im -imWidthHeight (ImageRGB16 im) = imWH im -imWidthHeight (ImageRGBF im) = imWH im +imWidthHeight (ImageRGB8 im) = imWH im+imWidthHeight (ImageRGB16 im) = imWH im+imWidthHeight (ImageRGBF im) = imWH im imWidthHeight (ImageRGBA8 im) = imWH im imWidthHeight (ImageRGBA16 im) = imWH im-imWidthHeight (ImageYCbCr8 im) = imWH im +imWidthHeight (ImageYCbCr8 im) = imWH im imWidthHeight (ImageCMYK8 im) = imWH im imWidthHeight (ImageCMYK16 im) = imWH im imWH :: (Image a) -> (Int, Int) imWH im = (imageWidth im, imageHeight im)--
ihaskell-juicypixels.cabal view
@@ -7,7 +7,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 0.2.0.0+version: 0.2.2.0 -- A short (one-line) description of the package. synopsis: IHaskell - IHaskellDisplay instances of the image types of the JuicyPixels package.@@ -62,12 +62,12 @@ OverloadedStrings -- Other library packages from which modules are imported.- build-depends: base ==4.6.* || ==4.7.*,- classy-prelude >=0.6,+ build-depends: base >=4.6 && <4.9,+ classy-prelude >=0.10.5, bytestring, directory, JuicyPixels >= 3.1.3,- ihaskell >= 0.5+ ihaskell >= 0.6.2 -- Directories containing source files. -- hs-source-dirs: