module Render.CG.Minus.Arrow where
import Data.CG.Minus
import Data.CG.Minus.Arrow
import Data.CG.Minus.Colour
import qualified Graphics.Rendering.Cairo as C
import Render.CG.Minus
arrow_strk :: Ca -> C.Render ()
arrow_strk c = do
C.setLineCap C.LineCapRound
pen 0.01 c
C.stroke
arrow_ep :: R -> R -> Ca -> Ln R -> C.Render ()
arrow_ep n a c ln = do
let Ln p0 p1 = ln
(p2,p3) = arrow_coord ln n a
line [p0,ln_midpoint (Ln p2 p3)]
arrow_strk c
polygon [p2,p1,p3]
C.fill
arrows_ep :: R -> R -> Ca -> Ls R -> C.Render ()
arrows_ep n a c xs = mapM_ (arrow_ep n a c) (zipWith Ln xs (tail xs))
arrow_mp :: R -> R -> Ca -> Ln R -> C.Render ()
arrow_mp n a c ln = do
let Ln p0 p1 = ln
p1' = ln_midpoint (Ln p0 (pt_linear_extension n ln))
(p2,p3) = arrow_coord (Ln p0 p1') n a
line [p0,p1]
arrow_strk c
polygon [p2,p1',p3]
C.fill
arrows_mp :: R -> R -> Ca -> Ls R -> C.Render ()
arrows_mp n a c xs = mapM_ (arrow_mp n a c) (zipWith Ln xs (tail xs))