packages feed

massiv-io 0.1.5.0 → 0.1.6.0

raw patch · 17 files changed

+339/−312 lines, 17 filesdep ~massivPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: massiv

API changes (from Hackage documentation)

- Data.Massiv.Array.IO: fromDynamicImage :: forall cs e. (ColorSpace cs e, Source S Ix2 (Pixel cs e)) => DynamicImage -> Maybe (Image S cs e)
+ Data.Massiv.Array.IO: fromDynamicImage :: forall cs e. ColorSpace cs e => DynamicImage -> Maybe (Image S cs e)
- Data.Massiv.Array.IO: toAnyCS :: forall r' cs' e' r cs e. (Source r' Ix2 (Pixel cs' e'), Mutable r Ix2 (Pixel cs e), Storable (Pixel cs e), ColorSpace cs e, ToYA cs' e', ToRGBA cs' e', ToHSIA cs' e', ToCMYKA cs' e', ToYCbCrA cs' e') => Image r' cs' e' -> Maybe (Image r cs e)
+ Data.Massiv.Array.IO: toAnyCS :: forall r' cs' e' r cs e. (Source r' Ix2 (Pixel cs' e'), Mutable r Ix2 (Pixel cs e), ColorSpace cs e, ToYA cs' e', ToRGBA cs' e', ToHSIA cs' e', ToCMYKA cs' e', ToYCbCrA cs' e') => Image r' cs' e' -> Maybe (Image r cs e)

Files

