servant-JuicyPixels 0.3.0.6 → 0.3.1.0
raw patch · 2 files changed
+50/−17 lines, 2 filesdep ~JuicyPixelsPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: JuicyPixels
API changes (from Hackage documentation)
+ Servant.JuicyPixels: instance (GHC.TypeNats.KnownNat quality, quality GHC.TypeNats.<= 100) => Servant.API.ContentTypes.MimeUnrender (Servant.JuicyPixels.JPEG quality) (Codec.Picture.Types.DynamicImage, Codec.Picture.Metadata.Metadatas)
+ Servant.JuicyPixels: instance (GHC.TypeNats.KnownNat quality, quality GHC.TypeNats.<= 100, Codec.Picture.Types.ColorSpaceConvertible a Codec.Picture.Types.PixelYCbCr8) => Servant.API.ContentTypes.MimeRender (Servant.JuicyPixels.JPEG quality) (Codec.Picture.Types.Image a, Codec.Picture.Metadata.Metadatas)
+ Servant.JuicyPixels: instance Codec.Picture.Bitmap.BmpEncodable pixel => Servant.API.ContentTypes.MimeRender Servant.JuicyPixels.BMP (Codec.Picture.Types.Image pixel, Codec.Picture.Metadata.Metadatas)
+ Servant.JuicyPixels: instance Codec.Picture.Png.Internal.Export.PngSavable a => Servant.API.ContentTypes.MimeRender Servant.JuicyPixels.PNG (Codec.Picture.Types.Image a, Codec.Picture.Metadata.Metadatas)
+ Servant.JuicyPixels: instance Servant.API.ContentTypes.MimeUnrender Servant.JuicyPixels.BMP (Codec.Picture.Types.DynamicImage, Codec.Picture.Metadata.Metadatas)
+ Servant.JuicyPixels: instance Servant.API.ContentTypes.MimeUnrender Servant.JuicyPixels.GIF (Codec.Picture.Types.DynamicImage, Codec.Picture.Metadata.Metadatas)
+ Servant.JuicyPixels: instance Servant.API.ContentTypes.MimeUnrender Servant.JuicyPixels.PNG (Codec.Picture.Types.DynamicImage, Codec.Picture.Metadata.Metadatas)
+ Servant.JuicyPixels: instance Servant.API.ContentTypes.MimeUnrender Servant.JuicyPixels.RADIANCE (Codec.Picture.Types.DynamicImage, Codec.Picture.Metadata.Metadatas)
+ Servant.JuicyPixels: instance Servant.API.ContentTypes.MimeUnrender Servant.JuicyPixels.TGA (Codec.Picture.Types.DynamicImage, Codec.Picture.Metadata.Metadatas)
+ Servant.JuicyPixels: instance Servant.API.ContentTypes.MimeUnrender Servant.JuicyPixels.TIFF (Codec.Picture.Types.DynamicImage, Codec.Picture.Metadata.Metadatas)
Files
- lib/Servant/JuicyPixels.hs +48/−15
- servant-JuicyPixels.cabal +2/−2
lib/Servant/JuicyPixels.hs view
@@ -1,24 +1,32 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE KindSignatures #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} module Servant.JuicyPixels where -import Servant.API-import GHC.TypeLits-import qualified Network.HTTP.Media as M import Codec.Picture+import Codec.Picture.Bitmap+import Codec.Picture.Gif+import Codec.Picture.HDR+import Codec.Picture.Jpg+import Codec.Picture.Metadata+import Codec.Picture.Png import Codec.Picture.Saving+import Codec.Picture.Tga+import Codec.Picture.Tiff import Codec.Picture.Types-import Data.Proxy import qualified Data.ByteString.Lazy as BL-+import Data.Proxy+import GHC.TypeLits+import qualified Network.HTTP.Media as M+import Servant.API data BMP @@ -28,9 +36,14 @@ instance MimeRender BMP DynamicImage where mimeRender _ = imageToBitmap +instance BmpEncodable pixel => MimeRender BMP (Image pixel, Metadatas) where+ mimeRender _ (img, metadata) = encodeBitmapWithMetadata metadata img+ instance MimeUnrender BMP DynamicImage where mimeUnrender _ = decodeBitmap . BL.toStrict +instance MimeUnrender BMP (DynamicImage, Metadatas) where+ mimeUnrender _ = decodeBitmapWithMetadata . BL.toStrict data GIF @@ -43,6 +56,8 @@ instance MimeUnrender GIF DynamicImage where mimeUnrender _ = decodeGif . BL.toStrict +instance MimeUnrender GIF (DynamicImage, Metadatas) where+ mimeUnrender _ = decodeGifWithMetadata . BL.toStrict data JPEG (quality :: Nat) @@ -58,9 +73,16 @@ mimeRender _ = encodeJpegAtQuality quality . convertImage where quality = fromInteger $ natVal (Proxy :: Proxy quality) +instance (KnownNat quality, quality <= 100, ColorSpaceConvertible a PixelYCbCr8) => MimeRender (JPEG quality) (Image a, Metadatas) where+ mimeRender _ (img, metadata) = encodeJpegAtQualityWithMetadata quality metadata $ convertImage img+ where+ quality = fromInteger $ natVal (Proxy :: Proxy quality)+ instance (KnownNat quality, quality <= 100) => MimeUnrender (JPEG quality) DynamicImage where mimeUnrender _ = decodeJpeg . BL.toStrict +instance (KnownNat quality, quality <= 100) => MimeUnrender (JPEG quality) (DynamicImage, Metadatas) where+ mimeUnrender _ = decodeJpegWithMetadata . BL.toStrict data PNG @@ -73,9 +95,14 @@ instance PngSavable a => MimeRender PNG (Image a) where mimeRender _ = encodePng +instance PngSavable a => MimeRender PNG (Image a, Metadatas) where+ mimeRender _ (img, metadata) = encodePngWithMetadata metadata img+ instance MimeUnrender PNG DynamicImage where mimeUnrender _ = decodePng . BL.toStrict +instance MimeUnrender PNG (DynamicImage, Metadatas) where+ mimeUnrender _ = decodePngWithMetadata . BL.toStrict data TIFF @@ -91,6 +118,8 @@ instance MimeUnrender TIFF DynamicImage where mimeUnrender _ = decodeTiff . BL.toStrict +instance MimeUnrender TIFF (DynamicImage, Metadatas) where+ mimeUnrender _ = decodeTiffWithMetadata . BL.toStrict data RADIANCE @@ -106,7 +135,9 @@ instance MimeUnrender RADIANCE DynamicImage where mimeUnrender _ = decodeHDR . BL.toStrict -#if MIN_VERSION_JuicyPixels(3,2,6)+instance MimeUnrender RADIANCE (DynamicImage, Metadatas) where+ mimeUnrender _ = decodeHDRWithMetadata . BL.toStrict+ data TGA instance Accept TGA where@@ -120,4 +151,6 @@ instance MimeUnrender TGA DynamicImage where mimeUnrender _ = decodeTga . BL.toStrict-#endif++instance MimeUnrender TGA (DynamicImage, Metadatas) where+ mimeUnrender _ = decodeTgaWithMetadata . BL.toStrict
servant-JuicyPixels.cabal view
@@ -1,5 +1,5 @@ name: servant-JuicyPixels-version: 0.3.0.6+version: 0.3.1.0 homepage: https://github.com/tvh/servant-JuicyPixels license: BSD3 license-file: LICENSE@@ -21,7 +21,7 @@ build-depends: base >=4.7 && <5 , bytestring , http-media- , JuicyPixels >=3.2.5.3+ , JuicyPixels >=3.2.6 , servant >=0.4 hs-source-dirs: lib default-language: Haskell2010