Progress Bar enabled \!
parent
242837e1ff
commit
7ef776a887
|
@ -2,7 +2,7 @@ package MyWrapper;
|
||||||
use GD;
|
use GD;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use 5.14.2;
|
use v5.14;
|
||||||
use Moo;
|
use Moo;
|
||||||
use MooX::Options;
|
use MooX::Options;
|
||||||
|
|
||||||
|
@ -13,6 +13,22 @@ option distance_entre_mots => ( is => 'rw',
|
||||||
short => 'dem',
|
short => 'dem',
|
||||||
format => 'i', default => sub { 5 }
|
format => 'i', default => sub { 5 }
|
||||||
);
|
);
|
||||||
|
option extends => ( is => 'rw',
|
||||||
|
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 debug => ( is => 'rw',
|
||||||
|
doc => 'si vous souhaitez utiliser le script pour gérer une barre de progression',
|
||||||
|
short => 'd'
|
||||||
|
);
|
||||||
|
option couleurs_dispo => ( is => 'rw',
|
||||||
|
doc => 'affiche les couleurs disponibles',
|
||||||
|
short => 'cd'
|
||||||
|
);
|
||||||
option output => ( is => 'rw',
|
option output => ( is => 'rw',
|
||||||
doc => 'fichier généré : fichier image (ex: image.png)',
|
doc => 'fichier généré : fichier image (ex: image.png)',
|
||||||
short => 'o',
|
short => 'o',
|
||||||
|
@ -36,7 +52,7 @@ option couleur_contour => ( is => 'rw',
|
||||||
option couleur_interne => ( is => 'rw',
|
option couleur_interne => ( is => 'rw',
|
||||||
doc => 'couleur interne',
|
doc => 'couleur interne',
|
||||||
short => 'ci',
|
short => 'ci',
|
||||||
format => 's', default => sub { 'blanc' }
|
format => 's', default => sub { 'rouge' }
|
||||||
);
|
);
|
||||||
option couleur_background => ( is => 'rw' ,
|
option couleur_background => ( is => 'rw' ,
|
||||||
doc => 'couleur du fond (écriture)',
|
doc => 'couleur du fond (écriture)',
|
||||||
|
@ -51,7 +67,7 @@ option taille_x => ( is => 'rw',
|
||||||
option taille_y => ( is => 'rw',
|
option taille_y => ( is => 'rw',
|
||||||
doc => 'taille Y', format => 'i',
|
doc => 'taille Y', format => 'i',
|
||||||
short => 'y',
|
short => 'y',
|
||||||
default => sub { 50 }
|
default => sub { 30 }
|
||||||
);
|
);
|
||||||
sub _build_colors {
|
sub _build_colors {
|
||||||
{
|
{
|
||||||
|
@ -75,31 +91,47 @@ sub afficher_couleurs {
|
||||||
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 "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;
|
||||||
say "couleur_externe : " . $self->couleur_externe;
|
say "couleur_externe : " . $self->couleur_externe;
|
||||||
say "couleur_background : " . $self->couleur_background;
|
say "couleur_background : " . $self->couleur_background;
|
||||||
say "taille_x : " . $self->taille_x;
|
say "taille_x : " . $self->taille_x;
|
||||||
say "taille_y : " . $self->taille_y;
|
say "taille_y : " . $self->taille_y;
|
||||||
|
say "taille_x calculée: " . $self->calcul_taille_x;
|
||||||
}
|
}
|
||||||
sub tests {
|
sub calcul_taille_x {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
my %couleurs = %{$self->couleurs};
|
my $taille_x = $self->taille_x;
|
||||||
|
my @mots = split / /, $self->message;
|
||||||
say "couleur_externe : " . $self->couleur_externe;
|
if( $self->extends ) {
|
||||||
say "Cette couleur n'existe pas !" unless exists $couleurs{$self->couleur_externe};
|
$taille_x += length $_ for( @mots ) ;
|
||||||
}
|
}
|
||||||
sub run {
|
return $taille_x;
|
||||||
my $self = shift;
|
}
|
||||||
#$self->afficher_couleurs ;
|
sub calcul_taille_y {
|
||||||
#$self->afficher_valeurs_actuelles;
|
my ($self) = @_;
|
||||||
|
return $self->taille_y;
|
||||||
|
}
|
||||||
|
sub enregistrement_image {
|
||||||
|
my ($self, $im) = @_;
|
||||||
|
# We record the image file
|
||||||
|
open (DISPLAY,"> " . $self->output ) || die;
|
||||||
|
binmode DISPLAY;
|
||||||
|
print DISPLAY $im->png;
|
||||||
|
close DISPLAY;
|
||||||
|
}
|
||||||
|
sub do_img {
|
||||||
|
my ($self) = @_;
|
||||||
my %couleurs = %{$self->couleurs};
|
my %couleurs = %{$self->couleurs};
|
||||||
my %couleurs_allouee;
|
my %couleurs_allouee;
|
||||||
|
|
||||||
my @mots = split / /, $self->message;
|
my @mots = split / /, $self->message;
|
||||||
my $x = $self->taille_x;
|
my $x = $self->calcul_taille_x;
|
||||||
my $y = $self->taille_y;
|
my $y = $self->calcul_taille_y;
|
||||||
my $intersection = $x -30;
|
my $intersection = $x -30;
|
||||||
|
my $taille_progress_bar = $self->progress_bar * ($x - 1) / 100;
|
||||||
|
|
||||||
# create a new image
|
# create a new image
|
||||||
my $im = new GD::Image($x,$y);
|
my $im = new GD::Image($x,$y);
|
||||||
|
@ -113,20 +145,23 @@ sub run {
|
||||||
# make the background transparent and interlaced
|
# make the background transparent and interlaced
|
||||||
#$im->transparent($couleurs_allouee{'blanc'});
|
#$im->transparent($couleurs_allouee{'blanc'});
|
||||||
$im->interlaced('true');
|
$im->interlaced('true');
|
||||||
|
|
||||||
# Put a frame around the picture
|
|
||||||
$im->rectangle(0, 0, $x -1, $y -1, $couleurs_allouee{$self->couleur_contour});
|
$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});
|
$im->filledRectangle(1, 1, $x -2, $y -2, $couleurs_allouee{$self->couleur_background});
|
||||||
|
|
||||||
# We add the word cases
|
$im->filledRectangle(2, 2, $taille_progress_bar, $y -3, $couleurs_allouee{$self->couleur_interne});
|
||||||
$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
|
$self->enregistrement_image( $im );
|
||||||
binmode STDOUT;
|
}
|
||||||
|
sub mode_debug {
|
||||||
# Convert the image to PNG and print it on standard output
|
my ($self) = @_;
|
||||||
print $im->png;
|
say "ENTER DEBUG MODE";
|
||||||
|
$self->afficher_valeurs_actuelles unless $self->couleurs_dispo;
|
||||||
|
$self->afficher_couleurs if $self->couleurs_dispo;
|
||||||
|
}
|
||||||
|
sub run {
|
||||||
|
my ($self) = @_;
|
||||||
|
$self->mode_debug if $self->debug;
|
||||||
|
$self->do_img unless $self->debug;
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
Loading…
Reference in New Issue