debian/0000755000000000000000000000000011755253411007172 5ustar debian/changelog0000644000000000000000000000211411755253320011041 0ustar jigl (2.0.1+20060126-4) unstable; urgency=low * jigl.docs: Install more documentation (Themes, Todo, UPGRADING) into /usr/share/doc/jigl. (Closes: #665460) * control: Standards-Version bump to 3.9.3, no changes needed. -- Nicholas Breen Thu, 17 May 2012 12:49:04 -0700 jigl (2.0.1+20060126-3) unstable; urgency=low * control: Move homepage to separate stanza (Closes: #615370), update Standards-Version to 3.9.2, and update maintainer address. * rules: Add build-arch and build-indep targets. * source/format: Specify 3.0 (quilt). * Update Lintian overrides and watch file. -- Nicholas Breen Sun, 06 Nov 2011 15:24:45 -0800 jigl (2.0.1+20060126-2) unstable; urgency=low * New maintainer. (Closes: #390865) * Incorporate Vincent Stehle's patch for multi-CPU support. * Add manpages. -- Nicholas Breen Sun, 8 Oct 2006 18:50:23 -0700 jigl (2.0.1+20060126-1) unstable; urgency=low * Initial release. (closes: #350048) -- Norbert Tretkowski Thu, 26 Jan 2006 23:28:11 +0100 debian/compat0000644000000000000000000000000210512044765010370 0ustar 5 debian/control0000644000000000000000000000122011755253250010571 0ustar Source: jigl Section: web Priority: optional Maintainer: Nicholas Breen Build-Depends: debhelper (>= 5) Standards-Version: 3.9.3 Homepage: http://xome.net/projects/jigl/ Package: jigl Architecture: all Depends: ${perl:Depends}, ${misc:Depends}, imagemagick, jhead Recommends: csh | c-shell Description: Generates a static html photo gallery from one or more directories of images Perl script that generates a static html photo gallery from one or more directories of gif/jpg/png images. It supports themes and is very customizable. It includes the ability to display comments and EXIF info for each image in a simple clean layout. debian/copyright0000644000000000000000000000147011655615113011127 0ustar jigl was packaged for Debian by Norbert Tretkowski in Jan 2006. It was downloaded from: http://xome.net/projects/jigl/download.html jigl is copyright 2002 Jason Paul This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian systems, the complete text of the GNU General Public License (version 2) can be found in the file /usr/share/common-licenses/GPL-2 . debian/jigl.10000644000000000000000000002101010512333654010171 0ustar .\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH JIGL 1 "October 8, 2006" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME jigl \- Generates a static html photo gallery from one or more directories of images .SH SYNOPSIS .B jigl .I [ options ] [ directory ] [ directory ... ] .SH DESCRIPTION .B jigl (pronounced jiggle) is a perl script that generates a static html photo gallery from one or more directories of gif/jpg/png images. It supports themes and is very customizable. It includes the ability to display comments and EXIF info for each image in a simple clean layout. .PP .\" TeX users may be more comfortable with the \fB\fP and .\" \fI\fP escape sequences to invode bold face and italics, .\" respectively. .SH OPTIONS These programs follow the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. For further details, see the documentation in \fI/usr/share/doc/jigl/\fP .TP .B \-h, \-\-help Show summary of options. .TP .B \-v, \-\-version Show version of program. .TP .B \-cg \-\-create\-gallerydat Create a gallery.dat file and exit .TP .B \-uec \-\-use\-exif\-comment Use the comment field in the exif header (if it exists) as the slide comment. This will overwrite the description that is written in a gallery.dat file. If used in conjunction with the \-cg option, the comment field will be saved in the gallery.dat file. Default is DISABLED. (can be negated). .TP .B \-rs \-\-replace\-spaces Replaces spaces with underscores "_" in filenames. a \-\- (default) Ask the user if they want to y \-\- replace and do no ask n \-\- do not replace and do no ask .TP .B \-it \-\-index\-title Sets the title and title\-bar of the index.html page to string. This is meant to be used when you are not using a gallery.dat file. .TP .B \-iw \-\-index\-width <1\-255> How many thumbnails per line you want on the index page. Default is 5 .TP .B \-ir \-\-index\-row <0\-255> The number of thumbnail rows you want on the index page before a new index page is generated. If 0, there is no limit and only one index page will be generated. Default is 0 .TP .B \-ut \-\-update\-templates Remove the template files from the local directory and the global default theme directory. This will cause new default template files to be generated in the global default theme directory. Default is DISABLED. (can be negated). .TP .B \-ft \-\-force\-thumb Force thumbnail regeneration (can be negated) .TP .B \-fs \-\-force\-slide Force slide regeneration (can be negated) .TP .B \-skb \-\-slide\-kbsize Print the file size of the slide on the index page under the thumbnails. Default is ENABLED (can be negated) .TP .B \-sxy \-\-slide\-xysize Print the slide dimensions under the thumbnails on the index page. Default is ENABLED (can be negated) .TP .B \-uo \-\-use\-original Use the original images for the slides \- do not generate a scaled slide image. Default is DISABLED. (can be negated) .TP .B \-lo \-\-link\-original Link to the original images from the slides. Default is DISABLED. (can be negated). .TP .B \-aro \-\-auto\-rotate\-originals Do a lossless rotation of the original images. This option is only useful if your digital camera sets the Orientation field in the EXIF header. All EXIF header information will be kept and the Orientation field will be updated to reflect the rotation. Default is DISABLED. (can be negated). .TP .B \-gs \-\-generate\-slides Gererate slide pages and link them to the thumbnails. If this option is turned off, slides will not be generated and the info pages will be linked to the thumbnails instead. If neither slide or info pages are generated, the thumbnails will not link to anything. Default is ENABLED. (can be negated). .TP .B \-gi \-\-generate\-info Generate info pages and link them to the "info" link on the slide pages. If this option is turned off, info pages will not be generated and the "info" link on the slide pages will dissapear. If no slides are generated, then the info pages will be linked directly to the thumbnails. Default is ENABLED. (can be negated). .TP .B \-sy \-\-slideY Maximum size of slide image in the Y direction. If the height of the original image is greater than this value the slide will be scaled to this value. Otherwise the slide is simply a copy of the original. Default is 480 pixels .TP .B \-ty \-\-thumbY Size of the scaled thumbnail image in the Y direction Default is 75 pixels .TP .B \-iy \-\-infoY Maximum size of the info image in the Y direction. This is simply a scale of the slide image using HTML height and width tags. A new image is not generated. Default is 240 pixels .TP .B \-ws \-\-watermark\-slides Enable watermarking of the slide images. A watermark file must be present for this option to work. Default is DISABLED. (can be negated). .TP .B \-wf \-\-watermark\-file Name of the watermark file to use when \-ws is enabled. Default is "watermark.png". .TP .B \-wg \-\-watermark\-gravity Where to display the watermark on the slide. Default is southeast. .TP .B \-gb \-\-go\-back Prepend a "Go Back" link to the header in the index.html file. If used in conjunction with \-cg, the Go Back link will be added to the INDEX\-HEADER tag in the newly created gallery.dat file. Default is DISABLED. (can be negated). .TP .B \-gbs \-\-go\-back\-string String to use for the go\-back\-url link. You could even make this an image to help round out a theme by making this string something like: "" Default is "Go Back". .TP .B \-gburl \-\-go\-back\-url URL to use when \-gb is enabled. Any URL can be used. Default is '..', the previous directory. .TP .B \-\-theme Name of theme to use. Themes files are defined as "themeName.theme". You would just enter the "themeName" portion of the file. Default is "default". .TP .B \-wd \-\-web\-dir Directory to put all the gallery files (html, slides, thumbnails and possibly theme files) into. Unless a fully qualified path is used, this directory will be created in the current directory. This option is not used if the \-lo or \-uo option is set. Default is "web". .TP .B \-r \-\-recurse Recurse through all directories on the command line. This option will omit all directories named "slides", "thumbs", "theme", "web" and the value of \-wd if that option is set. This option will ONLY be recognized from the command line to help prevent accidents. Note: Any options listed on the command line when using recursion will be applied to all directories. Default is DISABLED. .TP .B \-h \-\-help Display this information and exit .TP .B \-v \-\-version Display version and exit .TP .B \-d \-\-debug <0\-5> Set debug level. Default is 0 .TP .B [directories] Directories to process. Default is . (current). .TP \fBNote:\fP If an option listed says it can be negated you can prefix it with "no" and the opposite effect will happen. Useful for overriding options on the command line that are set elsewhere. e.g. \-nouo | \-\-nouse\-original will NOT use the original files as slides. .SH SETTING OPTIONS Options can be used in any of three places: (listed ascending precedence) \-\- A single line in the \fI$HOME/.jigl/jigl.opts\fP file in the users home directory. \-\- After the GAL\-OPTIONS tag as a single line in the \fIgallery.dat\fP file in each of the album directories. \-\- On the command line. Regardless of where they are located, they should all be listed in the same form as you would use them on the command line. Example: \-lo \-iw 6 \-noskb Theme files can be located in either the directory \fBjigl\fP is processing or in the \fI.jigl\fP directory in the user's home directory. .SH AUTHOR \fBjigl\fP was written by Jason Paul . Its project page is located at \fIhttp://xome.net/projects/jigl/\fP. .PP This manual page was adapted from the program help text by Nicholas Breen for the Debian project (but may be used by others). debian/jigl.docs0000644000000000000000000000012211755253035010766 0ustar upstream/jigl-2.0.1/Themes upstream/jigl-2.0.1/Todo upstream/jigl-2.0.1/UPGRADING debian/lintian-overrides0000644000000000000000000000026211534527401012551 0ustar # rotate(1), a convenience script, is written for csh. Not really attractive, # but that's the choice of upstream. No need for a lintian reminder. jigl: csh-considered-harmful debian/rotate.10000644000000000000000000000413110512335065010545 0ustar .\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH ROTATE 1 "October 8, 2006" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME rotate \- Rotate, mirror, and transpose JPEG images (losslessly whenever possible) .SH SYNOPSIS .B rotate .I { options } file .I [ file ... ] .SH DESCRIPTION .B rotate is a convenience frontend to .B jpegtran, allowing JPEG images to be rotated, mirrored, or transposed in several ways. These operations are conducted losslessly (i.e., no image recompression) and keep all EXIF metadata intact. .PP .\" TeX users may be more comfortable with the \fB\fP and .\" \fI\fP escape sequences to invode bold face and italics, .\" respectively. .SH OPTIONS .TP .B \-f, \-flip, \-\-flip {horizontal | vertical} horizontal: Mirror image horizontally (left\-right). .br vertical : Mirror image vertically (top\-bottom). .TP .B \-r, \-rotate, \-\-rotate {90 | 180 | 270} 90 : Rotate image 90 degrees clockwise. .br 180: Rotate image 180 degrees. .br 270: Rotate image 270 degrees clockwise (or 90 ccw). .TP .B \-tp, \-transpose, \-\-transpose Transpose image (across UL\-to\-LR axis). .TP .B \-tv, \-transverse, \-\-transverse] Transverse transpose (across UR\-to\-LL axis). .SH SEE ALSO .BR jpegtran(1) .SH AUTHOR \fBrotate\fP is distributed as a component of \fBjigl\fP, written by Jason Paul . Its project page is located at \fIhttp://xome.net/projects/jigl/\fP. .PP This manual page was adapted from the program help text by Nicholas Breen for the Debian project (but may be used by others). debian/rules0000755000000000000000000000303411627040345010250 0ustar #!/usr/bin/make -f THEMES := white black jovotek build: build-stamp build-arch: build build-indep: build build-stamp: dh_testdir touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp rm -rf upstream/jigl-2.0.1 for i in $(THEMES) ; do \ rm -rf themes/$$i ;\ done dh_clean extract: for i in $(THEMES) ; do \ tar zxvf themes/$$i.tar.gz -C themes ;\ done tar zxvf upstream/jigl-2.0.1.tar.gz -C upstream install: build dh_testdir dh_testroot dh_clean -k install -D -m 0755 upstream/jigl-2.0.1/jigl.pl $(CURDIR)/debian/jigl/usr/bin/jigl patch -i $(CURDIR)/debian/vs-multicpu.patch $(CURDIR)/debian/jigl/usr/bin/jigl install -m 0755 upstream/rotate $(CURDIR)/debian/jigl/usr/bin/ # csh may be ugly, but it's a known issue. Override the lintian warnings. mkdir -p $(CURDIR)/debian/jigl/usr/share/lintian/overrides cp debian/lintian-overrides $(CURDIR)/debian/jigl/usr/share/lintian/overrides/jigl # This does nothing, but must return successfully. binary-arch: # Build architecture-independent files here. binary-indep: extract build install dh_testdir dh_testroot dh_installdocs -n dh_installchangelogs upstream/jigl-2.0.1/ChangeLog dh_installman debian/jigl.1 debian/rotate.1 dh_compress mkdir $(CURDIR)/debian/jigl/usr/share/doc/jigl/themes for i in $(THEMES) ; do \ cp -a themes/$$i $(CURDIR)/debian/jigl/usr/share/doc/jigl/themes ;\ done dh_fixperms dh_installdeb dh_perl dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep .PHONY: build clean binary-indep binary install configure binary-arch debian/source/0000755000000000000000000000000011655614700010473 5ustar debian/source/format0000644000000000000000000000001411655614700011701 0ustar 3.0 (quilt) debian/vs-multicpu.patch0000644000000000000000000002615510512336163012510 0ustar --- jigl 2006-01-27 12:15:03.000000000 +0100 +++ jigl 2006-05-29 01:27:36.000000000 +0200 @@ -20,6 +20,7 @@ # #################### # Author: Jason Paul +# Parallel computation by Vincent Stehlé use Getopt::Long; # options parsing use Text::ParseWords; # for converting the config options into an array @@ -63,6 +64,17 @@ my $gblInfoTmpl = $gblThemeDir . "/default/" . $infoTmpl; # global info template my @imgMgkVer = &checkSiteInstall; # check for img tools; return ImageMagick ver +########################################################### +# +# MP_MAX_JOBS +# +# Description: +# Maximum number of parallel jobs to run at most. +# We set this to the number of cpu in the system. +# +########################################################### +my $MP_MAX_JOBS = mp_detect_cpu(); + ###################### ### end variable setup ###################### @@ -343,6 +355,161 @@ } ########################################################### +# +# mp_jobs +# +# Description: +# Temporary hash, to track the running jobs. Keys are +# the jobs pids. Values are the message to print in case +# of non-zero return code, when die-ing. +# +########################################################### +my %mp_jobs; + +########################################################### +# +# mp_debug +# +# Description: +# Debug printing for mp_ functions. +# +########################################################### +sub mp_debug($) +{ +# print "mp[$$]: ". $_[0]; +} + +########################################################### +# +# mp_detect_cpu +# +# Description: +# Detect the number of cpu present in the system. +# +# Fixme: +# This is Linux only for now. +# This could be more eleguant. +# +########################################################### +sub mp_detect_cpu +{ + my $r = `grep processor /proc/cpuinfo |wc -l`; + mp_debug("Detected $r cpu.\n"); + return $r; +} + +########################################################### +# +# mp_wait_jobs +# +# Description: +# Wait for children until there are n running jobs +# or less. +# +########################################################### +sub mp_wait_jobs($) +{ + my($n) = @_; + + while(1){ + my $running = scalar(keys %mp_jobs); + mp_debug("$running job(s) currently running.\n"); + + last if $running <= $n; + + mp_debug("Waiting...\n"); + + # Wait for a job to finish. + my $c = wait(); + my $rc = $?; + mp_debug("-> $c ($rc)\n"); + + # Sanity checks. + if($c < 0){ + print "mp: wait() returned $c. Strange!\n"; + } + + if(!exists $mp_jobs{$c}){ + print "mp: wait() returned $c, but job is not" + ." in mp_jobs. Strange!\n"; + } + + # Check the return code and die if non-zero. + die $mp_jobs{$c} if $rc; + + # Forget job. + delete $mp_jobs{$c}; + } +} + +########################################################### +# +# mp_wait_for_free_slot +# +# Description: +# Wait for a free slot. This is done before launching +# one more job in parallel. +# +########################################################### +sub mp_wait_for_free_slot() +{ + mp_wait_jobs($MP_MAX_JOBS - 1); +} + +########################################################### +# +# mp_wait_for_all_jobs +# +# Description: +# Wait for all children until there are no more running. +# +########################################################### +sub mp_wait_for_all_jobs() +{ + mp_wait_jobs(0); +} + +########################################################### +# +# mp_launch +# +# Description: +# Like "system", but forked in parallel. +# +# Arguments: +# $_[0]: Command to launch. +# $_[1]: Die message, in case of non-zero return code. +# +# Notes: +# We ensure not to exceed the maximum number of slots +# allowed. +# +########################################################### +sub mp_launch($$) +{ + my($cmd, $die_msg) = @_; + + # Wait for a free slot first. + mp_wait_for_free_slot(); + + # Ok, fork. + my $r = fork(); + + if(!$r){ + # We are in the child. + # Do the job. + mp_debug("Running $cmd.\n"); + exec($cmd); + + } else { + # We are in the father. + # Remember the child as well as the die msg. + mp_debug("Launched $r.\n"); + $mp_jobs{$r} = $die_msg; + } +} + +########################################################### # getWatermarkProg - determine what program we have that can watermark. # older versions of ImageMagick use the program 'combine'. Newer versions # use 'composite'. We'll check and see which one you have installed. @@ -1216,6 +1383,8 @@ } # generate thumbnail for each image + # First pass: scale all images. This is done in parallel + # if possible, with jobs launched in the background. for $i (0 .. $#{$albumInfo->{images}}) { # get the name of the file and create the thumbnail filename # store the name of the thumbnail for this image in the albumInfo @@ -1230,7 +1399,7 @@ print "\r\(" . ($i+1) . "/" . ($#{$albumInfo->{images}}+1) . "\) Scaling $tmpThumbFile $msgPad"; $cmd = "$scaleProg -scale x$opts{ty} -sharpen 5 \"$tmpFile\" \"$tmpThumbFile\""; $dieMsg = "\nCannot scale the thumbnail image $tmpThumbFile!\n"; - system($cmd) == 0 or die $dieMsg; + mp_launch($cmd, $dieMsg); # increment the generated count $genCnt++; @@ -1239,13 +1408,21 @@ print "\r\(" . ($i+1) . "/" . ($#{$albumInfo->{images}} + 1) . "\) Skipping $tmpThumbFile $msgPad"; $skipCnt++; } + } + # Wait for all processes to complete. + mp_wait_for_all_jobs(); + + # Second pass: now that all images have been converted, + # we can get all images informations. + for $i (0 .. $#{$albumInfo->{images}}) { # get the files size and X,Y info for the slide @tmpArr = &getImgInfo($albumInfo->{images}[$i]->{thumb}); $albumInfo->{images}[$i]->{thumbkb} = $tmpArr[0]; $albumInfo->{images}[$i]->{thumbx} = $tmpArr[1]; $albumInfo->{images}[$i]->{thumby} = $tmpArr[2]; } + print "\r"; # move back to the start of the line print "$genCnt thumbnails generated. $msgPad\n" if $genCnt > 0; print "$skipCnt thumbnails skipped because they already existed.\n" if $skipCnt > 0; @@ -1284,6 +1461,12 @@ } # generate slide for each image + # First pass: scale all images. This is done in parallel + # if possible, with jobs launched in the background. + # Also, we remember if watermarking is necessary for the + # next pass. + my %may_need_watermarking; + for $i (0 .. $#{$albumInfo->{images}}) { # get the name of the file and create the slide filename $tmpFile = $albumInfo->{images}[$i]->{file}; @@ -1304,45 +1487,67 @@ if (($opts{fs} or (!(-e $tmpSlideFile))) && !($opts{uo})) { # scale the image to the slide size specs print "\r\(" . ($i+1) . "/" . ($#{$albumInfo->{images}}+1) . "\) Scaling $tmpSlideFile $msgPad"; + # only scale the slide if it's Y height is greater than # the value of the sy option. if ($albumInfo->{images}[$i]->{height} > $opts{sy}) { $cmd = "$scaleProg -scale x$opts{sy} -sharpen 5 \"$tmpFile\" \"$tmpSlideFile\""; - $dieMsg = "\nCannot scale the slide image!\n"; - system($cmd) == 0 or die $dieMsg; + $dieMsg = "\nCannot scale the slide image $tmpSlideFile!\n"; + mp_launch($cmd, $dieMsg); + } else { $dieMsg = "Cannot copy \"$tmpFile\" to \"$tmpSlideFile\"\n"; copy $tmpFile,$tmpSlideFile or die "$dieMsg $!\n"; } - # if we're watermarking the slides, do it now. - if ($opts{ws}) { - # check to make sure we have a valid watermark program - # and that the watermark image exists - if ($waterMarkProg eq "none") { - print "\r\(" . ($i+1) . "/" . ($#{$albumInfo->{images}}+1) ."\) CANNOT Watermark $tmpSlideFile. No Watermark program found! $msgPad"; - } else { - print "\r\(" . ($i+1) . "/" . ($#{$albumInfo->{images}}+1) ."\) Watermarking $tmpSlideFile $msgPad"; - if ($waterMarkProg eq "composite") { - $cmd = "$waterMarkProg -compose over -gravity $opts{wg} $opts{wf} \"$tmpSlideFile\" \"$tmpSlideFile\""; - } else { - # combine reversed the order the image and watermark - # were listed on the command line. - $cmd = "$waterMarkProg -compose over -gravity $opts{wg} \"$tmpSlideFile\" $opts{wf} \"$tmpSlideFile\""; - } - $dieMsg = "\nCannot watermark the slide image!\n"; - system($cmd) == 0 or die $dieMsg; - } - } + # Remember that this slide may need watermarking. + $may_need_watermarking{$i} = 1; # increment the generated count $genCnt++; + } else { # increment the skipped count print "\r\(" . ($i+1) . "/" . ($#{$albumInfo->{images}}+1) . "\) Skipping $tmpSlideFile $msgPad"; $skipCnt++; } + } + + # Wait for all processes to complete. + mp_wait_for_all_jobs(); + + # Second pass: watermarking. We do this in parallel too. + # Note that we do this pass only if necessary. + if ($opts{ws}) { + for $i (0 .. $#{$albumInfo->{images}}) { + next if !exists $may_need_watermarking{$i}; + + # check to make sure we have a valid watermark program + # and that the watermark image exists + if ($waterMarkProg eq "none") { + print "\r\(" . ($i+1) . "/" . ($#{$albumInfo->{images}}+1) ."\) CANNOT Watermark $tmpSlideFile. No Watermark program found! $msgPad"; + + } else { + print "\r\(" . ($i+1) . "/" . ($#{$albumInfo->{images}}+1) ."\) Watermarking $tmpSlideFile $msgPad"; + if ($waterMarkProg eq "composite") { + $cmd = "$waterMarkProg -compose over -gravity $opts{wg} $opts{wf} \"$tmpSlideFile\" \"$tmpSlideFile\""; + } else { + # combine reversed the order the image and watermark + # were listed on the command line. + $cmd = "$waterMarkProg -compose over -gravity $opts{wg} \"$tmpSlideFile\" $opts{wf} \"$tmpSlideFile\""; + } + $dieMsg = "\nCannot watermark the slide image $tmpSlideFile!\n"; + mp_launch($cmd, $dieMsg); + } + } + # Wait for all processes to complete. + mp_wait_for_all_jobs(); + } + + # Third pass: now that all slide have been generated, we can get + # the images informations. + for $i (0 .. $#{$albumInfo->{images}}) { # get the image info for the slide if ($opts{uo}) { # we're using the originals and already have the debian/watch0000644000000000000000000000011111534530145010211 0ustar version=3 http://xome.net/projects/jigl/download.html jigl-(.*)\.tar\.gz