packages feed

ihaskell-juicypixels 0.3.0.0 → 1.1.0.1

raw patch · 3 files changed

+31/−90 lines, 3 filesdep ~basesetup-changednew-uploader

Dependency ranges changed: base

Files

IHaskell/Display/Juicypixels.hs view
@@ -2,93 +2,35 @@  module IHaskell.Display.Juicypixels (module IHaskell.Display, module Codec.Picture) where -import           Codec.Picture-import           IHaskell.Display-import           System.Directory-import           System.IO.Unsafe-import qualified Data.ByteString.Char8 as CBS---- 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+import qualified Codec.Picture as P+import           Codec.Picture (Image(..))+import           Codec.Picture.Png (PngSavable, encodePng)+import           IHaskell.Display (IHaskellDisplay, Display(..), display, png, base64)+import           Data.ByteString.Lazy (ByteString, toStrict) -instance IHaskellDisplay (Image PixelYCbCr8) where-  display = displayImageAsJpg . ImageYCbCr8+instance IHaskellDisplay (Image P.Pixel8) where+  display = return . format -instance IHaskellDisplay (Image PixelCMYK8) where-  display = displayImageAsJpg . ImageCMYK8+instance IHaskellDisplay (Image P.Pixel16) where+  display = return . format -instance IHaskellDisplay (Image PixelCMYK16) where-  display = displayImageAsJpg . ImageCMYK16+instance IHaskellDisplay (Image P.PixelYA8) where+  display = return . format --- main rendering function-displayImageAsJpg :: DynamicImage -> IO Display-displayImageAsJpg renderable = do-  switchToTmpDir+instance IHaskellDisplay (Image P.PixelYA16) where+  display = return . format -  let filename = ".ihaskell.juicypixels.jpg"-  -- Write the image-  saveJpgImage 95 filename renderable-  -- Convert to base64.-  imgData <- readFile filename-  return $ Display [jpg (imWidth renderable) (imHeight renderable) $ base64 (CBS.pack imgData)]+instance IHaskellDisplay (Image P.PixelRGB8) where+  display = return . format --- The type DynamicImage does not have a function to extract width and height-imWidth :: DynamicImage -> Int-imWidth img = w-  where-    (w, h) = imWidthHeight img+instance IHaskellDisplay (Image P.PixelRGB16) where+  display = return . format -imHeight :: DynamicImage -> Int-imHeight img = h-  where-    (w, h) = imWidthHeight img+instance IHaskellDisplay (Image P.PixelRGBA8) where+  display = return . format --- 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 (ImageYA16 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 (ImageCMYK8 im) = imWH im-imWidthHeight (ImageCMYK16 im) = imWH im+instance IHaskellDisplay (Image P.PixelRGBA16) where+  display = return . format -imWH :: Image a -> (Int, Int)-imWH im = (imageWidth im, imageHeight im)+format :: PngSavable a => Image a -> Display+format im@(Image w h _) = Display [png w h . base64 . toStrict . encodePng $ im]
Setup.hs view
@@ -1,2 +1,3 @@-import Distribution.Simple+import           Distribution.Simple+ main = defaultMain
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.3.0.0+version:             1.1.0.1  -- A short (one-line) description of the package. synopsis:            IHaskell - IHaskellDisplay instances of the image types of the JuicyPixels package.@@ -29,11 +29,13 @@ license-file:        LICENSE  -- The package author(s).-author:              Roland Senn+author:              Roland Senn,+                     Will Yager  -- An email address to which users can send suggestions, bug reports, and  -- patches.-maintainer:          rsx@bluewin.ch+maintainer:          rsx@bluewin.ch,+                     will.yager@gmail.com  -- A copyright notice. -- copyright:           @@ -56,13 +58,9 @@      -- Modules included in this library but not exported.   -- other-modules:       -  -  -- Language extensions.-  default-extensions: DoAndIfThenElse-              OverloadedStrings                 -- Other library packages from which modules are imported.-  build-depends:       base >=4.6 && <4.9,+  build-depends:       base >=4.6 && <5,                        bytestring,                        directory,                        JuicyPixels >= 3.1.3,