wumpus-tree-0.12.0: Drawing trees

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

Wumpus.Tree

Contents

Description

 

Synopsis

The type of rendered trees

type TreeDrawing u = Drawing uSource

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

type ScaleFactors u = ScalingContext u Int uSource

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 :: Num u => u -> ScaleFactors uSource

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

scaleFactors :: Num u => u -> u -> ScaleFactors uSource

drawScaledTree :: (Real u, Floating u, FromPtSize u, InnerSpace (Vec2 u)) => (a -> TreeNode u) -> ScaleFactors u -> Tree a -> TreeDrawing uSource

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.

Drawing nodes

charNode :: (Real u, Floating u, FromPtSize u) => Char -> TreeNode uSource

Render tree nodes with a single character.

Useful for rendering Data.Tree Char .

textNode :: (Real u, Floating u, FromPtSize u) => String -> TreeNode uSource

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 :: (Floating u, FromPtSize u) => RGBi -> a -> TreeNode uSource

Tree nodes with a stroked circle.

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

diskNode :: (Floating u, FromPtSize u) => RGBi -> a -> TreeNode uSource

Tree nodes with a filled circle.

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