module Vector where import Graphics.Gloss import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Reader import Data.Monoid import Types import ColorScheme makeVectorPicture :: ReaderT ViewerCtx IO Picture makeVectorPicture = do vs <- asks vctxValTblData ps <- mapM pictureFromRowColValue vs return $ pictures ps pictureFromRowColValue :: ((Int, Int), Int) -> ReaderT ViewerCtx IO Picture pictureFromRowColValue ((r, c), v) = do sq <- asks vctxSqSize vcolor <- colorFromValue v let mon = mconcat [ Endo $ translate (fromIntegral c * sq) (negate (fromIntegral r * sq)) , Endo $ color vcolor ] -- lift $ putStrLn $ "((r,c,),val)=" ++ show ((r,c), v) ++ " vcolor=" ++ show vcolor ++ " " return $ appEndo mon $ rectangleSolid sq sq