import Graphics.Diagrams.SVG import Algebra.Classes import Prelude hiding (Num(..)) -- autoLab s i = do -- o <- label s -- -- stroke "red" $ path $ polyline [o # BaseW, o # BaseE] -- -- stroke "blue" $ path $ polygon [o # NW, o # NE, o # SE, o # SW] -- autoLabelObj o i label' x = label x x autoLabel' x = autoLabel x x testDiagram :: SvgDiagram () testDiagram = do noOverlap =<< label' "whatever1" noOverlap =<< label' "whatever2" -- noOverlap =<< label' "whatever3" -- noOverlap =<< label' "whatever4" a <- label' $ "ha" b <- label' $ "b" a' <- draw $ circle "circleEx" -- label $ ensureMath $ "c" width a' === constant 15 b' <- label' $ "b'" a'' <- label' $ "." b'' <- label' $ "." let width = constant 70 vdist b a === constant 30 hdist a a' === width hdist a' a'' === width alignMatrix $ map (map (#Center)) $ [[a,a',a''] ,[b, b',b'']] noOverlap =<< autoLabel' "aa'" =<< arrow a a' noOverlap =<< autoLabel' "bb'" =<< arrow b b' noOverlap =<< autoLabel' "ab" . turn180 =<< arrow a b noOverlap =<< autoLabel' "a'a''" =<< arrow a' a'' noOverlap =<< autoLabel' "b'b''" =<< arrow b' b'' draw $ do autoLabel' "equal" =<< edge a'' b'' return () main :: IO () main = renderMain testDiagram -- fonts which fail with 'not enough bytes' -- Cantarell, FreeSans, Asana Math -- fonts which do work: Amiri, Roboto, DejaVu Sans, Droid Sans