accelerate-io 0.15.0.0 → 0.15.1.0
raw patch · 5 files changed
+68/−77 lines, 5 filesdep ~acceleratedep ~base
Dependency ranges changed: accelerate, base
Files
- Data/Array/Accelerate/IO/BMP.hs +52/−35
- Data/Array/Accelerate/IO/ByteString.hs +2/−2
- Data/Array/Accelerate/IO/Ptr.hs +4/−4
- accelerate-io.cabal +10/−11
- include/accelerate.h +0/−25
Data/Array/Accelerate/IO/BMP.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE ViewPatterns #-} -- | -- Module : Data.Array.Accelerate.IO.BMP -- Copyright : [2012..2014] Trevor L. McDonell@@ -67,41 +69,61 @@ -- type RGBA32 = Word32 --- | Unpack a 'RGBA32' value into a tuple of (Red, Green, Blue, Alpha) values.+-- | Unpack a (little-endian) 'RGBA32' value into a tuple of (Red, Green, Blue,+-- Alpha) values. ---unpackRGBA32 :: Exp RGBA32 -> Exp (Word8, Word8, Word8, Word8)-unpackRGBA32 rgba =- let r = A.fromIntegral $ rgba .&. 0xFF- g = A.fromIntegral $ (rgba `div` 0x100) .&. 0xFF- b = A.fromIntegral $ (rgba `div` 0x10000) .&. 0xFF- a = A.fromIntegral $ (rgba `div` 0x1000000) .&. 0xFF+unpackRGBA32, unpackRGBA32le, unpackRGBA32be+ :: Exp RGBA32+ -> Exp (Word8, Word8, Word8, Word8)+unpackRGBA32 = unpackRGBA32le++unpackRGBA32le rgba =+ let a = A.fromIntegral (rgba `A.shiftR` 24)+ b = A.fromIntegral (rgba `A.shiftR` 16)+ g = A.fromIntegral (rgba `A.shiftR` 8)+ r = A.fromIntegral rgba in lift (r, g, b, a) +unpackRGBA32be rgba =+ let r = A.fromIntegral (rgba `A.shiftR` 24)+ g = A.fromIntegral (rgba `A.shiftR` 16)+ b = A.fromIntegral (rgba `A.shiftR` 8)+ a = A.fromIntegral rgba+ in+ lift (r, g, b, a) --- | Promote a tuple of (Red, Green, Blue, Alpha) values into a packed 'RGBA32'--- value.++-- | Promote a tuple of (Red, Green, Blue, Alpha) values into a packed+-- (little-endian) 'RGBA32' value. ---packRGBA32 :: Exp (Word8, Word8, Word8, Word8) -> Exp RGBA32-packRGBA32 rgba =- let (r', g', b', a') = unlift rgba- r = A.fromIntegral r'- g = (A.fromIntegral g') * 0x100- b = (A.fromIntegral b') * 0x10000- a = (A.fromIntegral a') * 0x1000000- in- r + g + b + a+packRGBA32, packRGBA32le, packRGBA32be+ :: Exp (Word8, Word8, Word8, Word8)+ -> Exp RGBA32+packRGBA32 = packRGBA32le +packRGBA32le (unlift -> (r, g, b, a))+ = A.fromIntegral a `A.shiftL` 24+ .|. A.fromIntegral b `A.shiftL` 16+ .|. A.fromIntegral g `A.shiftL` 8+ .|. A.fromIntegral r +packRGBA32be (unlift -> (r, g, b, a))+ = A.fromIntegral r `A.shiftL` 24+ .|. A.fromIntegral g `A.shiftL` 16+ .|. A.fromIntegral b `A.shiftL` 8+ .|. A.fromIntegral a++ -- | Convert an RGBA colour to its luminance value in the range [0..1]. -- luminanceOfRGBA32 :: (Elt a, IsFloating a) => Exp RGBA32 -> Exp a-luminanceOfRGBA32 rgba =- let r = 0.3 * A.fromIntegral (rgba .&. 0xFF)- g = 0.59 * A.fromIntegral ((rgba `div` 0x100) .&. 0xFF)- b = 0.11 * A.fromIntegral ((rgba `div` 0x10000) .&. 0xFF)+luminanceOfRGBA32 (unlift . unpackRGBA32 -> (r, g, b, _a :: Exp Word8)) =+ let r' = 0.3 * A.fromIntegral r+ g' = 0.59 * A.fromIntegral g+ b' = 0.11 * A.fromIntegral b in- (r + g + b) / 255+ (r' + g' + b') / 255 -- | Convert a value in the range [0..1] to a grey RGB colour.@@ -109,24 +131,19 @@ rgba32OfLuminance :: (Elt a, IsFloating a) => Exp a -> Exp RGBA32 rgba32OfLuminance val = let v = A.truncate (255 * val) -- (0 `A.max` val `A.min` 1)- r = v- g = v * 0x100- b = v * 0x10000- a = 0xFF000000 in- r + g + b + a+ packRGBA32 (lift (v, v, v, constant 0xFF)) -- | Promote a tuple of (Red, Green, Blue, Alpha) values in the range [0..1] -- into a packed 'RGBA32'. -- rgba32OfFloat :: (Elt a, IsFloating a) => Exp (a, a, a, a) -> Exp RGBA32-rgba32OfFloat rgba =- let (r, g, b, a) = unlift rgba- r' = A.truncate (255 * r) * 0x1000000- g' = A.truncate (255 * g) * 0x10000- b' = A.truncate (255 * b) * 0x100- a' = A.truncate (255 * a)+rgba32OfFloat (unlift -> (r,g,b,a)) =+ let r' = A.truncate (255 * r)+ g' = A.truncate (255 * g)+ b' = A.truncate (255 * b)+ a' = A.truncate (255 * a) in- r' + g' + b' + a'+ packRGBA32 (lift (r', g', b', a'))
Data/Array/Accelerate/IO/ByteString.hs view
@@ -29,8 +29,8 @@ -- fromByteString :: (Shape sh, Elt e) => sh -> ByteStrings (EltRepr e) -> IO (Array sh e) fromByteString sh byteStrings = do- let arr = allocateArray sh- copier = let ((_,f),_,_) = blockCopyFunGenerator arr in f+ arr <- allocateArray sh+ let copier = let ((_,f),_,_) = blockCopyFunGenerator arr in f copier byteStrings return arr
Data/Array/Accelerate/IO/Ptr.hs view
@@ -35,8 +35,8 @@ -- fromPtr :: (Shape sh, Elt e) => sh -> BlockPtrs (EltRepr e) -> IO (Array sh e) fromPtr sh blkPtrs = do- let arr = allocateArray sh- copier = let ((f,_),_,_) = blockCopyFunGenerator arr in f+ arr <- allocateArray sh+ let copier = let ((f,_),_,_) = blockCopyFunGenerator arr in f copier blkPtrs return arr @@ -94,8 +94,8 @@ -- toArray :: (Shape sh, Elt e) => sh -> BlockCopyFuns (EltRepr e) -> IO (Array sh e) toArray sh blockCopyFuns = do- let arr = allocateArray sh- copier = let (_,_,f) = blockCopyFunGenerator arr in f+ arr <- allocateArray sh+ let copier = let (_,_,f) = blockCopyFunGenerator arr in f copier blockCopyFuns return arr
accelerate-io.cabal view
@@ -1,7 +1,7 @@ Name: accelerate-io-Version: 0.15.0.0+Version: 0.15.1.0 Cabal-version: >= 1.6-Tested-with: GHC == 7.6.*+Tested-with: GHC >= 7.8 Build-type: Simple Synopsis: Read and write Accelerate arrays in various formats@@ -16,7 +16,7 @@ License-file: LICENSE Author: Manuel M T Chakravarty, Gabriele Keller,- Sean Lee,+ Sean Seefried, Trevor L. McDonell Maintainer: Manuel M T Chakravarty <chak@cse.unsw.edu.au> Homepage: https://github.com/AccelerateHS/accelerate-io@@ -25,9 +25,7 @@ Category: Compilers/Interpreters, Concurrency, Data, Parallelism Stability: Experimental -Extra-source-files: include/accelerate.h - Flag bounds-checks Description: Enable bounds checking Default: True@@ -41,10 +39,9 @@ Default: False Library- Include-Dirs: include- Build-depends: accelerate == 0.15.*,+ Build-depends: accelerate == 0.15.1.*, array >= 0.3,- base >= 4.6 && < 4.8,+ base >= 4.7 && < 4.9, bmp >= 1.2, bytestring >= 0.9, repa >= 3.2,@@ -76,7 +73,9 @@ -- -- Extensions: -Source-repository head- Type: git- Location: git://github.com/AccelerateHS/accelerate-io.git+Source-repository this+ type: git+ location: git://github.com/AccelerateHS/accelerate-io.git+ branch: release/0.15+ tag: 0.15.1.0
− include/accelerate.h
@@ -1,25 +0,0 @@--#ifndef NOT_ACCELERATE_MODULE-import qualified Data.Array.Accelerate.Internal.Check as Ck-#endif--#define ERROR(f) (Ck.f __FILE__ __LINE__)-#define ASSERT (Ck.assert __FILE__ __LINE__)-#define ENSURE (Ck.f __FILE__ __LINE__)-#define CHECK(f) (Ck.f __FILE__ __LINE__)--#define BOUNDS_ERROR(f) (ERROR(f) Ck.Bounds)-#define BOUNDS_ASSERT (ASSERT Ck.Bounds)-#define BOUNDS_ENSURE (ENSURE Ck.Bounds)-#define BOUNDS_CHECK(f) (CHECK(f) Ck.Bounds)--#define UNSAFE_ERROR(f) (ERROR(f) Ck.Unsafe)-#define UNSAFE_ASSERT (ASSERT Ck.Unsafe)-#define UNSAFE_ENSURE (ENSURE Ck.Unsafe)-#define UNSAFE_CHECK(f) (CHECK(f) Ck.Unsafe)--#define INTERNAL_ERROR(f) (ERROR(f) Ck.Internal)-#define INTERNAL_ASSERT (ASSERT Ck.Internal)-#define INTERNAL_ENSURE (ENSURE Ck.Internal)-#define INTERNAL_CHECK(f) (CHECK(f) Ck.Internal)-