hip-1.5.0.0: Haskell Image Processing (HIP) Library.

Copyright(c) Alexey Kuleshevich 2017
LicenseBSD3
MaintainerAlexey Kuleshevich <lehins@yandex.ru>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Graphics.Image.Interface.Vector

Contents

Description

 

Synopsis

Representation

data VU Source #

Unboxed Vector representation.

Constructors

VU 

Instances

Show VU Source # 

Methods

showsPrec :: Int -> VU -> ShowS #

show :: VU -> String #

showList :: [VU] -> ShowS #

Exchangable VU RPU Source #

O(1) - Changes to Repa representation.

Methods

exchange :: (Array VU cs e, Array RPU cs e) => RPU -> Image VU cs e -> Image RPU cs e Source #

Exchangable VU RSU Source #

O(1) - Changes to Repa representation.

Methods

exchange :: (Array VU cs e, Array RSU cs e) => RSU -> Image VU cs e -> Image RSU cs e Source #

Exchangable RPU VU Source #

Changes to Vector representation.

Methods

exchange :: (Array RPU cs e, Array VU cs e) => VU -> Image RPU cs e -> Image VU cs e Source #

Exchangable RSU VU Source #

Changes to Vector representation.

Methods

exchange :: (Array RSU cs e, Array VU cs e) => VU -> Image RSU cs e -> Image VU cs e Source #

BaseArray VU cs e => MArray VU cs e Source # 

Associated Types

data MImage s VU cs e :: * Source #

Methods

unsafeIndex :: Image VU cs e -> (Int, Int) -> Pixel cs e Source #

index :: Image VU cs e -> (Int, Int) -> Pixel cs e Source #

deepSeqImage :: Image VU cs e -> a -> a Source #

foldl :: (a -> Pixel cs e -> a) -> a -> Image VU cs e -> a Source #

foldr :: (Pixel cs e -> a -> a) -> a -> Image VU cs e -> a Source #

makeImageM :: (Functor m, Monad m) => (Int, Int) -> ((Int, Int) -> m (Pixel cs e)) -> m (Image VU cs e) Source #

mapM :: (MArray VU cs' e', Functor m, Monad m) => (Pixel cs' e' -> m (Pixel cs e)) -> Image VU cs' e' -> m (Image VU cs e) Source #

mapM_ :: (Functor m, Monad m) => (Pixel cs e -> m b) -> Image VU cs e -> m () Source #

foldM :: (Functor m, Monad m) => (a -> Pixel cs e -> m a) -> a -> Image VU cs e -> m a Source #

foldM_ :: (Functor m, Monad m) => (a -> Pixel cs e -> m a) -> a -> Image VU cs e -> m () Source #

mdims :: MImage s VU cs e -> (Int, Int) Source #

thaw :: (Functor m, PrimMonad m) => Image VU cs e -> m (MImage (PrimState m) VU cs e) Source #

freeze :: (Functor m, PrimMonad m) => MImage (PrimState m) VU cs e -> m (Image VU cs e) Source #

new :: (Functor m, PrimMonad m) => (Int, Int) -> m (MImage (PrimState m) VU cs e) Source #

read :: (Functor m, PrimMonad m) => MImage (PrimState m) VU cs e -> (Int, Int) -> m (Pixel cs e) Source #

write :: (Functor m, PrimMonad m) => MImage (PrimState m) VU cs e -> (Int, Int) -> Pixel cs e -> m () Source #

swap :: (Functor m, PrimMonad m) => MImage (PrimState m) VU cs e -> (Int, Int) -> (Int, Int) -> m () Source #

(MArray VU cs e, BaseArray VU cs e) => Array VU cs e Source # 

Associated Types

type Manifest VU :: * Source #

Methods

makeImage :: (Int, Int) -> ((Int, Int) -> Pixel cs e) -> Image VU cs e Source #

