$Log$ Revision 1.182 2007/07/22 17:48:03 zeus renrot URL added to the watermark of contact sheet generated. Revision 1.181 2007/07/22 17:23:21 zeus version number changed. gradient fill added to the thmbgen(). watermark added to the top left corner of each contact sheet file. Revision 1.180 2007/07/22 09:56:38 zeus written own contact sheet files numeration engine, instead of ImageMagick native engine. Revision 1.179 2007/07/06 19:59:55 zeus version changed. Revision 1.178 2007/07/04 20:05:41 zeus check for availability of Image::Magick was added. EXIF writing to the montage files was added. some debug and error messages were added. Revision 1.177 2007/06/28 12:18:31 zeus thmgen() - thumbnail stub generator function added. If the image has no thumbnailimage, than thmbgen() generates stub image to place instead of the absent one. Revision 1.176 2007/06/25 18:55:51 zeus Default behaviour changed to --no-use-color. contactSheetGenerator() added, POD for it added. Revision 1.175 2007/01/13 16:01:46 andy Split our tag writting to separate function. Revision 1.174 2006/12/24 11:54:26 zeus RenRotFileNameOriginal cleanin bug fixed. The tag writing moved from renameFile() to renRotProcess(). Revision 1.173 2006/12/24 09:21:02 zeus RenRotFileNameOriginal tag related bug report added to TODO. Revision 1.172 2006/10/29 17:03:08 andy Changing/fixing/adding URLs across README. Revision 1.171 2006/10/12 09:53:35 zeus TODO edited on account of plugins. Revision 1.170 2006/10/09 15:16:46 andy Get file list from file (--sub-fileset). Revision 1.169 2006/10/09 12:35:16 andy Modify TODO according to conference.osdn.org.ua 2006 visitor wishes. Revision 1.168 2006/10/09 12:25:01 andy sync with 0.25 Revision 1.167 2006/10/06 11:50:36 andy Possible fix bug with clearing EXIFs when --no-backup is given Revision 1.166 2006/09/09 20:23:43 zeus Now "use color = Yes" is default. Revision 1.165 2006/09/09 19:14:51 zeus Processing message look tunned, now it shows (m of n) file processed. Revision 1.164 2006/09/05 05:41:11 andy Move main() to the end of file. Refactoring: configOptions -> cfgOpts. Revision 1.163 2006/09/05 05:07:47 andy Remove --color. Add 'use color' to configuration file. Revision 1.162 2006/09/02 18:29:20 andy Optimize hash parser. Revision 1.161 2006/08/22 10:16:07 andy Sync with 0.23 Revision 1.160 2006/08/10 09:28:50 zeus --include-file option implementation task written to TODO file. Revision 1.159 2006/08/09 07:29:31 zeus original file name counter template sequence moved to the "%C" and the base part of the original file name to "%O". code optimization around the template sequences. Revision 1.158 2006/08/08 11:15:27 zeus colorization for output implemented, the option --test-use-color Revision 1.157 2006/08/08 08:41:31 zeus Template sequence "%O" was added. Revision 1.156 2006/08/03 21:23:26 zeus parseConfig() code optimized. Revision 1.155 2006/08/03 20:27:33 zeus now win32 platform is considered in parseConfig(), the variable USERPROFILE instead of HOME. Revision 1.154 2006/08/03 10:26:25 zeus Template sequence "%o" was added. Revision 1.153 2006/08/03 10:09:55 zeus Tag RenRotFileNameOriginal writing was added. Revision 1.152 2006/07/21 07:02:39 zeus POD for --sub-fileset edited. Revision 1.151 2006/07/20 06:26:50 zeus --sub-fileset option is implemented. Revision 1.150 2006/07/18 18:36:52 andy --test-speed -> --test-use-ipc (and 'test speed' -> 'test use ipc'). Split rotateThumbnail() to its own, rotateByJpegtran(), and thumbWriter(). Revision 1.149 2006/07/18 13:58:05 zeus option --test-speed for thumbnail rotate, via pipe, speeding added. Revision 1.148 2006/07/16 16:59:44 andy Release as 0.22. Revision 1.147 2006/07/16 10:02:12 andy Remove fatal case when keywords file isn't exist. Fix return value in the getFileDataLines() and keywordizer(). Now skip empty keywords, and remove tail \r if occurs. Add 'no'-prefixed aliases to exist 'no-' options: --norename, --norotate. New option --no-tags (with alias --notags) switches tags writting. Revision 1.146 2006/07/13 13:07:39 zeus Tags initialization moved from tagWriter() to the renRotProcess(). Revision 1.145 2006/07/13 11:41:10 andy TODO cleanup. --keyword-file -> keywords-file. Minor optimization in keywordizer code was added. Revision 1.144 2006/07/13 10:08:31 zeus option --keywords-replace is added. Revision 1.143 2006/07/13 09:44:44 zeus Bugfix, tag Keywords was accumulated in the loop rather than written once. Revision 1.142 2006/07/08 05:04:24 andy Optimize keywordizer code. Should be checked. Revision 1.141 2006/07/07 11:43:25 zeus keywordizer() added, managed via CLI and config file options --keywordize and --keyword-file. Revision 1.140 2006/07/05 11:43:26 andy Release as 0.21.1. Revision 1.139 2006/07/05 06:20:54 andy Implement --backup option. Small cutting of usage() messages. Revision 1.138 2006/06/26 09:09:20 zeus %n and %e template patters've being implemented. Revision 1.137 2006/06/21 19:36:51 zeus TODO edited (%n,%e & virtual renaming) Revision 1.136 2006/06/19 11:19:08 zeus online documentation (option -h) tailored. Revision 1.135 2006/06/14 20:40:19 zeus in renameFile(), $newname look changed on opposite in case of it's existance. Revision 1.134 2006/06/12 08:03:01 andy Release as 0.21. Revision 1.133 2006/06/12 07:42:14 andy Check for directory tree in aggregation arguments. Now it isn't possible. Remove support of old style tag options. Revision 1.132 2006/06/11 14:05:38 andy Use $dryRun in the rotateOrient(), renameFile(), mtimeSet(), and tagWriter(). Revision 1.131 2006/06/10 06:51:13 zeus tag GPSAltitudeRef added to etc/tags.conf Revision 1.130 2006/06/09 18:26:54 andy Add the one-letter aliases to --name-template, --aggr-template, and --tag options. Change preamble in CONFIG section for drop possible misunderstanding. Add two tags to TAGS section of manual. Revision 1.129 2006/06/09 08:21:07 andy Fix unusing included files. Add 'include' description to POD. Revision 1.128 2006/06/09 07:44:18 zeus TagFile config option added to the POD. Revision 1.127 2006/06/08 17:34:31 andy Fix configuration file parser (parsed data wasn't used). Release as 0.21rc3. Revision 1.126 2006/06/08 14:08:09 zeus Information concerning the perl 5.8.7 and 5.8.8 behaviour on FreeBSD 6, while processing large amount of files, was added to the POD and README. Revision 1.125 2006/06/08 06:49:48 andy Release as 0.21rc2. Revision 1.124 2006/06/08 06:14:54 andy Implement include configuration directive. Split configuration file to main and tags. Revision 1.123 2006/06/07 13:23:54 andy relocate configuration to /etc/renrot/. Revision 1.122 2006/06/06 11:34:38 andy Use getFileData() in rotateThumb(). Revision 1.121 2006/06/06 11:17:07 zeus Virtualization of aggregation has been implemented. POD, README, renrot.rc are edited. Revision 1.120 2006/06/06 08:51:58 andy TagFile configuration option was added. Any tag could be filled by file content. "comment file" configuration variable are deprecated by new TagFile. Minor changes at TAGS section. Revision 1.119 2006/06/05 21:29:58 andy Fix tag configuration option parser (no collision with tagNNN, where NNN - numberF). Revision 1.118 2006/06/05 14:23:34 zeus POD edited. Detailed section TAGS description added. Revision 1.117 2006/06/05 06:34:31 andy Fix logic for empty given tags (now they should be removed from EXIF). Revision 1.116 2006/06/04 21:02:50 andy Implemented new tag parser and option style. Make old style of tag prefixed options work, but it deprecated since now. Release as 0.21rc1. Revision 1.115 2006/06/04 15:02:59 andy Added INSTALLATION ON PDA section to README.Windows (still theoretical). TODO has been modified. Fedora Extras Team credit is added to README. New section BUGS in the manual is added. Splited tag option description to separate manual section. Revision 1.114 2006/06/04 08:21:01 andy Configuration file tag variable parser has been added. Fix usage of undefined group in tagParser(). Revision 1.113 2006/06/03 15:25:03 andy Fix spec according Fedora Extras Review. First part of tags filling implementation. Revision 1.112 2006/06/02 13:06:02 andy Update ExifTool requirement due to new implementation of WriteInfo(). Revision 1.111 2006/06/01 22:17:59 zeus exifWriter() idealogy a bit changed. rotateImg() a bit tunned. Revision 1.110 2006/06/01 13:12:03 zeus EXIF data copying code rewritten. Now $exiftool->SetNewValuesFromFile() is used rather than jpegtran -copy all Revision 1.109 2006/06/01 08:21:39 zeus in delta aggregation mode, dir counter now delimited with dot from dir name. Revision 1.108 2006/06/01 07:12:08 andy TODO is cleaned up. Remove underscore symbol from RenRot unique tags. XMP-RenRot -> RenRot. Revision 1.107 2006/05/31 21:08:23 zeus XMP-RenRot namespace was added (tags RenRot_ProcessingTimestamp, RenRot_Version and RenRot_URL). README and POD a bit polished. Revision 1.106 2006/05/31 10:52:23 zeus Description of --counter-fixed-field, --counter-start and --counter-step added to the usage() and POD. Revision 1.105 2006/05/31 06:45:03 andy Refactoring (counterprefixsize -> counterSize, anglesuffix -> angleSuffix, renameFile() -> renameImg()). Split MAIN() to main part, renRotProcess() and renameFile(). No reset incorrect aggregation template, only ignore it with warning and error. Change default aggregation directory value to 'Images'. Add trim variable to the configuration file. Group --mtime/--no-mtime and --trim/--no-trim in manual. Expand CONFIG section by trim and aggregation mode descriptions. Revision 1.104 2006/05/30 21:16:23 zeus the option --trim added Revision 1.103 2006/05/30 18:37:11 andy Remove extension usage when file set is given. Revision 1.102 2006/05/30 06:27:31 andy Remove deprecated code. Revision 1.101 2006/05/29 19:00:01 andy Release as 0.20rc3. Revision 1.100 2006/05/29 14:44:35 zeus bugfix in aggregation mode delta section. Revision 1.99 2006/05/29 06:52:19 andy Deprecate --aggr-dumb and related configuration variable, use --dry-run instead. Revision 1.98 2006/05/28 21:37:34 andy Implement start and step counter values (options --counter-start and --counter-step). Use fixed field or not when counter is printed (--counter-fixed-field, is 'on' by default). Inject aggregation mode option to configuration file and command line. Deprecate --aggr switcher and 'delta' keyword in --aggr-template, use --aggr-mode='none', 'delta' or 'template' instead. Revision 1.97 2006/05/28 20:36:18 zeus bugfix. leading "F" have to be in case of %F but not %i in template2name() Revision 1.96 2006/05/27 07:11:14 andy Release as 0.20rc2 (documentation fix). Revision 1.95 2006/05/26 20:22:38 andy TODO cleanup. Start tag writer as separate task (new option --tag, but still unworked). Revision 1.94 2006/05/25 07:02:51 andy Fix NEWS spelling according to FreshMeat announce. New configuration file style is described in README. Use new configuration file style by default. Add some needed comments to renrot.rc. Revert check for configuration file presence in parseConfig(). Revision 1.93 2006/05/24 21:30:13 andy Release as 0.20rc1. Public testing version. Revision 1.92 2006/05/24 21:12:37 andy Don't require and set available empty extension for file set. Validate angle value for --rotate-angle and --rotate-thumbnail. Don't use re with extension - it cause problem with special symbols in file name. Should be fixed --work-directory parameter handling (BR by Jan Vereecke). Revision 1.91 2006/05/24 03:43:04 andy New configuration file style is imlemented. Switch to new style by --no-old-config (default 'Yes'). Use --user-comment="comment" or "Tag UserComment = 'comment'" to add UserComment tag (formerly COMMENTARY). Now "comment file = '/patch/to/commentary'" in configuration sets commentary filename. Revision 1.90 2006/05/22 18:22:27 andy Implement the configuration file parser. Revision 1.89 2006/05/21 19:01:46 andy Write more explanation of Orientation tag rotation in README and manual. Add new restriction to related section of README. Also fix TODO according last changes. The --aggr-dir option alias is removed. Now 180 degree is approved to use at --rotate-angle or --rotate-thumb options. Revision 1.88 2006/05/21 11:17:21 andy Release as 0.19.3 (bugfix). Revision 1.87 2006/05/20 18:52:27 andy No empty --extension argument. Fix bug when rotating file name contains special symbols. Change ($#var + 1) to scalar(@var) for optimization. No attempt to process absent files. Smart Orientation tag rotation is implemented for rotation process. Revision 1.86 2006/05/19 11:50:16 andy Change URL tag in spec file. Release as 0.19.2. Revision 1.85 2006/05/18 18:57:38 andy NEWS - user friendly change log is added. Revision 1.84 2006/05/18 18:36:27 andy Recognize --extension '.ext' as well. Simplify counter size calculation. Add missed bracket at if ($AggrTemplate eq "delta"). Fix multiple issues with low cased extension variable. Revision 1.83 2006/05/18 17:36:20 andy Deprecate --aggr-dir (use --aggr-directory instead). Remove hardcoded ".jpg" extension. Revision 1.82 2006/05/18 16:18:01 andy Optimize aggregationProcess(). Remove deprecated --rotate and --ext options. Revision 1.81 2006/05/17 17:05:09 andy Implement exclude list (option --exclude ). Release as 0.19.1. Revision 1.80 2006/05/17 12:07:14 andy Unify EXIF writtings to exifWritting(). First attempt to rotation by Orientation tag (new option --only-orientation). Remove unused variables. Revision 1.79 2006/05/15 17:49:06 andy Add TODO and README.russian to %doc section in spec file. Revision 1.78 2006/05/15 13:23:55 andy Add simple russian description as README.russian. Fix bug with thumbnail rotating (patch by zeus). Revision 1.77 2006/05/15 10:46:01 andy Remove --file option. It's overhead. Install renrot.rc to %_sysconfdir in rpm package. Revision 1.76 2006/05/14 19:54:06 andy Use counter size for aggregation directories. Release as 0.19. Revision 1.75 2006/05/14 10:46:23 andy Check if we have files to process is added. Synchronize TODO with last changes. New option --aggr and --no-aggr for switch aggregation process. No put single letter for %E, %F, %I or %W when tags is absent. Revision 1.74 2006/05/13 15:18:08 andy Correct definition of aggregation related variables. Merge files from ARGV and --file option. Optimize file cache generation. Use mathematic definition of counter size (needs to be tested on windows). Use counter size for default template (was four digits independently of files amount). Revision 1.73 2006/05/13 15:03:38 andy Modify debug outputs. Add new debug messages to main() and getOptions(). Revision 1.72 2006/05/13 14:53:22 andy Reformat usage() outputs. Fix internal documentation according to last changes. Revision 1.71 2006/05/13 14:33:33 andy Change --files to --file, --rotate to --rotate-angle and --ext to --extension. Revert back --no-rotate and --no-rename. Exclude single quotas from README examples part due to undesired interpretation in cmd.exe. Also, put note to README.Windows. Add no warranty part to README. Correct low case makeup. Always writting Software tag. Release as 0.18.3. Revision 1.70 2006/05/11 10:11:47 zeus fixing typo in parameter to template2name. adding FileModifyDate writing in DateTimeOriginal tag absence. Revision 1.69 2006/05/10 19:03:34 andy Renaming several internal variables. Use $Software as boolean variable (user would not changed the string). Revision 1.68 2006/05/10 10:58:57 zeus TODO edited. Revision 1.67 2006/05/09 21:51:39 zeus delay aggregation directory counter format changed on "001" rather "1". Revision 1.66 2006/05/09 20:52:24 zeus the bug with --aggr-template 'delta' fixed (the situation when directory wasn't possible to create (it was bug, the attept to create 'dir/file.ext' rather than 'dir')). Revision 1.65 2006/05/09 12:22:25 zeus so called "delta" aggregation mode had been added. new options added: --aggr-delta, --aggr-dir and --aggr-dumb/--noaggr-dumb. TODO and renrot.rc are edited. Revision 1.64 2006/05/08 15:14:05 zeus implemented work with separate files via --files and -- options. rewritten code concerning the "no mtime" option, according the GetOptions features. syntaxis changed to the GetOptions (no-rotate -> norotate e.t.c.). AggrTemplate option added to the config file. documentation edited according the changes. TODO, AUTHORS edited. Revision 1.63 2006/05/06 21:14:13 zeus names and versions of the programs used to process the file now is written to the tag Software. dynamic length file name counter format is implemented. TODO edited, rc edited. Revision 1.62 2006/05/06 15:17:04 andy Expand TODO semantics. Revision 1.61 2006/05/06 14:51:04 andy Use --no-mtime as opposite to --mtime. Add $setMtime to config file. (Needs to be checked). Minor changes in the documentation. Revision 1.60 2006/05/06 10:00:36 zeus bug fixed, when --no-rename requested it was rewriting XMP tags, now it'd fixed. TODO edited. Revision 1.59 2006/05/06 07:32:14 andy Minor changes of documentation. Removing trailing spaces. Restructure TODO. Add -q option for suppressing process messages. Release 0.16.2. Revision 1.58 2006/05/05 21:31:38 zeus TODO item added. Revision 1.57 2006/05/03 21:59:52 zeus file aggregation via option --aggr-template has been implemented. control code for file name originality has been moved from template2name() to main(). README edited. Revision 1.56 2006/05/02 19:08:59 zeus item about aggregation is added to TODO. minor language ixes in README. Revision 1.55 2006/05/02 09:07:02 andy Wrote RESTRICTIONS section in README. Revision 1.54 2006/05/01 10:22:08 andy Bugfix release 0.16.1. Revision 1.53 2006/05/01 08:01:05 andy Minor fixes in README. Fix bug in rename algorithm when file with generated filename already exists. Add some words about licensing into manual. Revision 1.52 2006/05/01 06:39:21 andy Fix many typos (found by aspell). Add new TODO item. Revision 1.51 2006/04/30 20:37:49 zeus README is tailoded, WHY section is added. City tag is removed from core and rc file. Revision 1.50 2006/04/30 14:12:10 andy Fix stylistic typos and add some explanations of project naming to README. Revision 1.49 2006/04/30 11:35:07 andy Expand documentation accordingly to last code changes (template ideology, mtime option, and so on). Release as 0.16. Revision 1.48 2006/04/28 09:53:50 zeus getTimestamp conditions reviewed. commentaries added where were missed. Revision 1.47 2006/04/27 22:21:28 andy Use regular expression instead of multiple substr(). After our verbosity switch on exiftool's. Revision 1.46 2006/04/27 21:58:52 andy Split template2name() to a two additional functions: getTimestamp() and getUnixTime(). Minor fixes in timeValidator(). New mtime implementation. Revision 1.45 2006/04/27 17:55:26 andy Revert =back keyword to necessary places. Rewrote main description in pod part. Revision 1.44 2006/04/27 17:22:42 andy Remove obsoleted examples from README. Remove mtime code (now is not working). Add template sequences description to rc-file. Revision 1.43 2006/04/27 16:39:06 andy Fix several bugs (script does not run). Inject functions name to lead to argument of dbgmsg(). Probe to use another timestamp algorithm in template2name(). Revision 1.42 2006/04/27 14:31:22 andy Fix timestamp for invalid DateTimeOriginal tag (new function timeValidator()). Rewrote parts of template engine. Set default value for $anglesuffix. Sort in alphabetical order template hash and related documentation. Revision 1.41 2006/04/27 09:53:50 zeus mtime seting according the DateTimeOriginal tag implemented. possibility to add some EXIF details, like FNumber, ISO e.t.c. to the filename is added Revision 1.40 2006/04/27 07:23:14 andy Fix template bug (last symbol analysing). Revision 1.39 2006/04/26 20:36:06 zeus Name template engine tunning. Added suffix for the name in case of the rotation. thanks to Alex Zasypkin added to THANKS section of README. Revision 1.38 2006/04/26 18:35:01 andy Formating inline documentation. First implementation of template for file naming. Revision 1.37 2006/04/26 15:19:58 andy README for windows users. Linguistiq fix for README. Revision 1.36 2006/04/24 07:47:35 andy Minor documentation fix. Revision 1.35 2006/04/23 17:04:36 andy Release 0.15.1. Revision 1.34 2006/04/23 11:57:45 andy Switch to *msg() procedures instead of print "smth.". Print is used only for progress indicator. Revision 1.33 2006/04/23 08:09:35 andy Removing trailing spaces. Revision 1.32 2006/04/23 08:06:55 andy Change die "smth." to ( fatalmsg(), die ). Revision 1.31 2006/04/22 20:26:17 andy Real use --work-directory option. Fix several typos. Don't use double quotes in config file (special symbol issue such as '@' in email). Revision 1.30 2006/04/22 19:22:40 andy Use errmsg() instead of print "ERROR smth." Revision 1.29 2006/04/22 19:16:01 andy New functions: *msg - expand print functionality. Revision 1.28 2006/04/22 18:16:59 andy Add --work-directory option for more functionality. Revision 1.27 2006/04/21 12:30:55 andy Release 0.15. Revision 1.26 2006/04/21 11:16:00 andy Fix DEPENDENCIES section. Fix Requires in spec. Revision 1.25 2006/04/20 13:33:01 zeus README is edited, URL for DEPENDENCIES are added. Revision 1.24 2006/04/20 08:24:23 zeus ISO tag choosen instead of CameraISO, since not all cameras has the last one. Revision 1.23 2006/04/19 20:02:02 zeus README section WHAT IS IT edited. Revision 1.22 2006/04/19 16:24:59 andy Wrote several examples to README. Revision 1.21 2006/04/19 13:23:54 andy Use sprintf() instead of multiple concatenation. Revision 1.20 2006/04/19 12:24:58 andy WHAT IS IT? and GETTING sections were added to README. Change YYYYmmddHHMMS to YYYYmmddHHMMSS in the documentation and comments. Fix description in spec file according to freshmeat.net. Revision 1.19 2006/04/19 08:55:44 zeus code for file names caching for the directory was reingenered, to avoid the processing of the processed files ( processed files could be rescanned while processing of a big number files in the directory ) Revision 1.18 2006/04/19 07:08:07 zeus TODO is added. Revision 1.17 2006/04/18 20:10:26 zeus Documentation edited. Revision 1.16 2006/04/18 13:12:40 andy Start THANKS part in README. Revision 1.15 2006/04/18 11:32:33 andy Fix BuildRequires in specfile. Revision 1.14 2006/04/18 10:34:53 andy Added missed file to MANIFEST. Rerelease as 0.14.2. Revision 1.13 2006/04/18 10:22:12 andy Added LICENSING part to README. Added renrot.spec for RPM-based linux distributions. Bump version (0.14.1). Revision 1.12 2006/04/17 12:57:47 zeus README edited. Revision 1.11 2006/02/17 20:35:12 zeus The bug with --name-prefix-only fixed (it was defined as string in getopt() function) and the extra points in the name are removed. Revision 1.10 2006/01/10 12:16:07 zeus Documentation tailored a bit, the info concerning the jpegtran URL is added. Revision 1.9 2005/11/19 22:53:31 andy Append new files to MANIFEST. Revision 1.8 2005/11/19 09:45:56 zeus Minor script output formating. Revision 1.7 2005/11/18 14:19:26 andy Fix documentation part according to last code changes. Revision 1.6 2005/11/18 14:05:19 andy Use our syntax for $VERSION. Requires perl >= 5.6.0. Revision 1.5 2005/11/18 13:25:18 zeus Config file overlaping implemented. Now if not -c, than the order of reading the configs is such: /etc, /usr/local/etc and finaly HOME. Revision 1.4 2005/11/18 12:54:58 andy Add long option --config-file as alias to -c. Revision 1.3 2005/11/17 12:02:45 zeus Config file support added. Now hardcoded personal details are moved to config file, option -c added. Fixed minor bug when EXIFs are identical in new and old files, renrot wasn't removing temporaty copy. Revision 1.2 2005/10/17 21:34:52 zeus Id keyword is added to renrot file. Revision 1.1 2005/10/17 13:39:38 zeus ChangeLog file is added. Its the very begining.