24 lines
869 B
Plaintext
24 lines
869 B
Plaintext
render_nodes_to_surface = function()
|
|
-- design constraints:
|
|
-- trees only, no graphs or DAGs
|
|
-- parents above children
|
|
-- a child shares its parent's column exactly only if it's an only child
|
|
-- parents can overlap columns with children and more distant descendants
|
|
-- siblings never share a column
|
|
-- siblings never overlap columns
|
|
-- siblings always occupy the same row
|
|
-- cousins/aunts/nephews never overlap columns
|
|
Surface = {}
|
|
-- we're going to be computing box heights
|
|
love.graphics.setFont(love.graphics.newFont(scale(20)))
|
|
-- compute number of tracks needed
|
|
for _,x in pairs(Nodes) do
|
|
if x.ntracks == nil then
|
|
x.ntracks = compute_ntracks(x)
|
|
end
|
|
end
|
|
-- prepare the tracks
|
|
-- each track is 600px + 20px of gutter between nodes
|
|
render_node_and_descendants(Root.id, --[[y]] 0, --[[xlo]] 0, --[[xhi]] 620 * Root.ntracks)
|
|
end
|