packages feed

wumpus-basic-0.11.0: demo/Symbols.hs

{-# 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)