packages feed

lp-diagrams-svg-1.1: examples/Main.hs

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