makeImageWindowed :: (Int, Int) -> ((Int, Int), (Int, Int)) -> ((Int, Int) -> Pixel cs e) -> ((Int, Int) -> Pixel cs e) -> Image VU cs e Source #

scalar :: Pixel cs e -> Image VU cs e Source #

index00 :: Image VU cs e -> Pixel cs e Source #

map :: Array VU cs' e' => (Pixel cs' e' -> Pixel cs e) -> Image VU cs' e' -> Image VU cs e Source #

imap :: Array VU cs' e' => ((Int, Int) -> Pixel cs' e' -> Pixel cs e) -> Image VU cs' e' -> Image VU cs e Source #

zipWith :: (Array VU cs1 e1, Array VU cs2 e2) => (Pixel cs1 e1 -> Pixel cs2 e2 -> Pixel cs e) -> Image VU cs1 e1 -> Image VU cs2 e2 -> Image VU cs e Source #

izipWith :: (Array VU cs1 e1, Array VU cs2 e2) => ((Int, Int) -> Pixel cs1 e1 -> Pixel cs2 e2 -> Pixel cs e) -> Image VU cs1 e1 -> Image VU cs2 e2 -> Image VU cs e Source #

traverse :: Array VU cs' e' => Image VU cs' e' -> ((Int, Int) -> (Int, Int)) -> (((Int, Int) -> Pixel cs' e') -> (Int, Int) -> Pixel cs e) -> Image VU cs e Source #

traverse2 :: (Array VU cs1 e1, Array VU cs2 e2) => Image VU cs1 e1 -> Image VU cs2 e2 -> ((Int, Int) -> (Int, Int) -> (Int, Int)) -> (((Int, Int) -> Pixel cs1 e1) -> ((Int, Int) -> Pixel cs2 e2) -> (Int, Int) -> Pixel cs e) -> Image VU cs e Source #

transpose :: Image VU cs e -> Image VU cs e Source #

backpermute :: (Int, Int) -> ((Int, Int) -> (Int, Int)) -> Image VU cs e -> Image VU cs e Source #

fromLists :: [[Pixel cs e]] -> Image VU cs e Source #

(|*|) :: Image VU cs e -> Image VU cs e -> Image VU cs e Source #

fold :: (Pixel cs e -> Pixel cs e -> Pixel cs e) -> Pixel cs e -> Image VU cs e -> Pixel cs e Source #

foldIx :: (Pixel cs e -> (Int, Int) -> Pixel cs e -> Pixel cs e) -> Pixel cs e -> Image VU cs e -> Pixel cs e Source #

eq :: Image VU cs e -> Image VU cs e -> Bool Source #

compute :: Image VU cs e -> Image VU cs e Source #

toManifest :: Image VU cs e -> Image (Manifest VU) cs e Source #

SuperClass VU cs e => BaseArray VU cs e Source # 

Associated Types

type SuperClass VU cs e :: Constraint Source #

data Image VU cs e :: * Source #

Methods

dims :: Image VU cs e -> (Int, Int) Source #

type Manifest VU Source # 
type Manifest VU = VU
data Image VU Source # 
data Image VU = VUImage !(Image (V U) cs e)
data MImage s VU Source # 
data MImage s VU = MVUImage (MImage s (V U) cs e)
type SuperClass VU cs e Source # 
type SuperClass VU cs e = (ColorSpace cs e, Num (Pixel cs e), Unbox (Components cs e))

data VS Source #

Storable Vector representation.

Constructors

VS 

Instances

Show VS Source # 

Methods

showsPrec :: Int -> VS -> ShowS #

show :: VS -> String #

showList :: [VS] -> ShowS #

Exchangable VS RPS Source #

O(1) - Changes to Repa representation.

Methods

exchange :: (Array VS cs e, Array RPS cs e) => RPS -> Image VS cs e -> Image RPS cs e Source #

Exchangable VS RSS Source #

O(1) - Changes to Repa representation.

Methods

