{-# OPTIONS -Wall #-}
module Symbols where
import Wumpus.Basic.Graphic hiding ( perpendicular )
import Wumpus.Basic.SafeFonts
import Wumpus.Basic.Text.LRSymbol
import Wumpus.Basic.Text.LRText
import Wumpus.Core -- package: wumpus-core
import Data.AffineSpace -- package: vector-space
import Control.Monad
import Prelude hiding ( pi, product )
import System.Directory
main :: IO ()
main = do
createDirectoryIfMissing True "./out/"
demo01
demo01 :: IO ()
demo01 = do
writeEPS_latin1 "./out/symbols.eps" pic1
writeSVG_latin1 "./out/symbols.svg" pic1
std_ctx :: DrawingContext
std_ctx = fontface times_roman $ standardContext 12
pic1 :: DPicture
pic1 = liftToPictureU $ execDrawing std_ctx $ do
zipWithM_ mdraw letters_01 column_01
zipWithM_ sdraw letters_01 column_01
zipWithM_ mdraw letters_02 column_02
zipWithM_ sdraw letters_02 column_02
zipWithM_ mdraw letters_03 column_03
zipWithM_ sdraw letters_03 column_03
zipWithM_ mdraw letters_04 column_04
zipWithM_ sdraw letters_04 column_04
zipWithM_ mdraw letters_05 column_05
zipWithM_ sdraw letters_05 column_05
zipWithM_ mdraw letters_06 column_06
zipWithM_ sdraw letters_06 column_06
where
mdraw (_,ma) pt = draw $ execLRText ma `at` pt
sdraw (s,_) pt = draw $ textline s `at` pt .+^ hvec 16
letters_01 :: [(String, LRText Double ())]
letters_01 =
[ ("uAlpha", uAlpha)
, ("uBeta", uBeta)
, ("uChi", uChi)
, ("uDelta", uDelta)
, ("uEpsilon", uEpsilon)
, ("uEta", uEta)
, ("uEuro", uEuro)
, ("uGamma", uGamma)
, ("uIfraktur", uIfraktur)
, ("uIota", uIota)
, ("uKappa", uKappa)
, ("uLambda", uLambda)
, ("uMu", uMu)
, ("uNu", uNu)
, ("uOmega", uOmega)
, ("uOmicron", uOmicron)
, ("uPhi", uPhi)
, ("uPi", uPi)
, ("uPsi", uPsi)
, ("uRfraktur", uRfraktur)
, ("uRho", uRho)
, ("uSigma", uSigma)
, ("uTau", uTau)
, ("uTheta", uTheta)
, ("uUpsilon", uUpsilon)
, ("uUpsilon1", uUpsilon1)
, ("uXi", uXi)
, ("uZeta", uZeta)
, ("aleph", aleph)
, ("alpha", alpha)
, ("ampersand", ampersand)
, ("angle", angle)
, ("angleleft", angleleft)
, ("angleright", angleright)
, ("approxequal", approxequal)
]
letters_02 :: [(String, LRText Double ())]
letters_02 =
[ ("arrowboth", arrowboth)
, ("arrowdblboth", arrowdblboth)
, ("arrowdbldown", arrowdbldown)
, ("arrowdblleft", arrowdblleft)
, ("arrowdblright", arrowdblright)
, ("arrowdblup", arrowdblup)
, ("arrowdown", arrowdown)
, ("arrowleft", arrowleft)
, ("arrowright", arrowright)
, ("arrowup", arrowup)
, ("asteriskmath", asteriskmath)
, ("bar", bar)
, ("beta", beta)
, ("braceleft", braceleft)
, ("braceright", braceright)
, ("bracketleft", bracketleft)
, ("bracketright", bracketright)
, ("bullet", bullet)
, ("carriagereturn", carriagereturn)
, ("chi", chi)
]
letters_03 :: [(String, LRText Double ())]
letters_03 =
[ ("circlemultiply", circlemultiply)
, ("circleplus", circleplus)
, ("club", club)
, ("colon", colon)
, ("comma", comma)
, ("congruent", congruent)
, ("copyrightsans", copyrightsans)
, ("copyrightserif", copyrightserif)
, ("degree", degree)
, ("delta", delta)
, ("diamond", diamond)
, ("divide", divide)
, ("dotmath", dotmath)
, ("eight", eight)
, ("element", element)
, ("ellipsis", ellipsis)
, ("emptyset", emptyset)
, ("epsilon", epsilon)
, ("equal", equal)
, ("equivalence", equivalence)
, ("eta", eta)
, ("exclam", exclam)
, ("existential", existential)
, ("five", five)
, ("florin", florin)
, ("four", four)
, ("fraction", fraction)
, ("gamma", gamma)
, ("gradient", gradient)
, ("greater", greater)
, ("greaterequal", greaterequal)
, ("heart", heart)
, ("infinity", infinity)
, ("integral", integral)
]
letters_04 :: [(String, LRText Double ())]
letters_04 =
[ ("intersection", intersection)
, ("iota", iota)
, ("kappa", kappa)
, ("lambda", lambda)
, ("less", less)
, ("lessequal", lessequal)
, ("logicaland", logicaland)
, ("logicalnot", logicalnot)
, ("logicalor", logicalor)
, ("lozenge", lozenge)
, ("minus", minus)
, ("minute", minute)
, ("mu", mu)
, ("multiply", multiply)
, ("nine", nine)
, ("notelement", notelement)
, ("notequal", notequal)
, ("notsubset", notsubset)
, ("nu", nu)
, ("numbersign", numbersign)
, ("omega", omega)
, ("omega1", omega1)
, ("omicron", omicron)
, ("one", one)
, ("parenleft", parenleft)
, ("parenright", parenright)
]
letters_05 :: [(String, LRText Double ())]
letters_05 =
[ ("partialdiff", partialdiff)
, ("percent", percent)
, ("period", period)
, ("perpendicular", perpendicular)
, ("phi", phi)
, ("phi1", phi1)
, ("pi", pi)
, ("plus", plus)
, ("plusminus", plusminus)
, ("product", product)
, ("propersubset", propersubset)
, ("propersuperset", propersuperset)
, ("proportional", proportional)
, ("psi", psi)
, ("question", question)
, ("radical", radical)
, ("radicalex", radicalex)
, ("reflexsubset", reflexsubset)
, ("reflexsuperset", reflexsuperset)
, ("registersans", registersans)
, ("registerserif", registerserif)
, ("rho", rho)
]
letters_06 :: [(String, LRText Double ())]
letters_06 =
[ ("second", second)
, ("semicolon", semicolon)
, ("seven", seven)
, ("sigma", sigma)
, ("sigma1", sigma1)
, ("similar", similar)
, ("six", six)
, ("slash", slash)
, ("space", space)
, ("spade", spade)
, ("suchthat", suchthat)
, ("summation", summation)
, ("tau", tau)
, ("therefore", therefore)
, ("theta", theta)
, ("theta1", theta1)
, ("three", three)
, ("trademarksans", trademarksans)
, ("trademarkserif", trademarkserif)
, ("two", two)
, ("underscore", underscore)
, ("union", union)
, ("universal", universal)
, ("upsilon", upsilon)
, ("weierstrass", weierstrass)
, ("xi", xi)
, ("zero", zero)
, ("zeta", zeta)
]
-- TODO - this should use a chain when the Chain API stablizes.
column_01 :: Num u => [Point2 u]
column_01 = iterate (.+^ vvec (-16)) (P2 0 600)
column_02 :: Num u => [Point2 u]
column_02 = iterate (.+^ vvec (-16)) (P2 100 600)
column_03 :: Num u => [Point2 u]
column_03 = iterate (.+^ vvec (-16)) (P2 200 600)
column_04 :: Num u => [Point2 u]
column_04 = iterate (.+^ vvec (-16)) (P2 300 600)
column_05 :: Num u => [Point2 u]
column_05 = iterate (.+^ vvec (-16)) (P2 400 600)
column_06 :: Num u => [Point2 u]
column_06 = iterate (.+^ vvec (-16)) (P2 500 600)