module Diagrams.Puzzles.Draw (
PuzzleSol,
RenderPuzzle,
OutputChoice(..),
draw
) where
import Diagrams.Prelude
type RenderPuzzle b p s = (p -> Diagram b R2, (p, s) -> Diagram b R2)
type PuzzleSol b = (Diagram b R2, Maybe (Diagram b R2))
data OutputChoice = DrawPuzzle | DrawSolution | DrawExample
deriving Show
draw :: (Backend b R2, Renderable (Path R2) b) =>
PuzzleSol b -> OutputChoice -> Maybe (Diagram b R2)
draw (p, ms) = fmap (bg white) . d
where d DrawPuzzle = Just p
d DrawSolution = ms
d DrawExample = ms >>= \s -> return $ p ||| strutX 2.0 ||| s