exchange :: (Array VS cs e, Array RSS cs e) => RSS -> Image VS cs e -> Image RSS cs e Source #

Exchangable RPS VS Source #

Changes to Vector representation.

Methods

exchange :: (Array RPS cs e, Array VS cs e) => VS -> Image RPS cs e -> Image VS cs e Source #

Exchangable RSS VS Source #

Changes to Vector representation.

Methods

exchange :: (Array RSS cs e, Array VS cs e) => VS -> Image RSS cs e -> Image VS cs e Source #

BaseArray VS cs e => MArray VS cs e Source # 

Associated Types

data MImage s VS cs e :: * Source #

Methods

unsafeIndex :: Image VS cs e -> (Int, Int) -> Pixel cs e Source #

index :: Image VS cs e -> (Int, Int) -> Pixel cs e Source #

deepSeqImage :: Image VS cs e -> a -> a Source #

foldl :: (a -> Pixel cs e -> a) -> a -> Image VS cs e -> a Source #

foldr :: (Pixel cs e -> a -> a) -> a -> Image VS cs e -> a Source #

makeImageM :: (Functor m, Monad m) => (Int, Int) -> ((Int, Int) -> m (Pixel cs e)) -> m (Image VS cs e) Source #

mapM :: (MArray VS cs' e', Functor m, Monad m) => (Pixel cs' e' -> m (Pixel cs e)) -> Image VS cs' e' -> m (Image VS cs e) Source #

mapM_ :: (Functor m, Monad m) => (Pixel cs e -> m b) -> Image VS cs e -> m () Source #

foldM :: (Functor m, Monad m) => (a -> Pixel cs e -> m a) -> a -> Image VS cs e -> m a Source #

foldM_ :: (Functor m, Monad m) => (a -> Pixel cs e -> m a) -> a -> Image VS cs e -> m () Source #

mdims :: MImage s VS cs e -> (Int, Int) Source #

thaw :: (Functor m, PrimMonad m) => Image VS cs e -> m (MImage (PrimState m) VS cs e) Source #

freeze :: (Functor m, PrimMonad m) => MImage (PrimState m) VS cs e -> m (Image VS cs e) Source #

new :: (Functor m, PrimMonad m) => (Int, Int) -> m (MImage (PrimState m) VS cs e) Source #

read :: (Functor m, PrimMonad m) => MImage (PrimState m) VS cs e -> (Int, Int) -> m (Pixel cs e) Source #

write :: (Functor m, PrimMonad m) => MImage (PrimState m) VS cs e -> (Int, Int) -> Pixel cs e -> m () Source #

swap :: (Functor m, PrimMonad m) => MImage (PrimState m) VS cs e -> (Int, Int) -> (Int, Int) -> m () Source #

(MArray VS cs e, BaseArray VS cs e) => Array VS cs e Source # 

Associated Types

type Manifest VS :: * Source #

Methods

makeImage :: (Int, Int) -> ((Int, Int) -> Pixel cs e) -> Image VS cs e Source #

makeImageWindowed :: (Int, Int) -> ((Int, Int), (Int, Int)) -> ((Int, Int) -> Pixel cs e) -> ((Int, Int) -> Pixel cs e) -> Image VS cs e Source #

scalar :: Pixel cs e -> Image VS cs e Source #

index00 :: Image VS cs e -> Pixel cs e Source #

map :: Array VS cs' e' => (Pixel cs' e' -> Pixel cs e) -> Image VS cs' e' -> Image VS cs e Source #

imap :: Array VS cs' e' => ((Int, Int) -> Pixel cs' e' -> Pixel cs e) -> Image VS cs' e' -> Image VS cs e Source #

zipWith :: (Array VS cs1 e1, Array VS cs2 e2) => (Pixel cs1 e1 -> Pixel cs2 e2 -> Pixel cs e) -> Image VS cs1 e1 -> Image VS cs2 e2 -> Image VS cs e Source #

