[gimp-perl] Gallery changes and some defaults modifications



commit b5b6cb896bb1b168ad8adaf48470abf179a836ea
Author: Michele <michele gherlone liceoberchet it>
Date:   Mon Jun 16 22:38:21 2014 +0200

    Gallery changes and some defaults modifications
    
    Signed-off-by: Ed J <edj src gnome org>

 examples/gallery |  182 ++++++++++++++++++++++++++----------------------------
 1 files changed, 87 insertions(+), 95 deletions(-)
---
diff --git a/examples/gallery b/examples/gallery
index c05d198..42f8d8c 100755
--- a/examples/gallery
+++ b/examples/gallery
@@ -1,13 +1,14 @@
 #!/usr/bin/perl -w
 
-use Gimp qw(:auto __ N_);
+use Gimp;
 use Gimp::Fu;
 use Gimp::Util;
+use IO::All;
 use strict;
 use warnings;
 
 sub printHeader {
-  my ($rf,$gf,$bf,$r,$g,$b, $htmlFile,$gallerytitle)= _;
+  my ($rf, $gf, $bf, $r, $g, $b, $htmlFile, $gallerytitle) = @_;
   printf $htmlFile "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">";
   printf $htmlFile "<body bgcolor='#%x%x%x'>\n",$r,$g,$b;
   printf $htmlFile "<center><font face=\"verdana,arial\" size=\"5\" color=\"#%x%x%x\">",$rf,$gf,$bf;
@@ -16,126 +17,117 @@ sub printHeader {
 }
 
 sub printFooter {
-  my ($rf,$gf,$bf,$URL, $htmlFile)= _;
+  my ($rf, $gf, $bf, $URL, $htmlFile) = @_;
   printf $htmlFile "<br><br><hr size=\"1\" color=\"white\"><a href=\"$URL\">Back to previous page</a>\n";
   printf $htmlFile "</body>\n</html>";
 }
 
 podregister {
-  $oldforeground=gimp_context_get_foreground();
-  $path.='/';
+  Gimp::Context->push();
+  $path .= '/';
   die __"All fields were not completed, sorry.\n" if $path eq "";
   die __"Scale factor must not be 0\n" if $fixed == 0;
-
-  $countTotal=`ls $path*.jpg | wc -l`+`ls $path*.JPG | wc -l`;
-  $gallerytitle=~s/ /_/g;
+  die __"Gallery title must be filled in. Please retry!\n" if $gallerytitle eq "";
+  die __"You must also provide a filename (e.g. index) for your gallery generated html file.\n" if 
$galleryfile eq "";
+  my $countTotal = () = glob "$path*.{jpg,JPG}";
+  $gallerytitle =~ s/ /_/g;
   opendir(CPATH, $path) or die ("Unable to open destination path");
-  $sysval=system("mkdir $path$gallerytitle");
-  if ($sysval != 0){
-    die __"Make sure you've got write access to selected path ...\nMaybe the target path already exist in 
which case you can simply change the Gallery title and launch again\n";
+  my $sysval = mkdir "$path$gallerytitle", 0755;
+  if ($sysval != 1) {
+    die __"$!\nMake sure you've got write access to selected path ...\nMaybe the target path already exist 
in which case you can simply change the Gallery title and launch again\n";
   }
-  my $dpath="$path$gallerytitle/";
+  my $dpath = "$path$gallerytitle/";
   open (htmlFile, "> $dpath$galleryfile.html") or die ("Unable to process HTML File.");
-
-  my ($rf,$gf, $bf)= $foregroundcolor;
-  my ($r,$g,$b)= $color;
-  printHeader($rf,$gf,$bf,$r,$g,$b,*htmlFile,$gallerytitle);
+  my ($rf, $gf, $bf) = @$foregroundcolor;
+  my ($r, $g, $b) = @$color;
+  printHeader($rf, $gf, $bf, $r, $g, $b, *htmlFile, $gallerytitle);
   print htmlFile "<table><tr>\n";
-  my $totalentries=0;
-  my $entries=1;
-  my $twidthEval=0;
-  my $txtwidth=0;
-  my $txtheight=0;
-  my $ycorrection=0;
-  my $xcorrection=0;
-
-  Gimp->progress_init("Releasing the gallery");
-  while (defined($cfile=readdir(CPATH))) {
+  my $totalentries = 0;
+  my $entries = 1;
+  my $twidthEval = 0;
+  my $txtwidth = 0;
+  my $txtheight = 0;
+  my $ycorrection = 0;
+  my $xcorrection = 0;
+  Gimp::Progress->init("Releasing the gallery");
+  while (defined(my $cfile = readdir(CPATH))) {
     if (( $cfile =~ /.jpg/ ) || ($cfile =~ /.JPG/)) {
-      my $img=gimp_file_load("$path$cfile", "$path$cfile");
-      my $clayer=gimp_image_get_active_layer($img);
-      if ($rotate != 0){
-       #plug_in_rotate manages both global 90-180-270 - reshape $img
-       plug_in_rotate(RUN_NONINTERACTIVE,$img,-1,$rotate,1);
-      }
-
-      my $width=gimp_image_width($img);
-      my $height=gimp_image_height($img);
-      gimp_brightness_contrast($clayer, $bright, $contrast);
-      if ( $label ne "" ) {
-       my $newlayer=gimp_layer_new($img, 200, 100, RGB_IMAGE, "newlayer", 100, NORMAL_MODE);
-       gimp_context_set_foreground($labelcolor);
-       my $txtlayer=gimp_text_fontname($img, -1, 1, 1, $label, 0, 0, 16, 0, $font);
+      my $img = Gimp->file_load("$path$cfile", "$path$cfile");
+      my $clayer = $img->get_active_layer;
+      $clayer->transform_rotate_simple($rotate, TRUE, 0, 0) if $rotate >= 0;
+      my $width = $img->width;
+      my $height = $img->height;
+      $clayer->brightness_contrast($bright, $contrast);
+      if ($label ne "") {
+        my $newlayer = $img->layer_new(200, 100, RGB_IMAGE, "newlayer", 100, NORMAL_MODE);
+        Gimp::Context->set_foreground($labelcolor);
+       my $txtlayer = $img->text_fontname(-1, 1, 1, $label, 0, 0, 16, 0, $font);
        if ($twidthEval == 0) {
-         $txtwidth=gimp_drawable_width($txtlayer);
-         $txtheight=gimp_drawable_height($txtlayer);
-         $twidthEval=1;
+         $txtwidth = $txtlayer->width;
+         $txtheight = $txtlayer->height;
+         $twidthEval = 1;
        }
-       $ycorrection=$height-$txtheight if (($labelpos == 2) || ($labelpos == 3));
-       $xcorrection=$width-$txtwidth if (($labelpos == 1) || ($labelpos == 3));
-       gimp_layer_translate($txtlayer, $xcorrection, $ycorrection);
-       gimp_image_merge_visible_layers($img,0);
+       $ycorrection = $height - $txtheight if (($labelpos == 2) || ($labelpos == 3));
+       $xcorrection = $width-$txtwidth if (($labelpos == 1) || ($labelpos == 3));
+       $txtlayer->translate($xcorrection, $ycorrection);
+       $img->merge_visible_layers(EXPAND_AS_NECESSARY);
       }
       my $cvname="$dpath$cfile";
-      #$cvname=~s/ /c/g;
-      ($img->get_layers)[0]->file_jpeg_save("$cvname", "$cvname",0.7,0,1,0,"",0,1,0,0);
-
+      $cvname =~ s/\s/c/g;
+      $cfile =~ s/\s/c/g;
+      $img->get_active_layer->file_save(($cvname) x 2);
       #Processing Thumbnail
-      my $tbheight=1;
-      my $tbwidth=1;
+      my $tbheight = 1;
+      my $tbwidth = 1;
       if ($scalefix == 1){
-       my $scalefactor=$width/$fixed;
-       $tbheight=$height/$scalefactor;
-       $tbwidth=$fixed;
+       my $scalefactor = $width / $fixed;
+       $tbheight = $height / $scalefactor;
+       $tbwidth = $fixed;
+      } elsif ($scalefix == 2) {
+        my $scalefactor = $height / $fixed;
+        my $newwidth = $width / $scalefactor;
+        $tbwidth = $newwidth;
+        $tbheight = $fixed;
       } else {
-       if ($scalefix == 2) {
-         my $scalefactor=$height/$fixed;
-         my $newwidth=$width/$scalefactor;
-         $tbwidth=$newwidth;
-         $tbheight=$fixed;
-       } else {
          # scalefix 0 => both scaled by factor (value_factor)
-         $tbwidth=$width/$fixed;
-         $tbheight=$height/$fixed;
-       }
+         $tbwidth = $width / $fixed;
+         $tbheight = $height / $fixed;
       }
-      my $tbfname="$dpath $cfile";
-      $tbfname=~s/ /m/g;
-      system("cp $cvname $tbfname");
-      gimp_image_delete($img);
-      $img=gimp_file_load("$tbfname", "$tbfname");
-      $clayer=gimp_image_get_active_layer($img);
-      gimp_image_scale($img, $tbwidth, $tbheight);
-
+      my $tbfname = "$dpath $cfile";
+      $tbfname =~ s/ /m/g;
+      io($tbfname)->print(io($cvname)->all);
+      $img->delete;
+      $img = Gimp->file_load("$tbfname", "$tbfname");
+      $clayer = $img->get_active_layer;
+      $img->scale($tbwidth, $tbheight);
       #Processing detail HTML
-      my $htmlDetail=$cfile;
-      $htmlDetail=~s/.jpg/.html/g;
-      $htmlDetail=~s/.JPG/.html/g;
+      my $htmlDetail = $cfile;
+      $htmlDetail =~ s/.jpg/.html/gi;
       open (fhtmlDetail, "> $dpath$htmlDetail") or die ("Unable to process HTML File.");
-      printHeader($rf,$gf,$bf,$r,$g,$b,*fhtmlDetail,$gallerytitle);
+      printHeader($rf, $gf, $bf, $r, $g, $b, *fhtmlDetail, $gallerytitle);
       print fhtmlDetail "<img src=\"$cfile\"></img>";
-      printFooter($rf,$gf,$bf,"$galleryfile.html", *fhtmlDetail);
+      printFooter($rf, $gf, $bf, "$galleryfile.html", *fhtmlDetail);
       close fhtmlDetail;
-      file_jpeg_save(($img->get_layers)[0],"$tbfname", "$tbfname",0.7,0,1,0,"",0,1,0,0);
-      print htmlFile "         <td><a href='$htmlDetail'><img src='m$cfile' border='0'></a></td>\n";
+      $clayer->file_save(($tbfname) x 2);
+      print htmlFile "         <td><a href=\"$htmlDetail\"><img src=\"m$cfile\" border='0'></a></td>\n";
       if ($entries >= $columns){
        print htmlFile "</tr><tr>";
-       $entries=1;
+       $entries = 1;
       } else {
-       $entries=$entries+1;
+       $entries += 1;
       }
-      $totalentries=$totalentries+1;
-      Gimp->progress_update ($totalentries/$countTotal);
-      gimp_image_delete($img);
+      $totalentries += 1;
+      Gimp::Progress->update($totalentries / $countTotal);
+      $img->delete;
     }
   }
-  Gimp->progress_update(1);
+  Gimp::Progress->update(1);
   print htmlFile "</table>\n";
-  printFooter($rf,$gf,$bf,$parent_url, *htmlFile);
+  printFooter($rf, $gf, $bf, $parent_url, *htmlFile);
   close htmlFile;
-  Gimp->message(__"Your gallery ($galleryfile) has been generated through Gallery plug-in with $totalentries 
entries");
-  gimp_context_set_foreground($oldforeground);
-  ();
+  Gimp->message(__"Your gallery ($dpath) has been generated through Gallery plug-in with $totalentries 
entries");
+  Gimp::Context->pop();
+  return undef;
 };
 
 exit main;
@@ -164,22 +156,22 @@ Note : This plugin only processes JPG pictures.
 
 =head1 PARAMETERS
 
-  [PF_FILE,   "path", "Destination path"],
+  [PF_FILE,   "path", "Gallery source directory"],
   [PF_STRING, "label", "Text at top of each picture"],
   [PF_COLOR,  "labelcolor", "Color of label on each picture", [255,255,255]],
   [PF_RADIO,  "labelpos", "Position of text label", 0, [ UpLeft => 0, UpRight => 1, DownLeft => 2, DownRight 
=> 3 ]],
   [PF_FONT,   "font", "Select font", undef ],
   [PF_SLIDER, "bright", "Brightness correction", 0, [ -127, 127]],
   [PF_SLIDER, "contrast", "Contrast correction", 0, [-127,127]],
-  [PF_RADIO,  "rotate", "Rotation angle", 0, [ None => 0, Rotate90CCW => 3, Rotate90 => 1]],
+  [PF_RADIO,  "rotate", "Rotation angle", -1, [ None => -1, Rotate90CCW => 2, Rotate90 => 0]],
   [PF_RADIO,  "scalefix", "Scale fixing for thumbnails", 1 ,[ both_by_factor => 0, X => 1, Y => 2 ]],
   [PF_INT32,  "fixed", "Value or factor", 150],
-  [PF_STRING, "gallerytitle", "Gallery title" ],
+  [PF_STRING, "gallerytitle", "Gallery output directory", "MyGallery" ],
   [PF_COLOR,  "color", "Gallery background color", [100,100,100]],
   [PF_COLOR,  "foregroundcolor","Gallery foreground color", [255,255,255]],
-  [PF_STRING, "galleryfile", "HTML file generated" ],
-  [PF_INT32,  "columns", "Gallery columns number", 2],
-  [PF_STRING, "parent_url", "Gallery's parent URL" ]
+  [PF_STRING, "galleryfile", "HTML file generated (.html will be added)", "index" ],
+  [PF_INT32,  "columns", "Gallery columns number", 5],
+  [PF_STRING, "parent_url", "Gallery's parent URL", ".." ]
 
 =head1 AUTHOR
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]