amaranth/src/Canvas.hs

25 lines
736 B
Haskell
Raw Normal View History

2022-07-29 16:32:45 +02:00
module Canvas where
import Graphics.Gloss.Data.Picture ( Picture (Text), pictures, scale )
2022-07-31 15:48:17 +02:00
import Graphics.Gloss.Interface.IO.Interact ( Event (EventKey), KeyState (Down), Key (Char) )
2022-07-29 16:32:45 +02:00
2022-07-31 15:48:17 +02:00
data Canvas = Canvas {
items :: [Picture],
mode :: Mode
2022-07-29 16:32:45 +02:00
}
2022-07-31 15:48:17 +02:00
data Mode = Brush | Eraser deriving (Eq, Show)
showMode :: Canvas -> Picture
showMode canv = scale 0.1 0.1 $ Text ( show (mode canv))
2022-07-29 16:32:45 +02:00
render :: Canvas -> Picture
render canv = pictures ( showMode canv : items canv )
2022-07-29 16:32:45 +02:00
handle :: Event -> Canvas -> Canvas
2022-07-31 15:48:17 +02:00
handle (EventKey (Char 'b') Down _ _ ) canv = canv { mode = Brush }
handle (EventKey (Char 'e') Down _ _ ) canv = canv { mode = Eraser }
handle _ canv = canv
2022-07-29 16:32:45 +02:00
update :: Float -> Canvas -> Canvas
2022-07-31 15:48:17 +02:00
update _ canv = canv