izipWith :: (Array VS cs1 e1, Array VS cs2 e2) => ((Int, Int) -> Pixel cs1 e1 -> Pixel cs2 e2 -> Pixel cs e) -> Image VS cs1 e1 -> Image VS cs2 e2 -> Image VS cs e Source #

traverse :: Array VS cs' e' => Image VS cs' e' -> ((Int, Int) -> (Int, Int)) -> (((Int, Int) -> Pixel cs' e') -> (Int, Int) -> Pixel cs e) -> Image VS cs e Source #

traverse2 :: (Array VS cs1 e1, Array VS cs2 e2) => Image VS cs1 e1 -> Image VS cs2 e2 -> ((Int, Int) -> (Int, Int) -> (Int, Int)) -> (((Int, Int) -> Pixel cs1 e1) -> ((Int, Int) -> Pixel cs2 e2) -> (Int, Int) -> Pixel cs e) -> Image VS cs e Source #

transpose :: Image VS cs e -> Image VS cs e Source #

backpermute :: (Int, Int) -> ((Int, Int) -> (Int, Int)) -> Image VS cs e -> Image VS cs e Source #

fromLists :: [[Pixel cs e]] -> Image VS cs e Source #

(|*|) :: Image VS cs e -> Image VS cs e -> Image VS cs e Source #

fold :: (Pixel cs e -> Pixel cs e -> Pixel cs e) -> Pixel cs e -> Image VS cs e -> Pixel cs e Source #

foldIx :: (Pixel cs e -> (Int, Int) -> Pixel cs e -> Pixel cs e) -> Pixel cs e -> Image VS cs e -> Pixel cs e Source #

eq :: Image VS cs e -> Image VS cs e -> Bool Source #

compute :: Image VS cs e -> Image VS cs e Source #

toManifest :: Image VS cs e -> Image (Manifest VS) cs e Source #

SuperClass VS cs e => BaseArray VS cs e Source # 

Associated Types

type SuperClass VS cs e :: Constraint Source #

data Image VS cs e :: * Source #

Methods

dims :: Image VS cs e -> (Int, Int) Source #

