add support for printing a title on top of the picture

master
Harald Welte 11 years ago
parent 259678c908
commit 3c185e97f1
  1. 19
      OsmoLadder.pm
  2. 7
      gen_ladder.pl

@ -24,6 +24,7 @@ use GD::Arrow;
my $ROW_SIZE = 50;
my $HEAD_SIZE = 70;
my $TITLE_SIZE = 20;
my $FOOT_SIZE = 50;
my $COL_SIZE_MIN = 200;
my $MARGIN_LR = 50;
@ -31,11 +32,14 @@ my $NODELINE_OVERLAP = 30;
my $FONT = "/usr/share/fonts/truetype/freefont/FreeSansBold.ttf";
my $graph_title;
sub compute_img_size($$)
{
my ($num_nodes, $num_msgs) = @_;
my $height = (($num_msgs-1) * $ROW_SIZE) + $HEAD_SIZE + $FOOT_SIZE;
my $height = (($num_msgs-1) * $ROW_SIZE) +
$HEAD_SIZE + $TITLE_SIZE + $FOOT_SIZE;
my $width = 2*$MARGIN_LR + ($num_nodes-1)*$COL_SIZE_MIN;
return ($width, $height);
@ -52,7 +56,7 @@ sub compute_msg_y($)
{
my $msg_num = shift;
return $HEAD_SIZE + $msg_num * $ROW_SIZE;
return $HEAD_SIZE + $TITLE_SIZE + $msg_num * $ROW_SIZE;
}
my %nodes;
@ -136,6 +140,11 @@ sub draw_msg_label($$$$$)
draw_scaled_label($im, $text, $line_y, $start_x, $end_x);
}
sub set_title($)
{
$graph_title = shift;
}
sub draw_graph($)
{
my $outfile_name = shift;
@ -148,6 +157,12 @@ sub draw_graph($)
$im->transparent($white);
my $black = $im->colorAllocate(0, 0, 0);
if ($graph_title) {
my $gap_oneside = ($x/2) * 0.8;
draw_scaled_label($im, $graph_title, $TITLE_SIZE,
$x/2-$gap_oneside, $x/2+$gap_oneside);
}
# vertical lines for each of the nodes in the graph
foreach my $n (values %nodes) {
printf("node %s (%s)\n", $$n{'name'}, $$n{'label'});

@ -41,7 +41,12 @@ sub parse_cfg_line($)
($cfg_parse_section) = $line =~ /^\[(.*)\]/;
return;
}
if ($cfg_parse_section eq 'entities') {
if ($cfg_parse_section eq 'global') {
if ($line =~ /^title/) {
my ($title) = $line =~ /^title\s+"(.*)"/;
OsmoLadder::set_title($title);
}
} elsif ($cfg_parse_section eq 'entities') {
if (my ($entity, $label) = $line =~ /^(\S+)\s+"(.+)"/) {
OsmoLadder::new_node($entity, $label);
} else {

Loading…
Cancel
Save