packages feed

arcgrid-viewer-0.1.0.0: src/Raster.hs

module Raster where

import Graphics.Gloss
import Control.Monad.Trans.Reader
import qualified Data.ByteString as B
import Data.Word

import Types
import ColorScheme


packRGBA :: (Float, Float, Float, Float) -> [Word8]
packRGBA (r, g, b, a) = map (fromIntegral . round) [r * 255, g * 255, b * 255, a * 255]


makeRasterPicture :: ReaderT ViewerCtx IO Picture
makeRasterPicture = do
   vs <- asks vctxValTblData
   (w, h) <- asks vctxValTblSize
   colors <- mapM (\(_, v) -> colorFromValue v) vs
   let rgbas = concatMap (packRGBA . rgbaOfColor) colors
   let bs = B.pack rgbas

   return $ bitmapOfByteString w h (BitmapFormat TopToBottom PxRGBA) bs False