package App::Asciio;
$|++ ;
use strict;
use warnings;
#-----------------------------------------------------------------------------
sub transform_elements_to_ascii_buffer
{
my ($self, @elements) = @_ ;
return(join("\n", $self->transform_elements_to_ascii_array(@elements)) . "\n") ;
}
#-----------------------------------------------------------------------------
sub transform_elements_to_ascii_array
{
my ($self, @elements) = @_ ;
@elements = @{$self->{ELEMENTS}} unless @elements ;
my @lines ;
for my $element (@elements)
{
for my $strip ($element->get_mask_and_element_stripes())
{
my $line_index = 0 ;
for my $sub_strip (split("\n", $strip->{TEXT}))
{
my $character_index = 0 ;
for my $character (split '', $sub_strip)
{
my $x = $element->{X} + $strip->{X_OFFSET} + $character_index ;
my $y = $element->{Y} + $strip->{Y_OFFSET} + $line_index ;
$lines[$y][$x] = $character if ($x >= 0 && $y >= 0) ;
$character_index ++ ;
}
$line_index++ ;
}
}
}
my @ascii;
for my $line (@lines)
{
my $ascii_line = join('', map {defined $_ ? $_ : ' '} @{$line}) ;
push @ascii, $ascii_line;
}
return(@ascii) ;
}
#-----------------------------------------------------------------------------
1 ;