(+) change mode e <-> b
This commit is contained in:
		| @@ -1,22 +1,28 @@ | |||||||
| module Canvas where | module Canvas where | ||||||
|  |  | ||||||
| import Graphics.Gloss.Data.Picture ( Picture, pictures ) | import Graphics.Gloss.Data.Picture ( Picture (Text), pictures ) | ||||||
| import Graphics.Gloss.Interface.IO.Interact ( Event ) | import Graphics.Gloss.Interface.IO.Interact ( Event (EventKey), KeyState (Down), Key (Char) ) | ||||||
|  |  | ||||||
| newtype Canvas = Canvas { | data Canvas = Canvas { | ||||||
|     items ::    [Picture] |     items   ::  [Picture], | ||||||
|  |     mode    ::  Mode    | ||||||
| } | } | ||||||
|  |  | ||||||
|  | data Mode = Brush | Eraser deriving (Eq, Show) | ||||||
|  |  | ||||||
| initial :: Canvas | initial :: Canvas | ||||||
| initial = Canvas { | initial = Canvas { | ||||||
|     items   =   []  |     items   =   []  | ||||||
|  | ,   mode    =   Brush | ||||||
| } | } | ||||||
|  |  | ||||||
| render :: Canvas -> Picture | render :: Canvas -> Picture | ||||||
| render canvas = pictures ( items canvas )  | render canvas = pictures ( Text ( show (mode canvas)) : items canvas )  | ||||||
|  |  | ||||||
| handle :: Event -> Canvas -> Canvas | handle :: Event -> Canvas -> Canvas | ||||||
| handle _ _ = initial | handle (EventKey (Char 'b') Down _ _ ) canv = canv { mode = Brush } | ||||||
|  | handle (EventKey (Char 'e') Down _ _ ) canv = canv { mode = Eraser } | ||||||
|  | handle _ canv = canv | ||||||
|  |  | ||||||
| update :: Float -> Canvas -> Canvas | update :: Float -> Canvas -> Canvas | ||||||
| update _ _ = initial  | update _ canv = canv  | ||||||
		Reference in New Issue
	
	Block a user