From a13f18f867230a881d7405d0cf51c20dc643df7a Mon Sep 17 00:00:00 2001 From: Philippe Pittoli Date: Tue, 29 Oct 2013 01:15:42 +0100 Subject: [PATCH] correction --- perl/antipixel/MyWrapper.pm | 153 +++++++++++++++++++++--------------- perl/antipixel/antipixel.pl | 3 +- 2 files changed, 91 insertions(+), 65 deletions(-) mode change 100644 => 100755 perl/antipixel/MyWrapper.pm diff --git a/perl/antipixel/MyWrapper.pm b/perl/antipixel/MyWrapper.pm old mode 100644 new mode 100755 index 2738d69..5f83dc1 --- a/perl/antipixel/MyWrapper.pm +++ b/perl/antipixel/MyWrapper.pm @@ -1,3 +1,5 @@ +#!/usr/bin/env perl + package MyWrapper; use GD; use strict; @@ -8,67 +10,80 @@ use MooX::Options; has qw[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 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', - 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', - format => 's', default => sub { 'message à afficher' } - ); -option couleur_externe => ( is => 'rw', - doc => 'couleur externe', - 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', - format => 's', default => sub { 'rouge' } - ); -option couleur_background => ( is => 'rw' , - doc => 'couleur du fond (écriture)', - short => 'cb', - 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 } - ); +option distance_entre_mots => ( is => 'rw' + , doc => 'distance en pixels de chaque mot du message' + , short => 'dem' + , format => 'i', default => 5 +); + +option etendu => (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' + , doc => 'fichier généré : fichier image (ex: image.png)' + , short => 'o' + , format => 's', default => 'image.png' +); + +option message => ( is => 'rw' + , doc => 'message' + , short => 'm' + , format => 's', default => 'message à afficher' +); + +option couleur_externe => ( is => 'rw' + , doc => 'couleur externe' + , short => 'ce' + , format => 's', default => 'bleu' +); + +option couleur_contour => ( is => 'rw' + , doc => 'couleur contour' + , short => 'cc' + , format => 's', default => 'noir' +); + +option couleur_interne => ( is => 'rw' + , doc => 'couleur interne' + , short => 'ci' + , format => 's', default => 'rouge' +); + +option couleur_background => ( is => 'rw' + , doc => 'couleur du fond (écriture)' + , short => 'cb' + , 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 { { bleu => [0, 0, 255], @@ -84,6 +99,7 @@ sub _build_colors { blanc => [255, 255, 255] }; } + sub afficher_couleurs { my ($self) = @_; my %couleurs = %{$self->couleurs}; @@ -93,10 +109,11 @@ sub afficher_couleurs { say "La couleur $key est : " . join(', ' , @$value); } } + sub afficher_valeurs_actuelles { my ($self) = @_; say "Message : " . $self->message; - say "Peut être étendu" if $self->extends; + say "Peut être étendu" if $self->etendu; say "Output file : " . $self->output; say "Distance entre mots : " . $self->distance_entre_mots; say "couleur_interne : " . $self->couleur_interne; @@ -107,19 +124,22 @@ sub afficher_valeurs_actuelles { say "taille_y : " . $self->taille_y; say "taille_x calculée: " . $self->calcul_taille_x; } + sub calcul_taille_x { my ($self) = @_; my $taille_x = $self->taille_x; my @mots = split / /, $self->message; - if( $self->extends ) { + if( $self->etendu ) { $taille_x += 3 * length $_ for( @mots ) ; } return $taille_x; } + sub calcul_taille_y { my ($self) = @_; return $self->taille_y; } + sub enregistrement_image { my ($self, $im) = @_; # We record the image file @@ -128,6 +148,7 @@ sub enregistrement_image { print DISPLAY $im->png; close DISPLAY; } + sub allocation_des_couleurs { my ($self, $im) = @_; @@ -141,18 +162,21 @@ sub allocation_des_couleurs { } return %couleurs_allouees ; } + sub options_sortie_image { my ($self, $im) = @_; # make the background transparent and interlaced #$im->transparent($couleurs_allouees{'blanc'}); $im->interlaced('true'); } + sub do_progress_bar{ my ($self, $im, $couleurs_allouees, $x, $y) = @_; my $taille_progress_bar = $self->progress_bar * ($x - 1) / 100; my %couleurs_allouees = %$couleurs_allouees; $im->filledRectangle(2, 2, $taille_progress_bar, $y -3, $couleurs_allouees{$self->couleur_interne}); } + sub do_antipixel_button { my ($self, $im, $couleurs_allouees, $mots, $x, $y) = @_; my %couleurs_allouees = %$couleurs_allouees; @@ -164,6 +188,7 @@ sub do_antipixel_button { $current_position += length($i) * 6 + 15; } } + sub do_img { my ($self) = @_; my @mots = split / /, $self->message; @@ -185,12 +210,14 @@ sub do_img { $self->enregistrement_image( $im ); } + sub mode_debug { my ($self) = @_; 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; diff --git a/perl/antipixel/antipixel.pl b/perl/antipixel/antipixel.pl index 1c913b3..98a6ed6 100755 --- a/perl/antipixel/antipixel.pl +++ b/perl/antipixel/antipixel.pl @@ -3,6 +3,5 @@ use strict; use warnings; use MyWrapper; my $wrapper = MyWrapper->new_with_options(); -#$wrapper->tests(); +#$wrapper->afficher_valeurs_actuelles; $wrapper->run(); -