add dump-asy.pl, renders the tree with asymptote
This commit is contained in:
parent
ab03b3bd41
commit
a3e0ce53a9
|
@ -0,0 +1,45 @@
|
|||
#!/usr/bin/env perl
|
||||
# vim:ts=4:sw=4:expandtab
|
||||
# renders the layout tree using asymptote
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Data::Dumper;
|
||||
use AnyEvent::I3;
|
||||
use File::Temp;
|
||||
use v5.10;
|
||||
|
||||
my $i3 = i3("/tmp/nestedcons");
|
||||
|
||||
my $tree = $i3->get_workspaces->recv;
|
||||
|
||||
my $tmp = File::Temp->new(UNLINK => 0, SUFFIX => '.asy');
|
||||
|
||||
say $tmp "import drawtree;";
|
||||
|
||||
say $tmp "treeLevelStep = 2cm;";
|
||||
|
||||
sub dump_node {
|
||||
my ($n, $parent) = @_;
|
||||
|
||||
my $o = ($n->{orientation} == 0 ? "h" : "v");
|
||||
my $w = (defined($n->{window}) ? $n->{window} : "N");
|
||||
my $na = $n->{name};
|
||||
$na =~ s/#/\\#/g;
|
||||
my $name = "($na, $o, $w)";
|
||||
|
||||
print $tmp "TreeNode n" . $n->{id} . " = makeNode(";
|
||||
|
||||
print $tmp "n" . $parent->{id} . ", " if defined($parent);
|
||||
print $tmp "\"" . $name . "\");\n";
|
||||
|
||||
dump_node($_, $n) for @{$n->{nodes}};
|
||||
}
|
||||
|
||||
dump_node($tree);
|
||||
say $tmp "draw(n" . $tree->{id} . ", (0, 0));";
|
||||
|
||||
close($tmp);
|
||||
my $rep = "$tmp";
|
||||
$rep =~ s/asy$/eps/;
|
||||
system("cd /tmp && asy $tmp && gv $rep && rm $rep");
|
Loading…
Reference in New Issue