diff --git a/perl/antipixel/MyWrapper.pm b/perl/antipixel/MyWrapper.pm index 7cafd60..74eefa7 100644 --- a/perl/antipixel/MyWrapper.pm +++ b/perl/antipixel/MyWrapper.pm @@ -8,6 +8,16 @@ use MooX::Options; has couleurs => ( is => 'ro', builder => '_build_colors' ); +option distance_entre_mots => ( is => 'rw', + doc => 'distance en pixels de chaque mot du message', + short => 'dem', + format => 'i', default => sub { 5 } + ); +option output => ( is => 'rw', + doc => 'fichier généré : fichier image (ex: image.png)', + short => 'o', + format => 's', default => sub { 'image.png' } + ); option message => ( is => 'rw', doc => 'message', short => 'm', @@ -18,6 +28,11 @@ option couleur_externe => ( is => 'rw', short => 'ce', format => 's', default => sub { 'bleu' } ); +option couleur_contour => ( is => 'rw', + doc => 'couleur contour', + short => 'cc', + format => 's', default => sub { 'noir' } + ); option couleur_interne => ( is => 'rw', doc => 'couleur interne', short => 'ci', @@ -60,6 +75,7 @@ sub afficher_couleurs { sub afficher_valeurs_actuelles { my ($self) = @_; say "Message : " . $self->message; + say "Distance entre mots : " . $self->distance_entre_mots; say "couleur_interne : " . $self->couleur_interne; say "couleur_externe : " . $self->couleur_externe; say "couleur_background : " . $self->couleur_background; @@ -70,14 +86,47 @@ sub tests { my ($self) = @_; my %couleurs = %{$self->couleurs}; - say "message : " . $self->message; say "couleur_externe : " . $self->couleur_externe; say "Cette couleur n'existe pas !" unless exists $couleurs{$self->couleur_externe}; } sub run { my $self = shift; #$self->afficher_couleurs ; - $self->afficher_valeurs_actuelles; + #$self->afficher_valeurs_actuelles; + my %couleurs = %{$self->couleurs}; + my %couleurs_allouee; + + my @mots = split / /, $self->message; + my $x = $self->taille_x; + my $y = $self->taille_y; + my $intersection = $x - 30; + +# create a new image + my $im = new GD::Image($x,$y); + +# allocate some colors + while( my ($key , $value) = each %couleurs) + { + #say "La couleur $key est : " . join(', ' , @$value); + $couleurs_allouee{$key} = $im->colorAllocate($$value[0], $$value[1], $$value[2]); + } +# make the background transparent and interlaced +#$im->transparent($couleurs_allouee{'blanc'}); + $im->interlaced('true'); + +# Put a frame around the picture + $im->rectangle(0, 0, $x -1, $y -1, $couleurs_allouee{$self->couleur_contour}); +# Put the background color + $im->filledRectangle(1, 1, $x -2, $y -2, $couleurs_allouee{$self->couleur_background}); + +# We add the word cases + $im->filledRectangle(2, 2, $intersection - $self->distance_entre_mots, $y -3, $couleurs_allouee{$self->couleur_interne}); + +# make sure we are writing to a binary stream + binmode STDOUT; + +# Convert the image to PNG and print it on standard output + print $im->png; } 1;