Writable [(GifDelay, Image VS RGB Double)] [GIF] Source # 
Writable [(GifDelay, Image VS RGB Word8)] [GIF] Source # 
Readable [Image VS Y Word8] [PGM] Source # 
Readable [Image VS Y Word16] [PGM] Source # 
Readable [Image VS RGBA Word8] [GIF] Source # 
Readable [Image VS RGB Word8] [GIF] Source # 
Readable [Image VS RGB Word8] [PPM] Source # 
Readable [Image VS RGB Word16] [PPM] Source # 
Readable [Image VS Binary Bit] [PBM] Source # 
Writable (Image VS YCbCr Double) TIF Source # 
Writable (Image VS YCbCr Word8) TIF Source # 
Writable (Image VS YCbCr Word8) JPG Source # 
Writable (Image VS YA Double) TIF Source # 
Writable (Image VS YA Double) TGA Source # 
Writable (Image VS YA Double) PNG Source # 
Writable (Image VS YA Double) JPG Source # 
Writable (Image VS YA Double) HDR Source # 
Writable (Image VS YA Double) GIF Source # 
Writable (Image VS YA Double) BMP Source # 
Writable (Image VS YA Word8) TIF Source # 
Writable (Image VS YA Word8) PNG Source # 
Writable (Image VS YA Word16) TIF Source # 
Writable (Image VS YA Word16) PNG Source # 
Writable (Image VS Y Double) TIF Source # 
Writable (Image VS Y Double) TGA Source # 
Writable (Image VS Y Double) PNG Source # 
Writable (Image VS Y Double) JPG Source # 
Writable (Image VS Y Double) HDR Source # 
Writable (Image VS Y Double) GIF Source # 
Writable (Image VS Y Double) BMP Source # 
Writable (Image VS Y Word8) TIF Source # 
Writable (Image VS Y Word8) TGA Source # 
Writable (Image VS Y Word8) PNG Source # 
Writable (Image VS Y Word8) JPG Source # 
Writable (Image VS Y Word8) BMP Source # 
Writable (Image VS Y Word16) TIF Source # 
Writable (Image VS Y Word16) PNG Source # 
Writable (Image VS RGBA Double) TIF Source # 
Writable (Image VS RGBA Double) TGA Source # 
Writable (Image VS RGBA Double) PNG Source # 
Writable (Image VS RGBA Double) JPG Source # 
Writable (Image VS RGBA Double) HDR Source # 
Writable (Image VS RGBA Double) GIF Source # 
Writable (Image VS RGBA Double) BMP Source # 
Writable (Image VS RGBA Word8) TIF Source # 
Writable (Image VS RGBA Word8) TGA Source # 
Writable (Image VS RGBA Word8) PNG Source # 
Writable (Image VS RGBA Word8) BMP Source # 
Writable (Image VS RGBA Word16) TIF Source # 
Writable (Image VS RGBA Word16) PNG Source # 
Writable (Image VS RGB Double) TIF Source # 
Writable (Image VS RGB Double) TGA Source # 
Writable (Image VS RGB Double) PNG Source # 
Writable (Image VS RGB Double) JPG Source # 
Writable (Image VS RGB Double) HDR Source # 
Writable (Image VS RGB Double) GIF Source # 
Writable (Image VS RGB Double) BMP Source # 
Writable (Image VS RGB Float) HDR Source # 
Writable (Image VS RGB Word8) TIF Source # 
Writable (Image VS RGB Word8) TGA Source # 
Writable (Image VS RGB Word8) PNG Source # 
Writable (Image VS RGB Word8) JPG Source # 
Writable (Image VS RGB Word8) GIF Source # 
Writable (Image VS RGB Word8) BMP Source # 
Writable (Image VS RGB Word16) TIF Source # 
Writable (Image VS RGB Word16) PNG Source # 
Writable (Image VS CMYK Double) TIF Source # 
Writable (Image VS CMYK Word8) TIF Source # 
Writable (Image VS CMYK Word8) JPG Source # 
Writable (Image VS CMYK Word16) TIF Source # 
Writable (Image VS Binary Bit) TIF Source # 
Writable (Image VS Binary Bit) TGA Source # 
Writable (Image VS Binary Bit) PNG Source # 
Writable (Image VS Binary Bit) BMP Source # 
Readable (Image VS YCbCr Word8) JPG Source # 
Readable (Image VS YA Word8) TIF Source # 
Readable (Image VS YA Word8) PNG Source # 
Readable (Image VS YA Word8) JPG Source # 
Readable (Image VS YA Word16) TIF Source # 
Readable (Image VS YA Word16) PNG Source # 
Readable (Image VS Y Word8) TIF Source # 
Readable (Image VS Y Word8) TGA Source # 
Readable (Image VS Y Word8) PNG Source # 
Readable (Image VS Y Word8) JPG Source # 
Readable (Image VS Y Word8) BMP Source # 
Readable (Image VS Y Word8) PGM Source # 
Readable (Image VS Y Word16) TIF Source # 
Readable (Image VS Y Word16) PNG Source # 
Readable (Image VS Y Word16) PGM Source # 
Readable (Image VS RGBA Word8) TIF Source # 
Readable (Image VS RGBA Word8) TGA Source # 
Readable (Image VS RGBA Word8) PNG Source # 
Readable (Image VS RGBA Word8) GIF Source # 
Readable (Image VS RGBA Word8) BMP Source # 
Readable (Image VS RGBA Word16) TIF Source # 
Readable (Image VS RGBA Word16) PNG Source # 
Readable (Image VS RGB Float) HDR Source # 
Readable (Image VS RGB Word8) TIF Source # 
Readable (Image VS RGB Word8) TGA Source # 
Readable (Image VS RGB Word8) PNG Source # 
Readable (Image VS RGB Word8) JPG Source # 
Readable (Image VS RGB Word8) GIF Source # 
Readable (Image VS RGB Word8) BMP Source # 
Readable (Image VS RGB Word8) PPM Source # 
Readable (Image VS RGB Word16) TIF Source # 
Readable (Image VS RGB Word16) PNG Source # 
Readable (Image VS RGB Word16) PPM Source # 
Readable (Image VS CMYK Word8) TIF Source # 
Readable (Image VS CMYK Word8) JPG Source # 
Readable (Image VS CMYK Word16) TIF Source # 
Readable (Image VS Binary Bit) TIF Source # 
Readable (Image VS Binary Bit) TGA Source # 
Readable (Image VS Binary Bit) PNG Source # 
Readable (Image VS Binary Bit) BMP Source # 
Readable (Image VS Binary Bit) PBM Source # 
type Manifest VS Source # 
type Manifest VS = VS
data Image VS Source # 
data Image VS = VSImage !(Image (V S) cs e)
data MImage s VS Source # 
data MImage s VS = MVSImage (MImage s (V S) cs e)
type SuperClass VS cs e Source # 
type SuperClass VS cs e = (ColorSpace cs e, Num (Pixel cs e), Storable (Pixel cs e))

