open Tree open Render let leaf x = Node (x, []) let node x children = Node (x, children) let example_tree = node "A" [ node "B" [ node "D" [ leaf "H"; leaf "I" ]; leaf "E" ]; node "C" [ node "F" [ leaf "J"; node "K" [ leaf "N"; leaf "O"; leaf "P" ]; leaf "L" ]; leaf "G" ] ] let nested = node "root" [ node "left" [ node "ll" [ leaf "lll"; leaf "llr" ]; node "lr" [ leaf "lrl"; leaf "lrr" ] ]; node "middle" [ leaf "ml"; leaf "mm"; leaf "mr" ]; node "right" [ node "rl" [ node "rll" [ leaf "rlll"; leaf "rllr"; leaf "rllm" ]; leaf "rlr" ]; leaf "rr" ] ] let () = let positioned, _ = design example_tree in let absolute = absolutize 0.0 positioned in let nodes = flatten absolute in let tree_edges = edges absolute in render_tree ~filename:"tree_kennedy.png" ~node_radius:20 ~h_scale:70.0 ~v_scale:100 ~padding:50 nodes tree_edges; let absolute_rt = design_rt example_tree in let nodes_rt = flatten absolute_rt in let edges_rt = edges absolute_rt in render_tree ~filename:"tree_rt.png" ~node_radius:20 ~h_scale:70.0 ~v_scale:100 ~padding:50 nodes_rt edges_rt; let positioned2, _ = design nested in let absolute2 = absolutize 0.0 positioned2 in let nodes2 = flatten absolute2 in let edges2 = edges absolute2 in render_tree ~filename:"nested_kennedy.png" ~node_radius:18 ~h_scale:60.0 ~v_scale:90 ~padding:45 nodes2 edges2; let absolute2_rt = design_rt nested in let nodes2_rt = flatten absolute2_rt in let edges2_rt = edges absolute2_rt in render_tree ~filename:"nested_rt.png" ~node_radius:18 ~h_scale:60.0 ~v_scale:90 ~padding:45 nodes2_rt edges2_rt