wumpus-tree-0.10.0: Drawing trees

PortabilityGHC
Stabilityhighly unstable
MaintainerStephen Tetley <stephen.tetley@gmail.com>

Wumpus.Tree

Contents

Description

 

Synopsis

The type of rendered trees

type TreePicture = Picture DoubleSource

A rendered tree - alias for for Picture Double in Wumpus-Core.

type ScaleFactors = ScalingContext Double Int DoubleSource

Customize the size of the printed tree.

A tree is designed with a height of 1 unit between parent and child nodes.

The y-scaling factor multiplies the unit height, a scaling factor of 30 represents 30 points.

In the horizontal, 1 unit is the smallest possible distance between child nodes.

uniformScaling :: Double -> ScaleFactorsSource

Build uniform x- and y-scaling factors, i.e. x == y .

drawTreePicture :: (a -> TreeNode) -> DrawingContext -> ScaleFactors -> Tree a -> TreePictureSource

drawTreePicture : draw_fun * attr * scale_factors * tree -> TreePicture

The rendering function.

draw_fun renders the individual nodes. Usually charNode, circleNode

attr is the font size (translates to node size), stroke colour, fill colour.

scale_factors scales the distances between parent and child (y-scale) and sibling nodes (x-scale).

tree is the input tree to be rendered.

Output to file

writeEPS_TreePicture :: FilePath -> TreePicture -> IO ()Source

Output a TreePicture, generating an EPS file.

writeSVG_TreePicture :: FilePath -> TreePicture -> IO ()Source

Output a TreePicture, generating a SVG file.

Drawing nodes

charNode :: Char -> TreeNodeSource

Render tree nodes with a single character.

Useful for rendering Data.Tree Char .

textNode :: String -> TreeNodeSource

Tree nodes with a text label.

Useful for rendering Data.Tree String .

Note the width of the label is not accounted for in the design of the tree. Labels with long texts may overlap. Also, only a single line of text is printed - any text after the first newline character will be dropped.

circleNode :: RGBi -> a -> TreeNodeSource

Tree nodes with a stroked circle.

Suitable for printing the shape of a tree, ignoring the data.

diskNode :: RGBi -> a -> TreeNodeSource

Tree nodes with a filled circle.

Suitable for printing the shape of a tree, ignoring the data.