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 +23/−81
- Setup.hs +2/−1
- ihaskell-juicypixels.cabal +6/−8
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,