{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-} -- | -- Module : Graphics.Image.Interface.Repa -- Copyright : (c) Alexey Kuleshevich 2016 -- License : BSD3 -- Maintainer : Alexey Kuleshevich -- Stability : experimental -- Portability : non-portable -- module Graphics.Image.Interface.Repa ( -- * Conversion fromRepaArrayS, fromRepaArrayP, toRepaArray, -- * Representation RSU(..), RPU(..), RSS(..), RPS(..) ) where import Data.Array.Repa.Index import qualified Data.Array.Repa as R import qualified Data.Vector.Generic as VG import Graphics.Image.Interface import Graphics.Image.Interface.Repa.Generic import Graphics.Image.Interface.Repa.Storable import Graphics.Image.Interface.Repa.Unboxed -- | Create a sequential unboxed image from a 2D Repa delayed array. fromRepaArrayS :: R.Source r (Pixel cs e) => R.Array r DIM2 (Pixel cs e) -> Image RSU cs e fromRepaArrayS = SUImage . fromRepaArrayR -- | Create a parallel unboxed image from a 2D Repa delayed array. fromRepaArrayP :: R.Source r (Pixel cs e) => R.Array r DIM2 (Pixel cs e) -> Image RPU cs e fromRepaArrayP = PUImage . fromRepaArrayR -- | Convert into Repa Unboxed array from an image. toRepaArray :: Array arr cs e => Image arr cs e -> R.Array R.U DIM2 (Pixel cs e) toRepaArray img = R.fromUnboxed (ix2sh (dims img)) $ VG.convert $ toVector img