Conversion

fromUnboxedVector :: Array VU cs e => (Int, Int) -> Vector (Pixel cs e) -> Image VU cs e Source #

Construct a two dimensional image with m rows and n columns from a flat Unboxed Vector of length k. It is a O(1) opeartion. Make sure that m * n = k.

>>> fromUnboxedVector (200, 300) $ generate 60000 (\i -> PixelY $ fromIntegral i / 60000)
<Image VectorUnboxed Luma: 200x300>

toUnboxedVector :: Array VU cs e => Image VU cs e -> Vector (Pixel cs e) Source #

Convert an image to a flattened Unboxed Vector. It is a O(1) opeartion.

>>> toUnboxedVector $ makeImage (3, 2) (\(i, j) -> PixelY $ fromIntegral (i+j))
fromList [<Luma:(0.0)>,<Luma:(1.0)>,<Luma:(1.0)>,<Luma:(2.0)>,<Luma:(2.0)>,<Luma:(3.0)>]

fromStorableVector :: Array VS cs e => (Int, Int) -> Vector (Pixel cs e) -> Image VS cs e Source #

Construct a two dimensional image with m rows and n columns from a flat Storable Vector of length k. It is a O(1) opeartion. Make sure that m * n = k.

>>> fromStorableVector (200, 300) $ generate 60000 (\i -> PixelY $ fromIntegral i / 60000)
<Image VectorStorable Luma: 200x300>

toStorableVector :: Array VS cs e => Image VS cs e -> Vector (Pixel cs e) Source #

Convert an image to a flattened Storable Vector. It is a O(1) opeartion.

>>> toStorableVector $ makeImage (3, 2) (\(i, j) -> PixelY $ fromIntegral (i+j))
fromList [<Luma:(0.0)>,<Luma:(1.0)>,<Luma:(1.0)>,<Luma:(2.0)>,<Luma:(2.0)>,<Luma:(3.0)>]

Linear index conversion

toIx Source #

Arguments

:: Int

n columns

-> Int

Flat vector index

-> (Int, Int)

(i, j) row, column index

Flat vector to 2D index conversion.

fromIx Source #

Arguments

:: Int

n columns

-> (Int, Int)

(i, j) row, column index

-> Int

Flat vector index

2D to a flat vector index conversion.

Note: There is an implicit assumption that j < n

Orphan instances

Exchangable VS VU Source # 

Methods

exchange :: (Array VS cs e, Array VU cs e) => VU -> Image VS cs e -> Image VU cs e Source #

Exchangable VU VS Source # 

Methods

exchange :: (Array VU cs e, Array VS cs e) => VS -> Image VU cs e -> Image VS cs e Source #