massiv-io.cabal view
@@ -1,5 +1,5 @@ name:                massiv-io-version:             0.1.5.0+version:             0.1.6.0 synopsis:            Import/export of Image files into massiv Arrays description:         This package contains functionality for import/export of arrays                      into the real world. For now it only has the ability to read/write
src/Data/Massiv/Array/IO.hs view
@@ -1,11 +1,11 @@-{-# LANGUAGE CPP                   #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE GADTs                 #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeOperators         #-}-{-# LANGUAGE TypeSynonymInstances  #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeSynonymInstances #-} -- | -- Module      : Data.Massiv.Array.IO -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -15,7 +15,8 @@ -- Portability : non-portable -- module Data.Massiv.Array.IO-  ( -- * Reading+  ( -- $supported+    -- * Reading     readArray   , readImage   , readImageAuto@@ -37,26 +38,23 @@   -- * Supported Image Formats   , module Data.Massiv.Array.IO.Base   , module Data.Massiv.Array.IO.Image-  -- $supported   ) where -import           Control.Concurrent         (forkIO)-import           Control.Exception          (bracket)-import           Control.Monad              (void)-import qualified Data.ByteString            as B-import qualified Data.ByteString.Lazy       as BL-import           Data.Massiv.Array          as A-import           Data.Massiv.Array.IO.Base  hiding (convertEither,-                                             fromEitherDecode, fromMaybeEncode,-                                             toProxy)-import           Data.Massiv.Array.IO.Image-import           Graphics.ColorSpace-import           Prelude                    as P hiding (readFile, writeFile)-import           System.Directory           (createDirectoryIfMissing,-                                             getTemporaryDirectory)-import           System.FilePath-import           System.IO                  (hClose, openBinaryTempFile)-import           System.Process             (readProcess)+import Control.Concurrent (forkIO)+import Control.Exception (bracket)+import Control.Monad (void)+import qualified Data.ByteString as B+import qualified Data.ByteString.Lazy as BL+import Data.Massiv.Array as A+import Data.Massiv.Array.IO.Base hiding (convertEither, fromEitherDecode,+                                  fromMaybeEncode, toProxy)+import Data.Massiv.Array.IO.Image+import Graphics.ColorSpace+import Prelude as P hiding (readFile, writeFile)+import System.Directory (createDirectoryIfMissing, getTemporaryDirectory)+import System.FilePath+import System.IO (hClose, openBinaryTempFile)+import System.Process (readProcess)   @@ -262,7 +260,7 @@      * __read__: ('RGB' 'Word8'), ('RGBA' 'Word8')     * __write__: ('RGB' 'Word8')-    * Also supports reading and writing animated images, when used as @'GIFA'@+    * Also supports reading and writing animated images  * 'HDR': 
src/Data/Massiv/Array/IO/Base.hs view
@@ -1,10 +1,10 @@-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE RankNTypes            #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeFamilies          #-}-{-# LANGUAGE UndecidableInstances  #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-} -- | -- Module      : Data.Massiv.Array.IO.Base -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -31,14 +31,14 @@   , convertEither   ) where -import           Control.Exception    (Exception, throw)-import qualified Data.ByteString      as B (ByteString)+import Control.Exception (Exception, throw)+import qualified Data.ByteString as B (ByteString) import qualified Data.ByteString.Lazy as BL (ByteString)-import           Data.Default         (Default (..))-import           Data.Massiv.Array-import           Data.Maybe           (fromMaybe)-import           Data.Typeable-import           Graphics.ColorSpace  (ColorSpace, Pixel)+import Data.Default (Default(..))+import Data.Massiv.Array+import Data.Maybe (fromMaybe)+import Data.Typeable+import Graphics.ColorSpace (ColorSpace, Pixel)  type Image r cs e = Array r Ix2 (Pixel cs e) 
src/Data/Massiv/Array/IO/Image.hs view
@@ -1,8 +1,8 @@-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}-{-# LANGUAGE GADTs                 #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeSynonymInstances  #-}+{-# LANGUAGE TypeSynonymInstances #-} -- | -- Module      : Data.Massiv.Array.IO.Image -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -24,17 +24,17 @@   , module Data.Massiv.Array.IO.Image.Netpbm   ) where -import           Control.Exception                      (throw)-import           Data.Massiv.Array-import           Data.Massiv.Array.IO.Base-import           Data.Massiv.Array.IO.Image.JuicyPixels-import           Data.Massiv.Array.IO.Image.Netpbm-import qualified Data.ByteString                        as B (ByteString)-import qualified Data.ByteString.Lazy                   as BL (ByteString)-import           Data.Char                              (toLower)-import           Graphics.ColorSpace-import           Prelude                                as P-import           System.FilePath                        (takeExtension)+import Control.Exception (throw)+import qualified Data.ByteString as B (ByteString)+import qualified Data.ByteString.Lazy as BL (ByteString)+import Data.Char (toLower)+import Data.Massiv.Array+import Data.Massiv.Array.IO.Base+import Data.Massiv.Array.IO.Image.JuicyPixels+import Data.Massiv.Array.IO.Image.Netpbm+import Graphics.ColorSpace+import Prelude as P+import System.FilePath (takeExtension)   
src/Data/Massiv/Array/IO/Image/JuicyPixels.hs view
@@ -1,12 +1,14 @@-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE RankNTypes            #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TupleSections         #-}-{-# LANGUAGE TypeFamilies          #-}-{-# LANGUAGE TypeOperators         #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} -- | -- Module      : Data.Massiv.Array.IO.Image.JuicyPixels -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -69,25 +71,41 @@   , fromAnyDynamicImage   ) where -import           Prelude                           as P+import Prelude as P -import qualified Codec.Picture                     as JP-import qualified Codec.Picture.ColorQuant          as JP-import qualified Codec.Picture.Gif                 as JP-import qualified Codec.Picture.Jpg                 as JP-import           Control.Exception-import           Control.Monad                     (guard, msum)-import           Data.Bifunctor-import qualified Data.ByteString                   as B-import qualified Data.ByteString.Lazy              as BL (ByteString)-import           Data.Default                      (Default (..))-import           Data.Massiv.Array                 as M-import           Data.Massiv.Array.IO.Base-import           Data.Massiv.Array.Manifest.Vector-import           Data.Typeable-import qualified Data.Vector.Storable              as V-import           Foreign.Storable                  (Storable (sizeOf))-import           Graphics.ColorSpace+import qualified Codec.Picture as JP+import qualified Codec.Picture.ColorQuant as JP+import qualified Codec.Picture.Gif as JP+import qualified Codec.Picture.Jpg as JP+import Control.Exception+import Control.Monad (guard, msum)+import Data.Bifunctor+import qualified Data.ByteString as B+import qualified Data.ByteString.Lazy as BL (ByteString)+import Data.Default (Default(..))+import Data.Massiv.Array as M+import Data.Massiv.Array.IO.Base+import Data.Massiv.Array.Manifest.Vector+import Data.Typeable+import qualified Data.Vector.Storable as V+import Foreign.Storable (Storable(sizeOf))+import Graphics.ColorSpace++#if !MIN_VERSION_massiv(0, 2, 7)+pattern Sz :: ix -> ix+pattern Sz ix = ix+type Sz ix = ix+#endif+#if !MIN_VERSION_massiv(0, 3, 0)+fromVectorM ::+     (Construct S ix a, Mutable S ix a, Storable a)+  => Comp+  -> Sz ix+  -> V.Vector a+  -> Maybe (Array S ix a)+fromVectorM comp sz = pure . fromVector comp sz+#endif+ -------------------------------------------------------------------------------- -- BMP Format ------------------------------------------------------------------ --------------------------------------------------------------------------------@@ -399,7 +417,7 @@           => JP.PaletteOptions           -> Image r RGB e           -> Maybe (JP.Image JP.Pixel8, JP.Palette)-palettizeRGB pal img = do+palettizeRGB pal img =   msum     [ do Refl <- eqT :: Maybe (e :~: Word8)          return $ palettize' img@@ -748,8 +766,7 @@  elevate   :: forall cs e' e.-     ( Functor (Pixel cs)-     , ColorSpace cs e'+     ( ColorSpace cs e'      , ColorSpace cs e      , Source D Ix2 (Pixel cs e')      )@@ -769,7 +786,7 @@          return $ M.map toDouble img     ] -fromDynamicImage :: forall cs e . (ColorSpace cs e, Source S Ix2 (Pixel cs e))+fromDynamicImage :: forall cs e . ColorSpace cs e                  => JP.DynamicImage -> Maybe (Image S cs e) fromDynamicImage jpDynImg =   case jpDynImg of@@ -817,7 +834,7 @@  fromAnyDynamicImage :: (Mutable r Ix2 (Pixel cs e), ColorSpace cs e) =>                        JP.DynamicImage -> Maybe (Image r cs e)-fromAnyDynamicImage jpDynImg = do+fromAnyDynamicImage jpDynImg =   case jpDynImg of     JP.ImageY8 jimg     -> (fromJPImageUnsafe jimg :: Maybe (Image S Y Word8))     >>= toAnyCS     JP.ImageY16 jimg    -> (fromJPImageUnsafe jimg :: Maybe (Image S Y Word16))    >>= toAnyCS@@ -838,7 +855,6 @@   :: forall r' cs' e' r cs e.      ( Source r' Ix2 (Pixel cs' e')      , Mutable r Ix2 (Pixel cs e)-     , Storable (Pixel cs e)      , ColorSpace cs e      , ToYA cs' e'      , ToRGBA cs' e'@@ -895,16 +911,14 @@  -- Encoding --- | TODO: Validate size toJPImageUnsafe   :: forall r cs a . (JP.Pixel a, Source r Ix2 (Pixel cs (JP.PixelBaseComponent a)),-                      ColorSpace cs (JP.PixelBaseComponent a),-                      Storable (Pixel cs (JP.PixelBaseComponent a)))+                      ColorSpace cs (JP.PixelBaseComponent a))   => Image r cs (JP.PixelBaseComponent a)   -> JP.Image a toJPImageUnsafe img = JP.Image n m $ V.unsafeCast $ toVector arrS where   !arrS = computeSource img :: Image S cs (JP.PixelBaseComponent a)-  (m :. n) = size img+  Sz (m :. n) = size img {-# INLINE toJPImageUnsafe #-}  toJPImageY8 :: Source r Ix2 (Pixel Y Word8) => Image r Y Word8 -> JP.Image JP.Pixel8@@ -969,6 +983,5 @@                      JP.Image jpx -> Maybe (Image S cs e) fromJPImageUnsafe (JP.Image n m !v) = do   guard (n * m * sizeOf (undefined :: Pixel cs e) == V.length v)-  return $ fromVector Par (m :. n) $ V.unsafeCast v+  fromVectorM Par (Sz (m :. n)) $ V.unsafeCast v {-# INLINE fromJPImageUnsafe #-}-
src/Data/Massiv/Array/IO/Image/Netpbm.hs view
@@ -1,12 +1,14 @@-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE NamedFieldPuns        #-}-{-# LANGUAGE RecordWildCards       #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeFamilies          #-}-{-# LANGUAGE TypeOperators         #-}-{-# LANGUAGE TypeSynonymInstances  #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeSynonymInstances #-} -- | -- Module      : Data.Massiv.Array.IO.Image.Netpbm -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -25,21 +27,36 @@   , PPM(..)   ) where -import           Control.Exception-import           Control.Monad                          (guard)-import qualified Data.ByteString                        as B (ByteString)-import           Data.Massiv.Array                      as M-import           Data.Massiv.Array.IO.Base-import           Data.Massiv.Array.IO.Image.JuicyPixels (toAnyCS)-import           Data.Massiv.Array.Manifest.Vector-import           Data.Typeable-import qualified Data.Vector.Storable                   as V-import           Foreign.Storable                       (Storable)-import           Graphics.ColorSpace-import           Graphics.Netpbm                        as Netpbm hiding (PPM)-import qualified Graphics.Netpbm                        as Netpbm (PPM (..))-import           Prelude                                as P+import Control.Exception+import Control.Monad (guard)+import qualified Data.ByteString as B (ByteString)+import Data.Massiv.Array as M+import Data.Massiv.Array.IO.Base+import Data.Massiv.Array.IO.Image.JuicyPixels (toAnyCS)+import Data.Massiv.Array.Manifest.Vector+import Data.Typeable+import qualified Data.Vector.Storable as V+import Foreign.Storable (Storable)+import Graphics.ColorSpace+import Graphics.Netpbm as Netpbm hiding (PPM)+import qualified Graphics.Netpbm as Netpbm (PPM(..))+import Prelude as P +#if !MIN_VERSION_massiv(0, 2, 7)+pattern Sz :: ix -> ix+pattern Sz ix = ix+type Sz ix = ix+#endif+#if !MIN_VERSION_massiv(0, 3, 0)+fromVectorM ::+     (Construct S ix a, Mutable S ix a, Storable a)+  => Comp+  -> Sz ix+  -> V.Vector a+  -> Maybe (Array S ix a)+fromVectorM comp sz = pure . fromVector comp sz+#endif+ -- | Netpbm: portable bitmap image with @.pbm@ extension. data PBM = PBM deriving Show @@ -143,7 +160,7 @@            -> Array B Ix1 (Image r cs e) decodePPMs f converter bs =   either (throw . DecodeError) (fromList Seq) $-  (P.map (fromEitherDecode f showNetpbmCS converter . Right) . fst) <$>+  P.map (fromEitherDecode f showNetpbmCS converter . Right) . fst <$>   parsePPM bs {-# INLINE decodePPMs #-} @@ -166,12 +183,12 @@   => Int -> Int -> V.Vector a -> Maybe (Image S cs e) fromNetpbmImageUnsafe m n v = do   guard (n * m == V.length v)-  return $ fromVector Par (m :. n) $ V.unsafeCast v+  fromVectorM Par (Sz (m :. n)) $ V.unsafeCast v    showNetpbmCS :: Netpbm.PPM -> String-showNetpbmCS Netpbm.PPM {ppmData} = do+showNetpbmCS Netpbm.PPM {ppmData} =   case ppmData of     PbmPixelData _      -> "Image S X Bit"     PgmPixelData8 _     -> "Image S Y Word8"@@ -181,7 +198,7 @@   fromNetpbmImage-  :: forall cs e . (ColorSpace cs e, V.Storable (Pixel cs e)) =>+  :: forall cs e . ColorSpace cs e =>      Netpbm.PPM -> Maybe (Image S cs e) fromNetpbmImage Netpbm.PPM {..} = do   let m = ppmHeight ppmHeader@@ -200,7 +217,7 @@   fromNetpbmImageAuto-  :: forall cs e r . (Mutable r Ix2 (Pixel cs e), ColorSpace cs e, V.Storable (Pixel cs e)) =>+  :: forall cs e r . (Mutable r Ix2 (Pixel cs e), ColorSpace cs e) =>      Netpbm.PPM -> Maybe (Image r cs e) fromNetpbmImageAuto Netpbm.PPM {..} = do   let m = ppmHeight ppmHeader
src/Graphics/ColorSpace.hs view
@@ -1,15 +1,15 @@ {-# OPTIONS_GHC -fno-warn-orphans #-}-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE CPP                   #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE UndecidableInstances  #-}-{-# LANGUAGE ViewPatterns          #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE ViewPatterns #-} #if __GLASGOW_HASKELL__ >= 800   {-# OPTIONS_GHC -Wno-redundant-constraints #-}-  {-# LANGUAGE MonoLocalBinds          #-}+{-# LANGUAGE MonoLocalBinds #-} #endif -- | -- Module      : Graphics.ColorSpace@@ -123,16 +123,16 @@   Word8, Word16, Word32, Word64   ) where -import           Data.Word-import           Graphics.ColorSpace.Binary-import           Graphics.ColorSpace.CMYK-import           Graphics.ColorSpace.Complex-import           Graphics.ColorSpace.HSI-import           Graphics.ColorSpace.Internal-import           Graphics.ColorSpace.RGB-import           Graphics.ColorSpace.X-import           Graphics.ColorSpace.Y-import           Graphics.ColorSpace.YCbCr+import Data.Word+import Graphics.ColorSpace.Binary+import Graphics.ColorSpace.CMYK+import Graphics.ColorSpace.Complex+import Graphics.ColorSpace.HSI+import Graphics.ColorSpace.Internal+import Graphics.ColorSpace.RGB+import Graphics.ColorSpace.X+import Graphics.ColorSpace.Y+import Graphics.ColorSpace.YCbCr   -- -- Binary:
src/Graphics/ColorSpace/Binary.hs view
@@ -1,11 +1,11 @@-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE CPP                   #-}-{-# LANGUAGE DeriveDataTypeable    #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeFamilies          #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.ColorSpace.Binary -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -18,19 +18,19 @@   Bit, on, off, isOn, isOff, fromBool, zero, one, bit2bool, bool2bit, toNum, fromNum   ) where -import           Control.Applicative-import           Control.Monad-import           Data.Bits-import           Data.Typeable                (Typeable)-import qualified Data.Vector.Generic          as V-import qualified Data.Vector.Generic.Mutable  as M-import qualified Data.Vector.Unboxed          as U-import           Data.Word                    (Word8)-import           Foreign.Ptr-import           Foreign.Storable-import           Graphics.ColorSpace.Internal-import           Graphics.ColorSpace.X-import           Prelude                      hiding (map)+import Control.Applicative+import Control.Monad+import Data.Bits+import Data.Typeable (Typeable)+import qualified Data.Vector.Generic as V+import qualified Data.Vector.Generic.Mutable as M+import qualified Data.Vector.Unboxed as U+import Data.Word (Word8)+import Foreign.Ptr+import Foreign.Storable+import Graphics.ColorSpace.Internal+import Graphics.ColorSpace.X+import Prelude hiding (map)   -- | Under the hood, binary pixels are represented as `Word8`, but can only take@@ -92,11 +92,11 @@   {-# INLINE (.|.) #-}   xor = liftA2 xor   {-# INLINE xor #-}-  complement = liftA complement+  complement = fmap complement   {-# INLINE complement #-}-  shift !b !n = liftA (`shift` n) b+  shift !b !n = fmap (`shift` n) b   {-# INLINE shift #-}-  rotate !b !n = liftA (`rotate` n) b+  rotate !b !n = fmap (`rotate` n) b   {-# INLINE rotate #-}   zeroBits = pure zeroBits   {-# INLINE zeroBits #-}@@ -236,12 +236,12 @@   alignment _ = alignment (undefined :: Word8)   {-# INLINE alignment #-}   peek !p = do-    q <- return $ castPtr p+    let !q = castPtr p     b <- peek q     return (Bit b)   {-# INLINE peek #-}   poke !p (Bit b) = do-    q <- return $ castPtr p+    let !q = castPtr p     poke q b   {-# INLINE poke #-} 
src/Graphics/ColorSpace/CMYK.hs view
@@ -1,10 +1,10 @@-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE DeriveDataTypeable    #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeFamilies          #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.ColorSpace.CMYK -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -17,12 +17,12 @@   CMYK(..), CMYKA(..), Pixel(..)   ) where -import           Data.Foldable-import           Data.Typeable                (Typeable)-import           Foreign.Ptr-import           Foreign.Storable-import           Graphics.ColorSpace.Internal-import           Prelude                      hiding (map)+import Data.Foldable+import Data.Typeable (Typeable)+import Foreign.Ptr+import Foreign.Storable+import Graphics.ColorSpace.Internal+import Prelude hiding (map)  ------------ --- CMYK ---@@ -45,7 +45,7 @@ instance Elevator e => ColorSpace CMYK e where   type Components CMYK e = (e, e, e, e) -  fromComponents !(c, m, y, k) = PixelCMYK c m y k+  fromComponents (c, m, y, k) = PixelCMYK c m y k   {-# INLINE fromComponents #-}   toComponents (PixelCMYK c m y k) = (c, m, y, k)   {-# INLINE toComponents #-}@@ -133,7 +133,7 @@ instance Elevator e => ColorSpace CMYKA e where   type Components CMYKA e = (e, e, e, e, e) -  fromComponents !(c, m, y, k, a) = PixelCMYKA c m y k a+  fromComponents (c, m, y, k, a) = PixelCMYKA c m y k a   {-# INLINE fromComponents #-}   toComponents (PixelCMYKA c m y k a) = (c, m, y, k, a)   {-# INLINE toComponents #-}@@ -195,7 +195,7 @@   alignment _ = alignment (undefined :: e)   {-# INLINE alignment #-}   peek !p = do-    q <- return $ castPtr p+    let !q = castPtr p     c <- peek q     m <- peekElemOff q 1     y <- peekElemOff q 2@@ -204,7 +204,7 @@     return (PixelCMYKA c m y k a)   {-# INLINE peek #-}   poke !p (PixelCMYKA c m y k a) = do-    q <- return $ castPtr p+    let !q = castPtr p     poke q c     pokeElemOff q 1 m     pokeElemOff q 2 y
src/Graphics/ColorSpace/Complex.hs view
@@ -1,5 +1,5 @@-{-# LANGUAGE BangPatterns     #-}-{-# LANGUAGE CPP              #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} #if __GLASGOW_HASKELL__ >= 800   {-# OPTIONS_GHC -Wno-redundant-constraints #-}@@ -21,10 +21,10 @@   conjugate   ) where -import           Control.Applicative-import           Data.Complex                 (Complex (..))-import qualified Data.Complex                 as C hiding (Complex (..))-import           Graphics.ColorSpace.Internal+import Control.Applicative+import Data.Complex (Complex(..))+import qualified Data.Complex as C hiding (Complex(..))+import Graphics.ColorSpace.Internal   @@ -40,12 +40,12 @@  -- | Extracts the real part of a complex pixel. realPart :: (ColorSpace cs e, RealFloat e) => Pixel cs (Complex e) -> Pixel cs e-realPart = liftA C.realPart+realPart = fmap C.realPart {-# INLINE realPart #-}  -- | Extracts the imaginary part of a complex pixel. imagPart :: (ColorSpace cs e, RealFloat e) => Pixel cs (Complex e) -> Pixel cs e-imagPart = liftA C.imagPart+imagPart = fmap C.imagPart {-# INLINE imagPart #-}  -- | Form a complex pixel from polar components of magnitude and phase.@@ -56,7 +56,7 @@  -- | @'cis' t@ is a complex pixel with magnitude 1 and phase t (modulo @2*'pi'@). cis :: (ColorSpace cs e, RealFloat e) => Pixel cs e -> Pixel cs (Complex e)-cis = liftA C.cis+cis = fmap C.cis {-# INLINE cis #-}  -- | The function @'polar'@ takes a complex pixel and returns a (magnitude, phase)@@ -68,18 +68,18 @@  -- | The nonnegative magnitude of a complex pixel. magnitude :: (ColorSpace cs e, RealFloat e) => Pixel cs (Complex e) -> Pixel cs e-magnitude = liftA C.magnitude+magnitude = fmap C.magnitude {-# INLINE magnitude #-}  -- | The phase of a complex pixel, in the range @(-'pi', 'pi']@. If the -- magnitude is zero, then so is the phase. phase :: (ColorSpace cs e, RealFloat e) => Pixel cs (Complex e) -> Pixel cs e-phase = liftA C.phase+phase = fmap C.phase {-# INLINE phase #-}  -- | The conjugate of a complex pixel. conjugate :: (ColorSpace cs e, RealFloat e) => Pixel cs (Complex e) -> Pixel cs (Complex e)-conjugate = liftA C.conjugate+conjugate = fmap C.conjugate {-# INLINE conjugate #-}  
src/Graphics/ColorSpace/Elevator.hs view
@@ -1,5 +1,5 @@-{-# LANGUAGE BangPatterns        #-}-{-# LANGUAGE CPP                 #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE ScopedTypeVariables #-} #if __GLASGOW_HASKELL__ >= 800   {-# OPTIONS_GHC -Wno-redundant-constraints #-}@@ -17,13 +17,13 @@   , clamp01   ) where -import qualified Data.Complex         as C-import           Data.Int-import           Data.Typeable-import           Data.Vector.Storable (Storable)-import           Data.Vector.Unboxed  (Unbox)-import           Data.Word-import           GHC.Float+import qualified Data.Complex as C+import Data.Int+import Data.Typeable+import Data.Vector.Storable (Storable)+import Data.Vector.Unboxed (Unbox)+import Data.Word+import GHC.Float   -- | A class with a set of convenient functions that allow for changing precision of
src/Graphics/ColorSpace/HSI.hs view
@@ -1,10 +1,10 @@-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE DeriveDataTypeable    #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeFamilies          #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.ColorSpace.HSI -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -17,12 +17,12 @@   HSI(..), HSIA(..), Pixel(..)   ) where -import           Data.Foldable-import           Data.Typeable                (Typeable)-import           Foreign.Ptr-import           Foreign.Storable-import           Graphics.ColorSpace.Internal-import           Prelude                      hiding (map)+import Data.Foldable+import Data.Typeable (Typeable)+import Foreign.Ptr+import Foreign.Storable+import Graphics.ColorSpace.Internal+import Prelude hiding (map)  ----------- --- HSI ---@@ -46,7 +46,7 @@    toComponents (PixelHSI h s i) = (h, s, i)   {-# INLINE toComponents #-}-  fromComponents !(h, s, i) = PixelHSI h s i+  fromComponents (h, s, i) = PixelHSI h s i   {-# INLINE fromComponents #-}   getPxC (PixelHSI h _ _) HueHSI = h   getPxC (PixelHSI _ s _) SatHSI = s@@ -89,14 +89,14 @@   alignment _ = alignment (undefined :: e)   {-# INLINE alignment #-}   peek !p = do-    q <- return $ castPtr p+    let !q = castPtr p     r <- peek q     g <- peekElemOff q 1     b <- peekElemOff q 2     return (PixelHSI r g b)   {-# INLINE peek #-}   poke !p (PixelHSI r g b) = do-    q <- return $ castPtr p+    let !q =  castPtr p     poke q r     pokeElemOff q 1 g     pokeElemOff q 2 b@@ -126,7 +126,7 @@    toComponents (PixelHSIA h s i a) = (h, s, i, a)   {-# INLINE toComponents #-}-  fromComponents !(h, s, i, a) = PixelHSIA h s i a+  fromComponents (h, s, i, a) = PixelHSIA h s i a   {-# INLINE fromComponents #-}   getPxC (PixelHSIA h _ _ _) HueHSIA   = h   getPxC (PixelHSIA _ s _ _) SatHSIA   = s@@ -180,7 +180,7 @@   alignment _ = alignment (undefined :: e)   {-# INLINE alignment #-}   peek !p = do-    q <- return $ castPtr p+    let !q = castPtr p     h <- peek q     s <- peekElemOff q 1     i <- peekElemOff q 2@@ -188,7 +188,7 @@     return (PixelHSIA h s i a)   {-# INLINE peek #-}   poke !p (PixelHSIA h s i a) = do-    q <- return $ castPtr p+    let !q = castPtr p     poke q h     pokeElemOff q 1 s     pokeElemOff q 2 i
src/Graphics/ColorSpace/Internal.hs view
@@ -1,8 +1,7 @@-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE CPP                   #-}-{-# LANGUAGE FlexibleContexts      #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies          #-}+{-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.ColorSpace.Internal -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -18,17 +17,17 @@   , module Graphics.ColorSpace.Elevator   ) where -import           Control.Applicative-import           Control.DeepSeq              (NFData (rnf), deepseq)-import           Control.Monad                (liftM)-import           Data.Default-import           Data.Foldable-import           Data.Typeable-import qualified Data.Vector.Generic          as V-import qualified Data.Vector.Generic.Mutable  as VM-import qualified Data.Vector.Storable         as VS-import qualified Data.Vector.Unboxed          as VU-import           Graphics.ColorSpace.Elevator+import Control.Applicative+import Control.DeepSeq (NFData(rnf), deepseq)+import Control.Monad (liftM)+import Data.Default+import Data.Foldable+import Data.Typeable+import qualified Data.Vector.Generic as V+import qualified Data.Vector.Generic.Mutable as VM+import qualified Data.Vector.Storable as VS+import qualified Data.Vector.Unboxed as VU+import Graphics.ColorSpace.Elevator   -- | A Pixel family with a color space and a precision of elements.@@ -130,9 +129,9 @@   {-# INLINE (-) #-}   (*)         = liftA2 (*)   {-# INLINE (*) #-}-  abs         = liftA abs+  abs         = fmap abs   {-# INLINE abs #-}-  signum      = liftA signum+  signum      = fmap signum   {-# INLINE signum #-}   fromInteger = promote . fromInteger   {-# INLINE fromInteger #-}@@ -141,7 +140,7 @@ instance (ColorSpace cs e, Fractional e) => Fractional (Pixel cs e) where   (/)          = liftA2 (/)   {-# INLINE (/) #-}-  recip        = liftA recip+  recip        = fmap recip   {-# INLINE recip #-}   fromRational = promote . fromRational   {-# INLINE fromRational #-}@@ -150,29 +149,29 @@ instance (ColorSpace cs e, Floating e) => Floating (Pixel cs e) where   pi      = promote pi   {-# INLINE pi #-}-  exp     = liftA exp+  exp     = fmap exp   {-# INLINE exp #-}-  log     = liftA log+  log     = fmap log   {-# INLINE log #-}-  sin     = liftA sin+  sin     = fmap sin   {-# INLINE sin #-}-  cos     = liftA cos+  cos     = fmap cos   {-# INLINE cos #-}-  asin    = liftA asin+  asin    = fmap asin   {-# INLINE asin #-}-  atan    = liftA atan+  atan    = fmap atan   {-# INLINE atan #-}-  acos    = liftA acos+  acos    = fmap acos   {-# INLINE acos #-}-  sinh    = liftA sinh+  sinh    = fmap sinh   {-# INLINE sinh #-}-  cosh    = liftA cosh+  cosh    = fmap cosh   {-# INLINE cosh #-}-  asinh   = liftA asinh+  asinh   = fmap asinh   {-# INLINE asinh #-}-  atanh   = liftA atanh+  atanh   = fmap atanh   {-# INLINE atanh #-}-  acosh   = liftA acosh+  acosh   = fmap acosh   {-# INLINE acosh #-}  instance (ColorSpace cs e, Bounded e) => Bounded (Pixel cs e) where
src/Graphics/ColorSpace/RGB.hs view
@@ -1,10 +1,10 @@-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE DeriveDataTypeable    #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeFamilies          #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.ColorSpace.RGB -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -17,11 +17,11 @@   RGB(..), RGBA(..), Pixel(..)   ) where -import           Data.Typeable                (Typeable)-import           Foreign.Ptr-import           Foreign.Storable-import           Graphics.ColorSpace.Internal-import           Prelude                      hiding (map)+import Data.Typeable (Typeable)+import Foreign.Ptr+import Foreign.Storable+import Graphics.ColorSpace.Internal+import Prelude hiding (map)  ----------- --- RGB ---@@ -44,7 +44,7 @@    toComponents (PixelRGB r g b) = (r, g, b)   {-# INLINE toComponents #-}-  fromComponents !(r, g, b) = PixelRGB r g b+  fromComponents (r, g, b) = PixelRGB r g b   {-# INLINE fromComponents #-}   getPxC (PixelRGB r _ _) RedRGB   = r   getPxC (PixelRGB _ g _) GreenRGB = g@@ -117,7 +117,7 @@    toComponents (PixelRGBA r g b a) = (r, g, b, a)   {-# INLINE toComponents #-}-  fromComponents !(r, g, b, a) = PixelRGBA r g b a+  fromComponents (r, g, b, a) = PixelRGBA r g b a   {-# INLINE fromComponents #-}   getPxC (PixelRGBA r _ _ _) RedRGBA   = r   getPxC (PixelRGBA _ g _ _) GreenRGBA = g@@ -167,14 +167,14 @@   sizeOf _ = 4 * sizeOf (undefined :: e)   alignment _ = alignment (undefined :: e)   peek p = do-    q <- return $ castPtr p+    let q = castPtr p     r <- peek q     g <- peekElemOff q 1     b <- peekElemOff q 2     a <- peekElemOff q 3     return (PixelRGBA r g b a)   poke p (PixelRGBA r g b a) = do-    q <- return $ castPtr p+    let q = castPtr p     poke q r     pokeElemOff q 1 g     pokeElemOff q 2 b
src/Graphics/ColorSpace/X.hs view
@@ -1,10 +1,10 @@-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE DeriveDataTypeable    #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeFamilies          #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.ColorSpace.X -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -20,12 +20,12 @@   , fromPixelsX   ) where -import           Data.Foldable-import           Data.Typeable                (Typeable)-import           Foreign.Ptr-import           Foreign.Storable-import           Graphics.ColorSpace.Internal-import           Prelude                      as P+import Data.Foldable+import Data.Typeable (Typeable)+import Foreign.Ptr+import Foreign.Storable+import Graphics.ColorSpace.Internal+import Prelude as P  -- ^ This is a single channel colorspace, that is designed to separate Gray -- level values from other types of colorspace, hence it is not convertible to@@ -51,7 +51,7 @@   {-# INLINE toComponents #-}   getPxC (PixelX g) X = g   {-# INLINE getPxC #-}-  setPxC (PixelX _) X g = PixelX g+  setPxC (PixelX _) X = PixelX   {-# INLINE setPxC #-}   mapPxC f (PixelX g) = PixelX (f X g)   {-# INLINE mapPxC #-}@@ -92,12 +92,12 @@   alignment _ = alignment (undefined :: e)   {-# INLINE alignment #-}   peek !p = do-    q <- return $ castPtr p+    let q = castPtr p     g <- peek q     return (PixelX g)   {-# INLINE peek #-}   poke !p (PixelX g) = do-    q <- return $ castPtr p+    let q = castPtr p     poke q g   {-# INLINE poke #-} 
src/Graphics/ColorSpace/Y.hs view
@@ -1,10 +1,10 @@-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE DeriveDataTypeable    #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeFamilies          #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.ColorSpace.Y -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -17,12 +17,12 @@   Y(..), YA(..), Pixel(..)   ) where -import           Data.Foldable-import           Data.Typeable                (Typeable)-import           Foreign.Ptr-import           Foreign.Storable-import           Graphics.ColorSpace.Internal-import           Prelude                      hiding (map)+import Data.Foldable+import Data.Typeable (Typeable)+import Foreign.Ptr+import Foreign.Storable+import Graphics.ColorSpace.Internal+import Prelude hiding (map)  --------- --- Y ---@@ -45,7 +45,7 @@   {-# INLINE toComponents #-}   getPxC (PixelY y) LumaY = y   {-# INLINE getPxC #-}-  setPxC _ LumaY y = PixelY y+  setPxC _ LumaY = PixelY   {-# INLINE setPxC #-}   mapPxC f (PixelY y) = PixelY (f LumaY y)   {-# INLINE mapPxC #-}@@ -166,13 +166,13 @@   alignment _ = alignment (undefined :: e)   {-# INLINE alignment #-}   peek !p = do-    q <- return $ castPtr p+    let q = castPtr p     y <- peekElemOff q 0     a <- peekElemOff q 1     return (PixelYA y a)   {-# INLINE peek #-}   poke !p (PixelYA y a) = do-    q <- return $ castPtr p+    let q = castPtr p     pokeElemOff q 0 y     pokeElemOff q 1 a   {-# INLINE poke #-}
src/Graphics/ColorSpace/YCbCr.hs view
@@ -1,10 +1,10 @@-{-# LANGUAGE BangPatterns          #-}-{-# LANGUAGE DeriveDataTypeable    #-}-{-# LANGUAGE FlexibleContexts      #-}-{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeFamilies          #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.ColorSpace.YCbCr -- Copyright   : (c) Alexey Kuleshevich 2018-2019@@ -17,12 +17,12 @@   YCbCr(..), YCbCrA(..), Pixel(..)   ) where -import           Data.Foldable-import           Data.Typeable            (Typeable)-import           Foreign.Ptr-import           Foreign.Storable-import           Graphics.ColorSpace.Internal-import           Prelude                  hiding (map)+import Data.Foldable+import Data.Typeable (Typeable)+import Foreign.Ptr+import Foreign.Storable+import Graphics.ColorSpace.Internal+import Prelude hiding (map)  ------------- --- YCbCr ---@@ -45,7 +45,7 @@ instance Elevator e => ColorSpace YCbCr e where   type Components YCbCr e = (e, e, e) -  fromComponents !(y, b, r) = PixelYCbCr y b r+  fromComponents (y, b, r) = PixelYCbCr y b r   {-# INLINE fromComponents #-}   toComponents (PixelYCbCr y b r) = (y, b, r)   {-# INLINE toComponents #-}@@ -88,14 +88,14 @@   alignment _ = alignment (undefined :: e)   {-# INLINE alignment #-}   peek !p = do-    q <- return $ castPtr p+    let q = castPtr p     y <- peek q     b <- peekElemOff q 1     r <- peekElemOff q 2     return (PixelYCbCr y b r)   {-# INLINE poke #-}   poke !p (PixelYCbCr y b r) = do-    q <- return $ castPtr p+    let q = castPtr p     pokeElemOff q 0 y     pokeElemOff q 1 b     pokeElemOff q 2 r@@ -124,7 +124,7 @@ instance Elevator e => ColorSpace YCbCrA e where   type Components YCbCrA e = (e, e, e, e) -  fromComponents !(y, b, r, a) = PixelYCbCrA y b r a+  fromComponents (y, b, r, a) = PixelYCbCrA y b r a   {-# INLINE fromComponents #-}   toComponents (PixelYCbCrA y b r a) = (y, b, r, a)   {-# INLINE toComponents #-}@@ -181,7 +181,7 @@   alignment _ = alignment (undefined :: e)   {-# INLINE alignment #-}   peek !p = do-    q <- return $ castPtr p+    let q = castPtr p     y <- peekElemOff q 0     b <- peekElemOff q 1     r <- peekElemOff q 2@@ -189,7 +189,7 @@     return (PixelYCbCrA y b r a)   {-# INLINE peek #-}   poke !p (PixelYCbCrA y b r a) = do-    q <- return $ castPtr p+    let q = castPtr p     poke q y     pokeElemOff q 1 b     pokeElemOff q 2 r