diff --git a/ChangeLog.md b/ChangeLog.md new file mode 100644 index 0000000..e69de29 diff --git a/src/Canvas.hs b/src/Canvas.hs index 39ae518..9d4b3b1 100644 --- a/src/Canvas.hs +++ b/src/Canvas.hs @@ -1,24 +1,44 @@ module Canvas where -import Graphics.Gloss.Data.Picture ( Picture (Text), pictures, scale ) -import Graphics.Gloss.Interface.IO.Interact ( Event (EventKey), KeyState (Down), Key (Char) ) +import Graphics.Gloss.Data.Picture ( Picture (Text), pictures, scale, translate ) +import Graphics.Gloss.Interface.IO.Interact ( Event (EventKey), KeyState (Down, Up), Key (Char, MouseButton), MouseButton (LeftButton) ) + +type Dimension = (Int, Int) + +type TipSize = Float data Canvas = Canvas { - items :: [Picture], - mode :: Mode + items :: [Picture] +, mode :: Mode +, drawing :: Bool } data Mode = Brush | Eraser deriving (Eq, Show) +newtype Tip = Shape TipSize + +data Shape = Rectangular | Circular + +windowSize :: Dimension +windowSize = (500, 500) + +leftCornerize :: Picture -> Picture +leftCornerize = translate (fromIntegral $ (-(fst windowSize)) `div` 2 + (fst windowSize `div` 10)) + (fromIntegral $ (snd windowSize) `div` 2 - (snd windowSize `div` 10)) + showMode :: Canvas -> Picture -showMode canv = scale 0.1 0.1 $ Text ( show (mode canv)) +showMode canv = leftCornerize + $ scale 0.15 0.15 + $ Text ( show (mode canv)) render :: Canvas -> Picture render canv = pictures ( showMode canv : items canv ) handle :: Event -> Canvas -> Canvas -handle (EventKey (Char 'b') Down _ _ ) canv = canv { mode = Brush } -handle (EventKey (Char 'e') Down _ _ ) canv = canv { mode = Eraser } +handle (EventKey (Char 'b') Down _ _ ) canv = canv { mode = Brush } +handle (EventKey (Char 'e') Down _ _ ) canv = canv { mode = Eraser } +handle (EventKey (MouseButton LeftButton) Down _ _ ) canv = canv { drawing = True } +handle (EventKey (MouseButton LeftButton) Up _ _ ) canv = canv { drawing = False } handle _ canv = canv update :: Float -> Canvas -> Canvas diff --git a/src/Costants.hs b/src/Costants.hs index 5e7e1cf..f4ee808 100644 --- a/src/Costants.hs +++ b/src/Costants.hs @@ -4,7 +4,7 @@ import Canvas import Graphics.Gloss display :: Display -display = InWindow "Amaranth" (500, 500) (0,0) +display = InWindow "Amaranth" windowSize (0,0) background :: Color background = white @@ -13,4 +13,5 @@ initial :: Canvas initial = Canvas { items = [] , mode = Brush +, drawing = False } \ No newline at end of file