Values: 0.5:1:2:3:0:4:5:6:7:0:-7:-6:-5:-4:0:-3:-2:-1:-0.5.
Legend values: -6:-4:-2:0:2:4:6.
MakeSimpleASCIIGraphV3(
{
screen_height => 7,
#roof_value => 6,
bottom_value => -6,
floor_value => 0,
bar_char => q{ },
floor_char => q{-},
write_floor => TRUE,
use_floor => TRUE,
write_floor_value => TRUE,
write_legend => 1,
legend_horizontal_width => 3,
horizontal_width => 3,
write_value => TRUE,
write_always_over_value => TRUE,
write_always_under_value => TRUE,
legend_values => \@legend_values,
use_legend_values => TRUE
}, @values);
Graph:
6 6 7 .
4 4 5 | | .
2 2 3 | | | | .
0 0.5 1 | | 0 | | | | 0 | | | | 0 | | -1 -0.5.
-2 | | | | -3 -2 .
-4 | | -5 -4 .
-6 -7 -6 .
use 5.010;
use strict;
use utf8;
use warnings;
use diagnostics;
require Debug::SimpleOptional;
if(!defined($::DBG)) {
$::DBG = Debug::SimpleOptional->new();
}
$::DBG->debug('DEBUG', "Debugging active in file \"" . __FILE__ . "\".\n");
#$::DBG->debug('TRACE', "Tracing active in file \"" . __FILE__ . "\".\n");
#$::DBG->debug('INFO', "Printing info active in file \"" . __FILE__ . "\".\n");
#$::DBG->debug('WARN', "Printing warnings active in file \"" . __FILE__ . "\".\n");
#$::DBG->debug('ERROR', "Printing errors active in file \"" . __FILE__ . "\".\n");
#$::DBG->debug('FATAL', "Printing fatals active in file \"" . __FILE__ . "\".\n");
$::DBG->debug('DEBUG', sub {use Data::Dumper;});
use Carp;
require "center_text.pl";
# parameters: SCREEN_HEIGHT, ROOF_VALUE (active if != 0), BOTTOM_VALUE (below floor, active if != 0), HORIZONTAL_WIDTH, VALUES
# Note: Crashes if values contain only zeroes!
sub MakeSimpleASCIIGraphV1 {
$::DBG->enter_sub();
$::DBG->debug('DEBUG', "Parameters: " . join(":", @_) . "\".\n");
my $screen_height = shift @_;
my $roof_value = shift @_;
my $bottom_value = shift @_; # Not yet implemented.
my $horizontal_width = shift @_;
my @values = @_;
my $bar_char = "|";
my $horizontal_width_empty = "";
for(my $i = $horizontal_width; $i > 0; $i--) {
$horizontal_width_empty .= " ";
}
my @output_rows;
if(scalar(@values) >= 1) {
my $top_value = 0;
if($roof_value != 0) {
$top_value = $roof_value;
}
else {
$::DBG->debug('DEBUG', "Find out the biggest value.\n");
foreach my $value (@values) {
if($value > $top_value) {
$top_value = $value;
}
}
}
$::DBG->debug('DEBUG', "Var \$top_value=" . $top_value . "\".\n");
my $rows_for_one = $screen_height / $top_value;
$::DBG->debug('DEBUG', "Var \$rows_for_one=" . $rows_for_one . "\".\n");
for(my $i_per_day = 0; $i_per_day < scalar(@values); $i_per_day++) {
my $value = $values[$i_per_day];
for(my $i_row = $screen_height - 1; $i_row >= 0; $i_row--) {
if($value != 0) {
if($i_row > int($rows_for_one * $value + 0.5) - 1 && $i_row == 0) {
$output_rows[$i_row] .= CenterText($value, $horizontal_width, " ", "right");
}
elsif($i_row > int($rows_for_one * $value + 0.5) - 1) {
$output_rows[$i_row] .= $horizontal_width_empty;
}
elsif($i_row == int($rows_for_one * $value + 0.5 - 1)) {
$output_rows[$i_row] .= CenterText($value, $horizontal_width, " ", "right");
}
elsif($i_row < int($rows_for_one * $value + 0.5 - 1)) {
$output_rows[$i_row] .= CenterText($bar_char, $horizontal_width, " ", "right");
}
else {
$::DBG->debug('DEBUG', "Control has entered an if clause which is undefined. Line " . __LINE__ . "\".\n");
}
}
else { # $value == 0
$output_rows[$i_row] .= $horizontal_width_empty;
}
}
}
# Now we have to flip the order!
my @reversed_rows;
for(my $i = $screen_height - 1; $i >= 0; $i--) {
push(@reversed_rows, $output_rows[$i]);
}
@output_rows = @reversed_rows;
}
$::DBG->exit_sub();
return @output_rows;
}
# parameters: SCREEN_HEIGHT, ROOF_VALUE (active if != 0), BOTTOM_VALUE (below floor, active if != 0), LEGEND_HORIZONTAL_WIDTH, HORIZONTAL_WIDTH, WRITE_VALUE (YES = 1, NO = 0), VALUES
# Note: Crashes if values contain only zeroes!
sub MakeSimpleASCIIGraphV2 {
$::DBG->enter_sub();
$::DBG->debug('DEBUG', "Parameters: " . join(":", @_) . "\".\n");
my $screen_height = shift @_;
my $roof_value = shift @_;
my $bottom_value = shift @_; # Not yet implemented.
my $legend_horizontal_width = shift @_;
my $write_value = shift @_;
my $horizontal_width = shift @_;
my @values = @_;
my $bar_char = "|";
my $horizontal_width_empty = "";
for(my $i = $horizontal_width; $i > 0; $i--) {
$horizontal_width_empty .= " ";
}
my @output_rows;
if(scalar(@values) >= 1) {
my $top_value = 0;
if($roof_value != 0) {
$top_value = $roof_value;
}
else {
$::DBG->debug('DEBUG', "Find out the biggest value.\n");
foreach my $value (@values) {
if($value > $top_value) {
$top_value = $value;
}
}
}
$::DBG->debug('DEBUG', "Var \$top_value=" . $top_value . "\".\n");
my $rows_for_one = $screen_height / $top_value;
$::DBG->debug('DEBUG', "Var \$rows_for_one=" . $rows_for_one . "\".\n");
my $amount_per_row = $top_value / $screen_height;
$::DBG->debug('DEBUG', "Var \$amount_per_row=" . $amount_per_row . "\".\n");
# Make a legend of top value on each row
my $sprf_format = "\%-" . $legend_horizontal_width . "s";
$::DBG->debug('DEBUG', "Var \$sprf_format=" . $sprf_format . "\".\n");
for(my $i_row = $screen_height - 1; $i_row >= 0; $i_row--) {
$output_rows[$i_row] .= sprintf $sprf_format, int(($i_row + 1) * $amount_per_row + 0.5);
}
# Now the values
for(my $i_per_day = 0; $i_per_day < scalar(@values); $i_per_day++) {
my $value = $values[$i_per_day];
for(my $i_row = $screen_height - 1; $i_row >= 0; $i_row--) {
if($value != 0) {
if($i_row > int($rows_for_one * $value + 0.5) - 1 && $i_row == 0) {
$output_rows[$i_row] .= CenterText($write_value ? $value : $bar_char, $horizontal_width, " ", "right");
}
elsif($i_row > int($rows_for_one * $value + 0.5) - 1) {
$output_rows[$i_row] .= $horizontal_width_empty;
}
elsif($i_row == int($rows_for_one * $value + 0.5 - 1)) {
$output_rows[$i_row] .= CenterText($write_value ? $value : $bar_char, $horizontal_width, " ", "right");
}
elsif($i_row < int($rows_for_one * $value + 0.5 - 1)) {
$output_rows[$i_row] .= CenterText($bar_char, $horizontal_width, " ", "right");
}
else {
$::DBG->debug('DEBUG', "Control has entered an if clause which is undefined. Line " . __LINE__ . "\".\n");
}
}
else { # $value == 0
$output_rows[$i_row] .= $horizontal_width_empty;
}
}
}
# Now we have to flip the order!
my @reversed_rows;
for(my $i = $screen_height - 1; $i >= 0; $i--) {
push(@reversed_rows, $output_rows[$i]);
}
@output_rows = @reversed_rows;
}
$::DBG->exit_sub();
return @output_rows;
}
# parameters:
# SCREEN_HEIGHT, (height reserved for the graph.)
# ROOF_VALUE (active if != 0), # Arbitrarily squeeze or extend the size (height) of bars (not screen)
# BOTTOM_VALUE (below floor, active if != 0), # Not yet implemented.
# FLOOR_VALUE (default zero, )
# BAR_CHAR (default '|')
# FLOOR_CHAR (default '-' )
# WRITE_FLOOR
# USE_FLOOR
# WRITE_FLOOR_VALUE # If value == floor_value, then write value (mostly "0").
# WRITE_LEGEND (Prepend legend to each row.)
# LEGEND_HORIZONTAL_WIDTH,
# HORIZONTAL_WIDTH,
# WRITE_VALUE (YES = 1, NO = 0, default: no),
# WRITE_ALWAYS_OVER_VALUE (YES = 1, NO = 0, default: yes),
# WRITE_ALWAYS_UNDER_VALUE (YES = 1, NO = 0, default: yes),
# LEGEND_VALUES (pointer to array)
# USE_LEGEND_VALUES
# VALUES (the rest of parameter array)
# Note: Crashes if values contain only zeroes!
# Always create the legend first so you know which rows have which values!
# If user gives the legend values (parameter LEGEND_VALUES)
# and demands their use (parameter USE_LEGEND_VALUES),
# then all the better for you (no need to calculate the legend yourself).
# But only print the legend if user demands it (parameter WRITE_LEGEND).
sub MakeSimpleASCIIGraphV3 {
$::DBG->enter_sub();
my $parameter_tags = shift @_;
my $screen_height = 10;
if(exists $parameter_tags->{'screen_height'}) {
$screen_height = $parameter_tags->{'screen_height'};
}
$::DBG->debug('DEBUG', "Var \$screen_height=" . $screen_height . "\".\n");
my $roof_value = 0;
if(exists $parameter_tags->{'roof_value'}) {
$roof_value = $parameter_tags->{'roof_value'};
}
$::DBG->debug('DEBUG', "Var \$roof_value=" . $roof_value . "\".\n");
my $bottom_value = 0;
if(exists $parameter_tags->{'bottom_value'}) {
$roof_value = $parameter_tags->{'bottom_value'};
}
$::DBG->debug('DEBUG', "Var \$bottom_value=" . $bottom_value . "\".\n");
my $floor_value = 0;
if(exists $parameter_tags->{'floor_value'}) {
$roof_value = $parameter_tags->{'floor_value'};
}
$::DBG->debug('DEBUG', "Var \$floor_value=" . $floor_value . "\".\n");
my $write_floor = 0;
if(exists $parameter_tags->{'write_floor'}) {
$write_floor = $parameter_tags->{'write_floor'};
}
$::DBG->debug('DEBUG', "Var \$write_floor=" . $write_floor . "\".\n");
my $use_floor = 0;
if(exists $parameter_tags->{'use_floor'}) {
$use_floor = $parameter_tags->{'use_floor'};
}
$::DBG->debug('DEBUG', "Var \$use_floor=" . $use_floor . "\".\n");
my $write_floor_value = 0;
if(exists $parameter_tags->{'write_floor_value'}) {
$write_floor_value = $parameter_tags->{'write_floor_value'};
}
$::DBG->debug('DEBUG', "Var \$write_floor_value=" . $write_floor_value . "\".\n");
my $write_legend = 0;
if(exists $parameter_tags->{'write_legend'}) {
$write_legend = $parameter_tags->{'write_legend'};
}
$::DBG->debug('DEBUG', "Var \$write_legend=" . $write_legend . "\".\n");
my $legend_horizontal_width = 5;
if(exists $parameter_tags->{'legend_horizontal_width'}) {
$legend_horizontal_width = $parameter_tags->{'legend_horizontal_width'};
}
$::DBG->debug('DEBUG', "Var \$legend_horizontal_width=" . $legend_horizontal_width . "\".\n");
my $horizontal_width = 5;
if(exists $parameter_tags->{'horizontal_width'}) {
$horizontal_width = $parameter_tags->{'horizontal_width'};
}
$::DBG->debug('DEBUG', "Var \$horizontal_width=" . $horizontal_width . "\".\n");
my $write_value = 0;
if(exists $parameter_tags->{'write_value'}) {
$write_value = $parameter_tags->{'write_value'};
}
$::DBG->debug('DEBUG', "Var \$write_value=" . $write_value . "\".\n");
my $write_always_over_value = 0;
if(exists $parameter_tags->{'write_always_over_value'}) {
$write_always_over_value = $parameter_tags->{'write_always_over_value'};
}
$::DBG->debug('DEBUG', "Var \$write_always_over_value=" . $write_always_over_value . "\".\n");
my $write_always_under_value = 0;
if(exists $parameter_tags->{'write_always_under_value'}) {
$write_always_under_value = $parameter_tags->{'write_always_under_value'};
}
$::DBG->debug('DEBUG', "Var \$write_always_under_value=" . $write_always_under_value . "\".\n");
my $legend_values_p = 0;
if(exists $parameter_tags->{'legend_values'}) {
$legend_values_p = $parameter_tags->{'legend_values'};
}
$::DBG->debug('DEBUG', "Var \$legend_values_p=" . $legend_values_p . "\".\n");
my $use_legend_values = 0;
if(exists $parameter_tags->{'use_legend_values'}) {
$use_legend_values = $parameter_tags->{'use_legend_values'};
}
$::DBG->debug('DEBUG', "Var \$use_legend_values=" . $use_legend_values . "\".\n");
my $bar_char = "|";
if(exists $parameter_tags->{'bar_char'}) {
$bar_char = $parameter_tags->{'bar_char'};
}
$::DBG->debug('DEBUG', "Var \$bar_char=" . $bar_char . "\".\n");
my $floor_char = "-";
if(exists $parameter_tags->{'floor_char'}) {
$floor_char = $parameter_tags->{'floor_char'};
}
$::DBG->debug('DEBUG', "Var \$floor_char=" . $floor_char . "\".\n");
my @values = @_;
my @legend_values = ();
if($legend_values_p) {
foreach my $legend_value (@{$legend_values_p}) {
# $::DBG->debug('DEBUG', "Var \$legend_value=" . $legend_value . "\".\n");
push @legend_values, $legend_value
}
}
my $horizontal_width_empty = "";
for(my $i = $horizontal_width; $i > 0; $i--) {
$horizontal_width_empty .= " ";
}
my @output_rows;
# If user wants, write only the legend.
my $sprf_format = "\%-" . $legend_horizontal_width . "s";
$::DBG->debug('DEBUG', "Var \$sprf_format=" . $sprf_format . ".\n");
if($use_legend_values == 1) {
if(scalar(@legend_values) != $screen_height) {
croak("Screen height must be equal to number of legend values!");
}
@legend_values = sort {$a <=> $b} @legend_values; # Sort them to be sure
}
else {
my $highest_value = 0;
if($roof_value != 0) {
$highest_value = $roof_value;
}
else {
$::DBG->debug('DEBUG', "Find out the highest value.\n");
foreach my $value (@values) {
if($value > $highest_value) {
$highest_value = $value;
}
}
}
my $lowest_value = 0;
if($bottom_value != 0) {
$lowest_value = $bottom_value;
}
else {
$::DBG->debug('DEBUG', "Find out the lowest value.\n");
foreach my $value (@values) {
if($value < $lowest_value) {
$lowest_value = $value;
}
}
}
$::DBG->debug('DEBUG', "Var \$highest_value=" . $highest_value . ".\n");
my $rows_for_one = $screen_height / $highest_value;
$::DBG->debug('DEBUG', "Var \$rows_for_one=" . $rows_for_one . ".\n");
my $amount_per_row = $highest_value / $screen_height;
$::DBG->debug('DEBUG', "Var \$amount_per_row=" . $amount_per_row . ".\n");
# Make a legend based on lowest and highest value in @values
my $screen_top_row = $screen_height - 1;
my $screen_bottom_row = 0;
for(my $i_row = $screen_bottom_row; $i_row <= $screen_top_row; $i_row++) {
push @legend_values, (sprintf $sprf_format, int(($i_row + 1) * $amount_per_row + 0.5));
}
}
$::DBG->debug('DEBUG', sub {print "[DEBUG] Var \@legend_values=" . (join ":", @legend_values) . ".\n"});
if($write_legend == 1) {
for(my $i_row = $screen_height - 1; $i_row >= 0; $i_row--) {
#$output_rows[$i_row] .= $legend_values[$i_row];
#$output_rows[$i_row] .= CenterText($legend_values[$i_row], $legend_horizontal_width, " ", "right");
#$output_rows[$i_row] .= CenterText($bar_char, $horizontal_width, " ", "right");
$output_rows[$i_row] .= sprintf $sprf_format, int($legend_values[$i_row]);
$::DBG->debug('DEBUG', sub {$output_rows[$i_row] .= ".";});
}
}
# Now the values
# We write one pillar at a time: one value = one pillar!
# So, we write from left to right, one pillar at a time!
# We write the pillar starting from the bottom.
my $screen_top_row = $screen_height - 1;
my $screen_bottom_row = 0;
my $screen_floor_row = $screen_bottom_row;
if($use_floor == 1) {
for(my $i_legend_row = 0; $i_legend_row < @legend_values; $i_legend_row++) {
if($legend_values[$i_legend_row] == $floor_value) {
$screen_floor_row = $i_legend_row;
}
}
}
$::DBG->debug('DEBUG', "Var \$screen_floor_row=" . $screen_floor_row . ".\n");
foreach my $value (@values) {
$::DBG->debug('DEBUG', "Var \$value=" . $value . ".\n");
for(my $i_row = $screen_bottom_row; $i_row <= $screen_top_row; $i_row++) {
if($value != $floor_value) { # If value == 0, just write spaces. TODO
#$::DBG->debug('DEBUG', "Var \$i_row=" . $i_row . ".\n");
if($i_row == $screen_bottom_row) { # Bottom row
$::DBG->debug('DEBUG', "Screen Bottom row.\n");
if($i_row < $screen_floor_row) {
$::DBG->debug('DEBUG', 'Var $i_row < $screen_floor_row' . ":". $i_row ."<". $screen_floor_row . ".\n");
if($value > $legend_values[$i_row]) { # Write empty space
$::DBG->debug('DEBUG', 'Var $value > $legend_values[$i_row] && $value < $floor_value' . ":". $value .">". $legend_values[$i_row] . "&&" . $value ."<". $floor_value . ".\n");
$output_rows[$i_row] .= $horizontal_width_empty;
}
elsif($value <= $legend_values[$i_row]) { # Write value
$::DBG->debug('DEBUG', '$value <= $legend_values[$i_row]' . ":". $value ."<=". $legend_values[$i_row] . ".\n");
$output_rows[$i_row] .= CenterText($write_value ? $value : $bar_char, $horizontal_width, " ", "right");
}
else {
$::DBG->debug('DEBUG', "Control has entered an if clause which is undefined. Line " . __LINE__ . "\".\n");
}
}
elsif($i_row >= $screen_floor_row) {
$::DBG->debug('DEBUG', 'Var $i_row > $screen_floor_row' . ":". $i_row .">". $screen_floor_row . ".\n");
if($value >= $legend_values[$i_row + 1]) { # Write bar char
$::DBG->debug('DEBUG', 'Var $value >= $legend_values[\$i_row + 1]' . ":". $value .">=". $legend_values[$i_row + 1] . ".\n");
$output_rows[$i_row] .= CenterText($bar_char, $horizontal_width, " ", "right");
}
elsif($value >= $legend_values[$i_row] && $value < $legend_values[$i_row + 1]) { # Write value
$::DBG->debug('DEBUG', '$value >= $legend_values[$i_row - 1] && $value < $legend_values[$i_row]' . ":". $value .">=". $legend_values[$i_row - 1] ."&&". $value ."<". $legend_values[$i_row] . ".\n");
$output_rows[$i_row] .= CenterText($write_value ? $value : $bar_char, $horizontal_width, " ", "right");
}
elsif($value < $legend_values[$i_row] && $value >= $floor_value) { # Write value maybe
$::DBG->debug('DEBUG', 'Var $value < $legend_values[\$i_row] && $value >= $floor_value' . ":". $value ."<". $legend_values[$i_row] ."&&". $value .">=". $floor_value . ".\n");
$output_rows[$i_row] .= CenterText(
$write_always_under_value ? $value : '',
$horizontal_width, " ", "right");
}
elsif($value < $legend_values[$i_row] && $value < $floor_value) { # Write value
$::DBG->debug('DEBUG', 'Var $value < $legend_values[\$i_row] && $value >= $floor_value' . ":". $value ."<". $legend_values[$i_row] ."&&". $value .">=". $floor_value . ".\n");
$output_rows[$i_row] .= CenterText($write_value ? $value : $bar_char, $horizontal_width, " ", "right");
}
else {
$::DBG->debug('DEBUG', "Control has entered an if clause which is undefined. Line " . __LINE__ . "\".\n");
}
}
else {
$::DBG->debug('DEBUG', "Control has entered an if clause which is undefined. Line " . __LINE__ . "\".\n");
}
}
# (Possible) middle rows (floor down)
elsif($i_row < $screen_floor_row && $i_row > $screen_bottom_row) {
$::DBG->debug('DEBUG', "Screen Middle row (floor down).\n");
if($value <= $legend_values[$i_row - 1]) { # Write bar char
$::DBG->debug('DEBUG', 'Var $value <= $legend_values[\$i_row + 1]' . ":". $value ."<=". $legend_values[$i_row + 1] . ".\n");
$output_rows[$i_row] .= CenterText($bar_char, $horizontal_width, " ", "right");
}
elsif($value <= $legend_values[$i_row] && $value > $legend_values[$i_row - 1]) { # Write value
$::DBG->debug('DEBUG', '$value <= $legend_values[$i_row - 1] && $value > $legend_values[$i_row]' . ":". $value ."<=". $legend_values[$i_row - 1] ."&&". $value .">". $legend_values[$i_row] . ".\n");
$output_rows[$i_row] .= CenterText($write_value ? $value : $bar_char, $horizontal_width, " ", "right");
}
elsif($value > $legend_values[$i_row]) { # Write white space
$::DBG->debug('DEBUG', 'Var $value > $legend_values[\$i_row]' . ":". $value .">". $legend_values[$i_row] . ".\n");
$output_rows[$i_row] .= $horizontal_width_empty;
}
else {
$::DBG->debug('DEBUG', "Control has entered an if clause which is undefined. Line " . __LINE__ . "\".\n");
}
}
# Floor row
elsif($i_row == $screen_floor_row) {
$::DBG->debug('DEBUG', "Screen Middle row (floor up).\n");
if($write_floor == 1) {
$output_rows[$i_row] .= CenterText('-', $horizontal_width, "-", "right");
}
else {
if($value > $legend_values[$i_row - 1] && $value < $legend_values[$i_row + 1]) { # Write value
$::DBG->debug('DEBUG', '$value >= $legend_values[$i_row - 1] && $value < $legend_values[$i_row]' . ":". $value .">=". $legend_values[$i_row - 1] ."&&". $value ."<". $legend_values[$i_row] . ".\n");
$output_rows[$i_row] .= CenterText($write_value ? $value : $bar_char, $horizontal_width, " ", "right");
}
else { # Write bar char
$::DBG->debug('DEBUG', 'Var $value >= $legend_values[\$i_row + 1]' . ":". $value .">=". $legend_values[$i_row + 1] . ".\n");
$output_rows[$i_row] .= CenterText($bar_char, $horizontal_width, " ", "right");
}
}
}
# (Possible) middle rows (floor up)
elsif($i_row > $screen_floor_row && $i_row < $screen_top_row) {
$::DBG->debug('DEBUG', "Screen Middle row (floor up).\n");
if($value >= $legend_values[$i_row + 1]) { # Write bar char
$::DBG->debug('DEBUG', 'Var $value >= $legend_values[\$i_row + 1]' . ":". $value .">=". $legend_values[$i_row + 1] . ".\n");
$output_rows[$i_row] .= CenterText($bar_char, $horizontal_width, " ", "right");
}
elsif($value >= $legend_values[$i_row] && $value < $legend_values[$i_row + 1]) { # Write value
$::DBG->debug('DEBUG', '$value >= $legend_values[$i_row - 1] && $value < $legend_values[$i_row]' . ":". $value .">=". $legend_values[$i_row - 1] ."&&". $value ."<". $legend_values[$i_row] . ".\n");
$output_rows[$i_row] .= CenterText($write_value ? $value : $bar_char, $horizontal_width, " ", "right");
}
elsif($value < $legend_values[$i_row]) { # Write white space
$::DBG->debug('DEBUG', 'Var $value < $legend_values[\$i_row]' . ":". $value ."<". $legend_values[$i_row] . ".\n");
$output_rows[$i_row] .= $horizontal_width_empty;
}
else {
$::DBG->debug('DEBUG', "Control has entered an if clause which is undefined. Line " . __LINE__ . "\".\n");
}
}
# Top row, here value is only >= or debug('DEBUG', "Screen Top row.\n");
if($value >= $legend_values[$i_row]) { # Write value or bar char
$::DBG->debug('DEBUG', 'Var $value >= $legend_values[\$i_row]' . ":". $value .">=". $legend_values[$i_row] . ".\n");
$output_rows[$i_row] .= CenterText(
$write_always_over_value ? $value : ($write_value ? $value : $bar_char),
$horizontal_width, " ", "right");
}
elsif($value < $legend_values[$i_row]) { # Write white space
$::DBG->debug('DEBUG', 'Var $value < $legend_values[\$i_row] && $value >= $floor_value' . ":". $value ."<". $legend_values[$i_row] ."&&". $value .">=". $floor_value . ".\n");
$output_rows[$i_row] .= $horizontal_width_empty;
}
else {
$::DBG->debug('DEBUG', "Control has entered an if clause which is undefined. Line " . __LINE__ . "\".\n");
}
}
else {
$::DBG->debug('DEBUG', "Control has entered an if clause which is undefined. Line " . __LINE__ . "\".\n");
}
}
else { # $value == $floor_value
if($floor_value == $legend_values[$i_row]) { # This is the floor row, the "0" row.
if($write_floor_value == 1) {
$output_rows[$i_row] .= CenterText($value, $horizontal_width, " ", "right");
}
elsif($write_floor) {
$output_rows[$i_row] .= CenterText($floor_char, $horizontal_width, " ", "right");
}
else {
$output_rows[$i_row] .= $horizontal_width_empty;
}
}
else {
$output_rows[$i_row] .= $horizontal_width_empty;
}
}
}
}
# Now we have to flip the order!
my @reversed_rows;
for(my $i = $screen_height - 1; $i >= 0; $i--) {
push(@reversed_rows, $output_rows[$i]);
}
@output_rows = @reversed_rows;
$::DBG->exit_sub(@output_rows);
return @output_rows;
}
=head1 BUGS
=cut
=head1 AUTHOR
Mikko Koivunalho
=cut
=head1 OWNER
Copyright (C) Mikko Koivunalho
=head1 CHANGES
=cut
|
Copyright © Mikko Johannes Koivunalho 2008-2010 |
This page last updated or changed 14.01.2010. |