correction

master
Philippe Pittoli 2013-10-29 01:15:42 +01:00
parent 87b2b9f9e6
commit a13f18f867
2 changed files with 91 additions and 65 deletions

153
perl/antipixel/MyWrapper.pm Normal file → Executable file
View File

@ -1,3 +1,5 @@
#!/usr/bin/env perl
package MyWrapper; package MyWrapper;
use GD; use GD;
use strict; use strict;
@ -8,67 +10,80 @@ use MooX::Options;
has qw[couleurs is ro builder _build_colors]; has qw[couleurs is ro builder _build_colors];
option distance_entre_mots => ( is => 'rw', option distance_entre_mots => ( is => 'rw'
doc => 'distance en pixels de chaque mot du message', , doc => 'distance en pixels de chaque mot du message'
short => 'dem', , short => 'dem'
format => 'i', default => sub { 5 } , format => 'i', default => 5
); );
option extends => ( is => 'rw',
doc => 'si la taille du message est importante, on peut agrandir le cadre à volonté', option etendu => (is => 'rw'
short => 'ext' , doc => 'si la taille du message est importante, on peut agrandir le cadre à volonté'
); , short => 'ext'
option progress_bar => ( is => 'rw', );
doc => 'si vous souhaitez utiliser le script pour gérer une barre de progression, il faut indiquer un pourcentage',
format => 'i', short => 'pb' option progress_bar => ( is => 'rw'
); , doc => 'si vous souhaitez utiliser le script pour gérer une barre de progression, il faut indiquer un pourcentage'
option debug => ( is => 'rw', , format => 'i', short => 'pb'
doc => 'si vous souhaitez utiliser le script pour gérer une barre de progression', );
short => 'd'
); option debug => ( is => 'rw'
option couleurs_dispo => ( is => 'rw', , doc => 'si vous souhaitez utiliser le script pour gérer une barre de progression'
doc => 'affiche les couleurs disponibles', , short => 'd'
short => 'cd' );
);
option output => ( is => 'rw', option couleurs_dispo => ( is => 'rw'
doc => 'fichier généré : fichier image (ex: image.png)', , doc => 'affiche les couleurs disponibles'
short => 'o', , short => 'cd'
format => 's', default => sub { 'image.png' } );
);
option message => ( is => 'rw', option output => ( is => 'rw'
doc => 'message', , doc => 'fichier généré : fichier image (ex: image.png)'
short => 'm', , short => 'o'
format => 's', default => sub { 'message à afficher' } , format => 's', default => 'image.png'
); );
option couleur_externe => ( is => 'rw',
doc => 'couleur externe', option message => ( is => 'rw'
short => 'ce', , doc => 'message'
format => 's', default => sub { 'bleu' } , short => 'm'
); , format => 's', default => 'message à afficher'
option couleur_contour => ( is => 'rw', );
doc => 'couleur contour',
short => 'cc', option couleur_externe => ( is => 'rw'
format => 's', default => sub { 'noir' } , doc => 'couleur externe'
); , short => 'ce'
option couleur_interne => ( is => 'rw', , format => 's', default => 'bleu'
doc => 'couleur interne', );
short => 'ci',
format => 's', default => sub { 'rouge' } option couleur_contour => ( is => 'rw'
); , doc => 'couleur contour'
option couleur_background => ( is => 'rw' , , short => 'cc'
doc => 'couleur du fond (écriture)', , format => 's', default => 'noir'
short => 'cb', );
format => 's', default => sub { 'noir' }
); option couleur_interne => ( is => 'rw'
option taille_x => ( is => 'rw', , doc => 'couleur interne'
doc => 'taille X', format => 'i', , short => 'ci'
short => 'x', , format => 's', default => 'rouge'
default => sub { 150 } );
);
option taille_y => ( is => 'rw', option couleur_background => ( is => 'rw'
doc => 'taille Y', format => 'i', , doc => 'couleur du fond (écriture)'
short => 'y', , short => 'cb'
default => sub { 30 } , format => 's', default => sub { 'noir' }
); );
option taille_x => ( is => 'rw'
, doc => 'taille X', format => 'i'
, short => 'x'
, default => sub { 150 }
);
option taille_y => ( is => 'rw'
, doc => 'taille Y', format => 'i'
, short => 'y'
, default => sub { 30 }
);
sub _build_colors { sub _build_colors {
{ {
bleu => [0, 0, 255], bleu => [0, 0, 255],
@ -84,6 +99,7 @@ sub _build_colors {
blanc => [255, 255, 255] blanc => [255, 255, 255]
}; };
} }
sub afficher_couleurs { sub afficher_couleurs {
my ($self) = @_; my ($self) = @_;
my %couleurs = %{$self->couleurs}; my %couleurs = %{$self->couleurs};
@ -93,10 +109,11 @@ sub afficher_couleurs {
say "La couleur $key est : " . join(', ' , @$value); say "La couleur $key est : " . join(', ' , @$value);
} }
} }
sub afficher_valeurs_actuelles { sub afficher_valeurs_actuelles {
my ($self) = @_; my ($self) = @_;
say "Message : " . $self->message; say "Message : " . $self->message;
say "Peut être étendu" if $self->extends; say "Peut être étendu" if $self->etendu;
say "Output file : " . $self->output; say "Output file : " . $self->output;
say "Distance entre mots : " . $self->distance_entre_mots; say "Distance entre mots : " . $self->distance_entre_mots;
say "couleur_interne : " . $self->couleur_interne; say "couleur_interne : " . $self->couleur_interne;
@ -107,19 +124,22 @@ sub afficher_valeurs_actuelles {
say "taille_y : " . $self->taille_y; say "taille_y : " . $self->taille_y;
say "taille_x calculée: " . $self->calcul_taille_x; say "taille_x calculée: " . $self->calcul_taille_x;
} }
sub calcul_taille_x { sub calcul_taille_x {
my ($self) = @_; my ($self) = @_;
my $taille_x = $self->taille_x; my $taille_x = $self->taille_x;
my @mots = split / /, $self->message; my @mots = split / /, $self->message;
if( $self->extends ) { if( $self->etendu ) {
$taille_x += 3 * length $_ for( @mots ) ; $taille_x += 3 * length $_ for( @mots ) ;
} }
return $taille_x; return $taille_x;
} }
sub calcul_taille_y { sub calcul_taille_y {
my ($self) = @_; my ($self) = @_;
return $self->taille_y; return $self->taille_y;
} }
sub enregistrement_image { sub enregistrement_image {
my ($self, $im) = @_; my ($self, $im) = @_;
# We record the image file # We record the image file
@ -128,6 +148,7 @@ sub enregistrement_image {
print DISPLAY $im->png; print DISPLAY $im->png;
close DISPLAY; close DISPLAY;
} }
sub allocation_des_couleurs { sub allocation_des_couleurs {
my ($self, $im) = @_; my ($self, $im) = @_;
@ -141,18 +162,21 @@ sub allocation_des_couleurs {
} }
return %couleurs_allouees ; return %couleurs_allouees ;
} }
sub options_sortie_image { sub options_sortie_image {
my ($self, $im) = @_; my ($self, $im) = @_;
# make the background transparent and interlaced # make the background transparent and interlaced
#$im->transparent($couleurs_allouees{'blanc'}); #$im->transparent($couleurs_allouees{'blanc'});
$im->interlaced('true'); $im->interlaced('true');
} }
sub do_progress_bar{ sub do_progress_bar{
my ($self, $im, $couleurs_allouees, $x, $y) = @_; my ($self, $im, $couleurs_allouees, $x, $y) = @_;
my $taille_progress_bar = $self->progress_bar * ($x - 1) / 100; my $taille_progress_bar = $self->progress_bar * ($x - 1) / 100;
my %couleurs_allouees = %$couleurs_allouees; my %couleurs_allouees = %$couleurs_allouees;
$im->filledRectangle(2, 2, $taille_progress_bar, $y -3, $couleurs_allouees{$self->couleur_interne}); $im->filledRectangle(2, 2, $taille_progress_bar, $y -3, $couleurs_allouees{$self->couleur_interne});
} }
sub do_antipixel_button { sub do_antipixel_button {
my ($self, $im, $couleurs_allouees, $mots, $x, $y) = @_; my ($self, $im, $couleurs_allouees, $mots, $x, $y) = @_;
my %couleurs_allouees = %$couleurs_allouees; my %couleurs_allouees = %$couleurs_allouees;
@ -164,6 +188,7 @@ sub do_antipixel_button {
$current_position += length($i) * 6 + 15; $current_position += length($i) * 6 + 15;
} }
} }
sub do_img { sub do_img {
my ($self) = @_; my ($self) = @_;
my @mots = split / /, $self->message; my @mots = split / /, $self->message;
@ -185,12 +210,14 @@ sub do_img {
$self->enregistrement_image( $im ); $self->enregistrement_image( $im );
} }
sub mode_debug { sub mode_debug {
my ($self) = @_; my ($self) = @_;
say "ENTER DEBUG MODE"; say "ENTER DEBUG MODE";
$self->afficher_valeurs_actuelles unless $self->couleurs_dispo; $self->afficher_valeurs_actuelles unless $self->couleurs_dispo;
$self->afficher_couleurs if $self->couleurs_dispo; $self->afficher_couleurs if $self->couleurs_dispo;
} }
sub run { sub run {
my ($self) = @_; my ($self) = @_;
$self->mode_debug if $self->debug; $self->mode_debug if $self->debug;

View File

@ -3,6 +3,5 @@ use strict;
use warnings; use warnings;
use MyWrapper; use MyWrapper;
my $wrapper = MyWrapper->new_with_options(); my $wrapper = MyWrapper->new_with_options();
#$wrapper->tests(); #$wrapper->afficher_valeurs_actuelles;
$wrapper->run(); $wrapper->run();