drawingPart :: Drawing lbl leaf -> [Int] -> Drawing lbl leaf
type DPath = [Int]
up :: DPath -> DPath
maybeDrawingPart :: Drawing lbl leaf -> [Int] -> Maybe (Drawing lbl leaf)
replacePart :: Drawing lbl leaf -> [Int] -> Drawing lbl leaf -> Drawing lbl leaf
updatePart :: Drawing lbl leaf ->
[Int] -> (Drawing lbl leaf -> Drawing lbl leaf) -> Drawing lbl leaf
mapLabelDrawing :: (t -> lbl) -> Drawing t leaf -> Drawing lbl leaf
deletePart :: Drawing lbl leaf -> [Int] -> Drawing lbl leaf
drawingAnnots :: Drawing a leaf -> [(DPath, a)]
These are functions that operate on parts of drawings.
Values of type DPath are used as references to parts of drawings. The
function up returns the path of the parent of a node.
There are two functions for extracting a part with a given path.
The function drawingPart fails if the path refers to a non-existing
part. maybeDrawingPart returns Just part if the part exists,
Nothing otherwise.
The functions replacePart and updatePart replace parts of
drawings. They fail if the path refers to a non-existing part.
mapLabelDrawing applies a function to all the labels in a drawing.
deletePart deletes a part of a drawing.
drawingAnnots returns the paths and labels of the labelled nodes of
a drawing.
replacePart drawing path newpart = updatePart drawing path (const newpart)