Portability | GHC |
---|---|
Stability | highly unstable |
Maintainer | Stephen Tetley <stephen.tetley@gmail.com> |
Wumpus - Writer Monad PostScript
PostScript is emitted line by line - there is no abstract syntax tree representing PostScript. So we use a writer monad.
- type PostScript = String
- type WumpusM a = PsT Id a
- runWumpus :: TextEncoder -> WumpusM a -> String
- deltaFontAttr :: FontAttr -> WumpusM (Maybe FontAttr)
- deltaRgbColour :: DRGB -> WumpusM (Maybe DRGB)
- deltaStrokeWidth :: Double -> Maybe (Double, Double)
- deltaMiterLimit :: Double -> Maybe (Double, Double)
- deltaLineCap :: LineCap -> Maybe (LineCap, LineCap)
- deltaLineJoin :: LineJoin -> Maybe (LineJoin, LineJoin)
- deltaDashPattern :: DashPattern -> Maybe (DashPattern, DashPattern)
- ps_comment :: String -> WumpusM ()
- ps_gsave :: WumpusM ()
- ps_grestore :: WumpusM ()
- ps_setlinewidth :: PSUnit u => u -> WumpusM ()
- ps_setlinecap :: LineCap -> WumpusM ()
- ps_setlinejoin :: LineJoin -> WumpusM ()
- ps_setmiterlimit :: PSUnit u => u -> WumpusM ()
- ps_setdash :: DashPattern -> WumpusM ()
- ps_setgray :: PSUnit u => u -> WumpusM ()
- ps_setrgbcolor :: PSUnit u => u -> u -> u -> WumpusM ()
- ps_sethsbcolor :: PSUnit u => u -> u -> u -> WumpusM ()
- ps_translate :: PSUnit u => u -> u -> WumpusM ()
- ps_scale :: PSUnit u => u -> u -> WumpusM ()
- ps_concat :: PSUnit u => CTM u -> WumpusM ()
- ps_newpath :: WumpusM ()
- ps_moveto :: PSUnit u => u -> u -> WumpusM ()
- ps_rmoveto :: PSUnit u => u -> u -> WumpusM ()
- ps_lineto :: PSUnit u => u -> u -> WumpusM ()
- ps_rlineto :: PSUnit u => u -> u -> WumpusM ()
- ps_arc :: PSUnit u => u -> u -> u -> u -> u -> WumpusM ()
- ps_arcn :: PSUnit u => u -> u -> u -> u -> u -> WumpusM ()
- ps_curveto :: PSUnit u => u -> u -> u -> u -> u -> u -> WumpusM ()
- ps_closepath :: WumpusM ()
- ps_clip :: WumpusM ()
- ps_fill :: WumpusM ()
- ps_stroke :: WumpusM ()
- ps_showpage :: WumpusM ()
- ps_findfont :: String -> WumpusM ()
- ps_scalefont :: Int -> WumpusM ()
- ps_setfont :: WumpusM ()
- ps_show :: String -> WumpusM ()
- ps_glyphshow :: String -> WumpusM ()
- bang_PS :: WumpusM ()
- bang_EPS :: WumpusM ()
- dsc_comment :: String -> [String] -> WumpusM ()
- dsc_BoundingBox :: PSUnit u => u -> u -> u -> u -> WumpusM ()
- dsc_CreationDate :: String -> WumpusM ()
- dsc_Pages :: Int -> WumpusM ()
- dsc_Page :: String -> Int -> WumpusM ()
- dsc_EndComments :: WumpusM ()
- dsc_EOF :: WumpusM ()
Types
type PostScript = StringSource
runWumpus :: TextEncoder -> WumpusM a -> StringSource
Drop state and result, take the Writer trace.
Deltas
Emit PostScript
ps_comment :: String -> WumpusM ()Source
%% ...
ps_grestore :: WumpusM ()Source
grestore
ps_setlinewidth :: PSUnit u => u -> WumpusM ()Source
... setlinewidth
ps_setlinecap :: LineCap -> WumpusM ()Source
... setlinecap
ps_setlinejoin :: LineJoin -> WumpusM ()Source
... setlinejoin
ps_setmiterlimit :: PSUnit u => u -> WumpusM ()Source
... setmiterlimit
ps_setdash :: DashPattern -> WumpusM ()Source
[... ...] ... setdash
ps_setgray :: PSUnit u => u -> WumpusM ()Source
... setgray
ps_setrgbcolor :: PSUnit u => u -> u -> u -> WumpusM ()Source
... ... ... setrgbcolor
ps_sethsbcolor :: PSUnit u => u -> u -> u -> WumpusM ()Source
... ... ... sethsbcolor
ps_translate :: PSUnit u => u -> u -> WumpusM ()Source
... ... translate
ps_newpath :: WumpusM ()Source
newpath
ps_rmoveto :: PSUnit u => u -> u -> WumpusM ()Source
... ... rmoveto
ps_rlineto :: PSUnit u => u -> u -> WumpusM ()Source
... ... rlineto
ps_curveto :: PSUnit u => u -> u -> u -> u -> u -> u -> WumpusM ()Source
... ... ... ... ... ... curveto
ps_closepath :: WumpusM ()Source
closepath
ps_showpage :: WumpusM ()Source
showpage
ps_findfont :: String -> WumpusM ()Source
The following fonts are expected to exist on most platforms:
Times-Roman Times-Italic Times-Bold Times-BoldItalic Helvetica Helvetica-Oblique Helvetica-Bold Helvetica-Bold-Oblique Courier Courier-Oblique Courier-Bold Courier-Bold-Oblique Symbol
List from Bill Casselman 'Mathematical Illustrations' p279.
/... findfont
ps_scalefont :: Int -> WumpusM ()Source
... scalefont
ps_setfont :: WumpusM ()Source
setfont
ps_glyphshow :: String -> WumpusM ()Source
(...) show
dsc_BoundingBox :: PSUnit u => u -> u -> u -> u -> WumpusM ()Source
%%BoundingBox: ... ... ... ...
llx lly urx ury
dsc_CreationDate :: String -> WumpusM ()Source
%%CreationDate: ...
The creation date is informational and never interpreted, thus the format is entirely arbitrary.
dsc_EndComments :: WumpusM ()Source
%%EndComments