Adds a node under parent and returns it. The first node has no parent and becomes the root.
The name is copied.
#import "Treemap";
Procedures#
The position of node in a Treemap_Display's nodes.
Adds up the sizes of every parent and orders children from largest to smallest. Call it after adding nodes or changing sizes, before laying out.
Makes a display for laying out treemap.
Lays out the descendants of root inside its rectangle, less its border.
Places one row of children along the short side of the free area, and returns their total weight.
Types#
One rectangle's worth of data: a name and a size, with children inside it. A leaf's size is set
by the caller; a parent's is the sum of its children's, filled in by recompute_if_dirty.
The user_data_ fields are free for the program.
- name: string
- size: float64
- parent: *Treemap_Node
- children: [..] *Treemap_Node
- user_data_pointer: *void
- user_data_s64: s64
- user_data_float64: float64
- locator: Bucket_Locator
A tree of sized nodes to be drawn as nested rectangles. Build it with add_node.
- nodes: Bucket_Array(Treemap_Node, 1024)
- root: *Treemap_Node
- dirty: := true
Where one node landed: its top-left corner, its size, and the border taken from its edges.
- corner: Vector2
- size: Vector2
- border: [4] float
- node: *Treemap_Node
The rectangles a Treemap lays out to in a given area, one Display_Node per node, indexed with get_index.
- nodes: [..] Display_Node
- treemap: *Treemap
- outer_size: Vector2
- dirty: := true
Indexes into a node's four border widths.
- EAST
- NORTH
- WEST
- SOUTH
Called while laying out to say how much room a node keeps free along each edge for its
own frame or label; the children are laid out inside what is left. Fill border_values
(see Border_Direction); the default is zero.