2 ######################################################################
6 # Copyright (c) 1996-2004, Ronald Schmidt <ronsc@ronsc.de>
7 # 2000-2004, Holm Sieber <sieber@prudsys.com>
8 # 2004, Daniel Molkentin <daniel@molkentin.de>
9 # 2004, Sven Guckes <guckes@guckes.net>
11 # Download: http://www.ronsc.de
13 ######################################################################
15 # All rights reserved.
18 # Redistribution and use in source and binary forms, with or without
19 # modification, are permitted provided that the following conditions
22 # Redistributions of source code must retain the above copyright
23 # notice, this list of conditions and the following disclaimer.
24 # Redistributions in binary form must reproduce the above copyright
25 # notice, this list of conditions and the following disclaimer in the
26 # documentation and/or other materials provided with the distribution.
27 # Neither the name of the organization nor the names of its
28 # contributors may be used to endorse or promote products derived
29 # from this software without specific prior written permission.
31 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
34 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
35 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
36 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
37 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
38 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
39 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
40 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
41 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42 # POSSIBILITY OF SUCH DAMAGE.
44 ######################################################################
46 # Web: http://www.ronsc.de/iimage/
48 # List: https://mailman.ronsc.de/listinfo/iimage
50 ######################################################################
52 SVN_ID="$Id: iimage 38 2009-12-15 20:30:46Z ronsc $"
54 # old templates might still use CVS_VERSION
57 ##############################################################
60 PATH=$PATH:/usr/X11R6/bin:/usr/bin
61 # external commands: convert identify jpegtran metacam mplayer
62 # awk basename cat cp date echo find grep mkdir mv rm uname
72 DISPLAY_GEOMETRY=640x480
73 THUMBNAIL_GEOMETRY=150x150
76 THUMBNAILS="$DISPLAY_GEOMETRY $THUMBNAIL_GEOMETRY"
88 VARIABLES="title description order date ignore iorder \
89 FONT COLOR FONTSIZE CTAG \
91 SLIDE_DELAY SLIDE_LOOP \
92 EXCLUDE_ORGINAL RECURSIVE COLUMNS \
93 AUDIODIR IIMAGE_SPECIAL"
95 ##############################################################
98 FILE_EXTENSIONS='jpg jpeg gif png avi mov mpeg'
99 function AVI_handler_prepare() {
100 # evtl ein bild aus den ersten 10 sec
102 if [ "$MPLAYER" ] ; then
105 DST="$DATADIR/$1.1st.jpg"
107 if [ "$DST" -ot "$1" ]; then
110 rm -f $DATADIR 00000001.jpg 00000002.jpg
112 mplayer -quiet -frames 1 -ao none -vo jpeg -jpeg outdir=$DATADIR $1 >/dev/null 2>/dev/null
114 if [ -f "$DATADIR/00000001.jpg" ] ; then
115 convert "$DATADIR/00000001.jpg" -resize $THUMBNAIL_GEOMETRY "$DST"
118 rm -f $DATADIR 00000001.jpg 00000002.jpg
124 function AVI_handler_index() {
128 THIS_HTML="$DATADIR/$THIS_IMAGE.html"
129 THIS_HTML_INFO="$DATADIR/$THIS_IMAGE.info.html"
131 if [ -f "$DATADIR/$1.1st.jpg" ] ; then
136 { . $INDEX_ICON_TEMPLATE;} >> "$INDEX_HTML"
139 function AVI_handler_html() {
140 # keine extra ansicht
144 function MPEG_handler_prepare() {
145 AVI_handler_prepare $@
147 function MPEG_handler_index() {
150 function MPEG_handler_html() {
154 function MOV_handler_prepare() {
155 # evtl ein bild aus den ersten 10 sec
156 AVI_handler_prepare $1
159 function MOV_handler_index() {
163 THIS_HTML="$DATADIR/$THIS_IMAGE.html"
164 THIS_HTML_INFO="$DATADIR/$THIS_IMAGE.info.html"
165 if [ -f "$DATADIR/$1.1st.jpg" ] ; then
170 { . $INDEX_ICON_TEMPLATE ;} >> "$INDEX_HTML"
173 function MOV_handler_html() {
174 # keine extra ansicht
179 function default_handler_index() {
183 THIS_HTML="$DATADIR/$THIS_IMAGE.html"
184 THIS_HTML_INFO="$DATADIR/$THIS_IMAGE.info.html"
188 { . $INDEX_ITEM_TEMPLATE ; } >> "$INDEX_HTML"
191 function default_handler_html() {
193 FILE="$1"; THIS_IMAGE="$1";
196 PREV_IMAGE=`( echo index ; cat $DATADIR/slideable ; echo index ; ) | grep -1 "^$THIS_IMAGE$" | head -n 1`
197 NEXT_IMAGE=`( echo index ; cat $DATADIR/slideable ; echo index ; ) | grep -1 "^$THIS_IMAGE$" | tail -n 1`
203 if [ "$NEXT_IMAGE" = "index" ] ; then
204 R_NEXT_HTML="../index.html"
205 R_NEXT_HTML_INFO="../index.html"
206 R_NEXT_HTML_SLIDE="../index.html"
208 R_NEXT_HTML="$NEXT_IMAGE.html"
209 R_NEXT_HTML_INFO="$NEXT_IMAGE.info.html"
210 R_NEXT_HTML_SLIDE="$NEXT_IMAGE.slide.html"
213 if [ "$PREV_IMAGE" = "index" ] ; then
214 R_PREV_HTML="../index.html"
215 R_PREV_HTML_INFO="../index.html"
216 R_PREV_HTML_SLIDE="../index.html"
218 R_PREV_HTML="$PREV_IMAGE.html"
219 R_PREV_HTML_INFO="$PREV_IMAGE.info.html"
220 R_PREV_HTML_SLIDE="$PREV_IMAGE.slide.html"
223 R_THIS_HTML="$THIS_IMAGE.html"
224 THIS_HTML="$DATADIR/$THIS_IMAGE.html"
225 THIS_HTML_INFO="$DATADIR/$THIS_IMAGE.info.html"
226 THIS_HTML_SLIDE="$DATADIR/$THIS_IMAGE.slide.html"
228 if [ "$FIRST_HTML" = "" ] ; then
229 FIRST_HTML="$THIS_HTML";
233 { . $HTML_TEMPLATE ;} > "$THIS_HTML"
236 { . $HTML_INFO_TEMPLATE ;} > "$THIS_HTML_INFO"
239 { . $HTML_SLIDE_TEMPLATE ;} > "$THIS_HTML_SLIDE"
243 function default_handler_prepare() {
245 echo "$1" >> $DATADIR/slideable
249 ##############################################################
250 ##############################################################
251 ##############################################################
252 ##############################################################
254 if [ -f /etc/iimage.conf ] ; then . /etc/iimage.conf; fi
255 if [ -f ~/.iimage ] ; then . ~/.iimage; fi
256 if [ -f ~/.iimage/config ] ; then . ~/.iimage/config; fi
259 for dir in `pwd | tr '/' ' '` ; do
260 dfile=`pwd | cut -d"/" -f-$dcount`/description
261 dcount=$[ $dcount + 1 ]
262 if [ -f $dfile ] ; then
266 unset order title description
268 if [ -f ./description ] ; then . ./description 2>/dev/null ; fi
271 ##############################################################
274 VERSION="r`echo $SVN_ID| cut -d " " -f 3`"
276 HTML_TEMPLATE="$DATADIR/html_template.html"
277 HTML_INFO_TEMPLATE="$DATADIR/html_info_template.html"
278 HTML_SLIDE_TEMPLATE="$DATADIR/html_slide_template.html"
280 if [ "$TEMPLATEDIR" = "" ] ; then
281 TEMPLATEDIR="~/.iimage"
284 FOOTER_TEMPLATE="$DATADIR/footer_template.html"
285 HEAD_TEMPLATE_START="$DATADIR/head_template_start.html"
286 HEAD_TEMPLATE_END="$DATADIR/head_template_end.html"
287 INDEX_HEAD_TEMPLATE="$DATADIR/index_head_template.html"
288 INDEX_ITEM_TEMPLATE="$DATADIR/index_item_template.html"
289 INDEX_ICON_TEMPLATE="$DATADIR/index_icon_template.html"
290 INDEX_FOOT_TEMPLATE="$DATADIR/index_foot_template.html"
291 INDEX_DIR_TEMPLATE="$DATADIR/index_dir_template.html"
292 CSS_TEMPLATE="$DATADIR/css_template.css"
293 INFO_AWK_TEMPLATE="$DATADIR/display_info_template.awk"
294 TRANSP_PIXEL="$DATADIR/transp.gif"
295 DIR_ICON="$DATADIR/dir.gif"
296 AVI_ICON="$DATADIR/avi.jpg"
297 MOV_ICON="$DATADIR/mov.jpg"
298 SND_ICON="$DATADIR/snd.png"
299 COUNTFILE_CURENT="$DATADIR/count.current"
300 COUNTFILE_SUB="$DATADIR/count.sub"
301 COUNTFILE_SUM="$DATADIR/count.summ"
302 INDEX_HTML="index.html"
304 DATA_FILES="DIR_ICON \
305 TRANSP_PIXEL INFO_AWK_TEMPLATE CSS_TEMPLATE INDEX_DIR_TEMPLATE \
306 INDEX_FOOT_TEMPLATE INDEX_ITEM_TEMPLATE INDEX_HEAD_TEMPLATE \
307 HTML_INFO_TEMPLATE HTML_TEMPLATE \
308 HTML_SLIDE_TEMPLATE AVI_ICON MOV_ICON INDEX_ICON_TEMPLATE \
309 SND_ICON HEAD_TEMPLATE_START HEAD_TEMPLATE_END \
312 ######################################################################
313 ######################################################################
314 ######################################################################
317 function upper() { echo $* | tr "[a-z]" "[A-Z]" ; }
318 function lowerr() { echo $* | tr "[A-Z]" "[a-z]" ; }
320 function load_image_infos() {
324 TN_IMAGE=$DATADIR/$THUMBNAIL_GEOMETRY/$THIS_IMAGE
325 TN_IMAGE_SIZE=`cat $DATADIR/$THUMBNAIL_GEOMETRY/$THIS_IMAGE.size`
327 THIS_IMAGE_GEOMETRY=`cat $DATADIR/$THIS_IMAGE.geometry`
328 if [ "$METACAM" ]; then
329 THIS_IMAGE_DATE="`metainfo $DATADIR/$THIS_IMAGE.metacam \
330 'Image Creation Date'`"
331 elif [ "$JHEAD" ]; then
332 THIS_IMAGE_DATE="`metainfo $DATADIR/$THIS_IMAGE.metacam \
336 R_IMAGE=../$THIS_IMAGE
337 R_DISPLAY_IMAGE=$DISPLAY_GEOMETRY/$THIS_IMAGE
338 TN_IMAGE=$DATADIR/$THUMBNAIL_GEOMETRY/$THIS_IMAGE
340 TN_IMAGE_SIZE=`cat $DATADIR/$THUMBNAIL_GEOMETRY/$THIS_IMAGE.size`
341 R_DISPLAY_IMAGE_SIZE=`cat $DATADIR/$DISPLAY_GEOMETRY/$THIS_IMAGE.size`
343 THIS_IMAGE_GEOMETRY=`cat $DATADIR/$THIS_IMAGE.geometry`
344 if [ "$METACAM" ]; then
345 THIS_IMAGE_DATE="`metainfo $DATADIR/$THIS_IMAGE.metacam \
346 'Image Creation Date'`"
347 elif [ "$JHEAD" ]; then
348 THIS_IMAGE_DATE="`metainfo $DATADIR/$THIS_IMAGE.metacam \
352 EXTENSION=`echo $THIS_IMAGE | awk -F"." '{print $NF}'`
353 WAV_FILE_BASE=`basename $THIS_IMAGE .$EXTENSION`
354 if [ "$AUDIODIR" != "" ] ; then AUDIODIREXT="$AUDIODIR/"; fi
355 WAV_FILE=`eval \ls "$AUDIODIREXT$WAV_FILE_BASE.[wW][aA][vV]" 2>/dev/null | head -n 1`
357 if [ -f "$WAV_FILE" ] ; then
358 EXTRA_SMALL_ICON="<a href=$WAV_FILE><img alt=\"Sound-Logo\" src=\"$DATADIR/snd.png\" align=\"right\" border=\"0\"></a>";
359 EXTRA_SMALL_ICON2="<a href=../$WAV_FILE><img alt=\"Sound-Logo\" src=\"snd.png\" border=\"0\"></a>";
366 # --------------------------------------------------------------------
368 which $1 2>/dev/null >> $DATADIR/log
369 if which $1 2>/dev/null >/dev/null ; then
372 echo "ERROR: $1 not found!"
377 # --------------------------------------------------------------------
379 function filesize() {
380 echo -ne "`ls -L -l -d -G \"$1\" | awk '{print $4}'`"
383 # --------------------------------------------------------------------
384 # read key:val from description-file
385 function description() {
388 if [ "$2" != "" ] ; then file="$2"; fi
390 if [ -f "$file" ] ; then
392 | awk -F"=" '{for (a=2;a<=NF;a++) {if (b!="") b=b "=" ; \
393 b=b $a}}END{printf b}' | cut -d"\"" -f 2
397 function wrap_table() {
398 T_COUNT=$[ $T_COUNT + 1 ]
400 if [ $T_COUNT -gt $COLUMNS ] ; then
407 # alte templates meeren dadrin rum
408 [ -f .count ] && echo 0 >.count
411 # --------------------------------------------------------------------
412 function metainfo() {
415 cat "$file" | grep "$tag" \
416 | awk -F": " '{ a=$2; while (substr(a,1,1)==" ") \
417 { a=substr(a,2);} print a}'
420 # --------------------------------------------------------------------
421 function generate_info_table() {
423 if [ -f "$DATADIR/$THIS_IMAGE.metacam" ] ; then
424 cat "$DATADIR/$THIS_IMAGE.metacam" | awk -F": " -f "$INFO_AWK_TEMPLATE"
426 if [ -f "$DATADIR/$THIS_IMAGE.identify" ] ; then
427 cat "$DATADIR/$THIS_IMAGE.identify" | awk -F": " -f "$INFO_AWK_TEMPLATE"
431 # --------------------------------------------------------------------
432 function rotate_image() {
434 if [ $METACAM ]; then
435 ORIENTATION=`metacam -v "$FILE" 2>/dev/null \
436 | grep Orientation | cut -d":" -f 2 | cut -d"," -f 1 `
437 elif [ $JHEAD ]; then
438 ORIENTATION=`jhead -v "$FILE" 2>/dev/null \
439 | grep "Orientation =" | head -1 | cut -d '=' -f 2 | cut -c 2 `
441 ORIENTATION=`echo $ORIENTATION`
443 if [ "$ORIENTATION" -a "$ORIENTATION" != "1" ] ; then
444 SIZE=`identify "$FILE"| cut -d" " -f 3`
445 WIDTH=`echo $SIZE | cut -d"x" -f 1 | cut -d"+" -f 1`
446 HEIGHT=`echo $SIZE | cut -d"x" -f 2 | cut -d"+" -f 1`
448 if [ "$HEIGHT" -lt "$WIDTH" ] ; then
451 if [ ! -f .backup/$FILE ] ; then
453 cp $FILE .backup/$FILE
456 if [ "$ORIENTATION" = "6" ] ; then
458 jpegtran -rotate 90 -copy all "$FILE" >"$FILE""_"
461 jpegtran -rotate 270 -copy all "$FILE" >"$FILE""_"
463 mv -f "$FILE""_" "$FILE"
468 ##############################################################
469 # generate thumbnails
470 function build_thumbnail() {
474 if [ "$METACAM" ] || [ "$JHEAD" ]; then
475 if [ -a "$JPEGTRAN" ] ; then
476 rotate_image "$IMAGE"
480 if [ ! -f "$DATADIR/$IMAGE.size" -o \
481 "$DATADIR/$IMAGE.size" -ot "$IMAGE" ] ; then
482 # identify -format "%wx%h" "$IMAGE" > "$DATADIR/$IMAGE.geometry"
484 if [ "$IDENTIFY2" ] ; then
487 -format " Geometry: %wx%h\n Format: %m\n Filesize: %b" \
488 "$IMAGE" > "$DATADIR/$IMAGE.identify"
491 identify -verbose "$IMAGE" > "$DATADIR/$IMAGE.identify"
495 cat "$DATADIR/$IMAGE.identify" \
496 | grep "^ *.eometry:" \
497 | awk -F': ' '{print $2}' > "$DATADIR/$IMAGE.geometry"
498 cat "$DATADIR/$IMAGE.geometry" \
499 | awk -F"x" '{print "WIDTH=\""$1"\" HEIGHT=\""$2"\""}' > $DATADIR/$IMAGE.size
502 if [ "$METACAM" ] ; then
503 if [ ! -f "$DATADIR/$IMAGE.metacam" -o \
504 "$DATADIR/$IMAGE.metacam" -ot "$IMAGE" ] ; then
506 metacam "$IMAGE" >"$DATADIR/$IMAGE.metacam" 2>/dev/null
508 elif [ "$JHEAD" ] ; then
509 if [ ! -f "$DATADIR/$IMAGE.metacam" -o \
510 "$DATADIR/$IMAGE.metacam" -ot "$IMAGE" ] ; then
512 jhead "$IMAGE" >"$DATADIR/$IMAGE.metacam" 2>/dev/null
520 for GEOMETRY in $THUMBNAILS; do
522 mkdir -p "$DATADIR/$GEOMETRY" || exit
524 echo -ne "($GEOMETRY"
525 DST="$DATADIR/$GEOMETRY/$IMAGE"
527 if [ ! \( -L "$DST" -a -L "$IMAGE" \) ] ; then
528 if [ ! -s "$DST" -o "$DST" -ot "$IMAGE" -o "$FORCE_TN" = "true" ] ; then
530 if [ "$LASTIMAGE" = "" ] ; then
535 convert -quality $THUMBNAIL_QUALITY \
536 -resize "$GEOMETRY+0+0>" "$LASTIMAGE" \
538 # +profile "$LASTIMAGE" \
542 # optimize with jpegtran
546 echo $DST | grep .jpg >/dev/null && JPEG=true
547 echo $DST | grep .JPG >/dev/null && JPEG=true
548 echo $DST | grep .jpeg >/dev/null && JPEG=true
549 echo $DST | grep .JPEG >/dev/null && JPEG=true
551 if [ "$JPEGTRAN" -a "$JPEG" ] ; then
553 jpegtran -copy all -optimize -progressive "$DST" > "$DST.tmp"
554 mv -f "$DST.tmp" "$DST"
560 if [ ! -f "$DST.size" -o "$DST.size" -ot "$DST" ] ; then
562 # imagesite WIDTHxHEIGH
563 # identify -format "%wx%h" "$DST" > "$DST.geometry"
565 if [ "$IDENTIFY2" ] ; then
568 -format " Geometry: %wx%h\n Format: %m\n Filesize: %b" \
570 | grep "^ *.eometry:" \
571 | awk -F': ' '{print $2}' > "$DST.geometry"
574 identify -verbose "$DST" | grep "^ *.eometry:" \
575 | awk -F': ' '{print $2}' > "$DST.geometry"
580 # cache image-geometry
581 cat "$DST.geometry" | awk -F"x" '{print "WIDTH=\""$1"\" HEIGHT=\""$2"\""}' \
584 if [ "$GEOMETRY" != "$THUMBNAIL_GEOMETRY" -a "$CTAG" ] ; then
585 Y=`cat "$DST.geometry" | cut -d"x" -f2 `
587 convert "$DST" -pointsize $FONTSIZE \
588 -font "$FONT" -stroke black -fill black \
589 -draw 'text 10, '"$[ $Y - 10 ]"' "'"$CTAG"'"' "$DST"_
591 convert "$DST" -pointsize $FONTSIZE \
592 -font "$FONT" -stroke $COLOR -fill $COLOR \
593 -draw 'text 9, '"$[ $Y - 9 ]"' "'"$CTAG"'"' "$DST"_
604 ##############################################################
605 function search_subdirs() {
607 ORDER=`description order`
609 if [ "$ORDER" = "" ] ; then ORDER="alphabetically"; fi
611 if [ "$ORDER" = "accesstime" ] ; then
612 RAWDIRS=`eval "find * -maxdepth 0 -type d $IIMAGE_EXCLUDE"`
613 if [ "$RAWDIRS" != "" ] ; then
614 DIRS=`ls -dt $RAWDIRS`
618 elif [ "$ORDER" = "alphabetically" ] ; then
619 DIRS=`eval "find * -maxdepth 0 -type d $IIMAGE_EXCLUDE"`
620 elif [ "$ORDER" = "dec" ] ; then
621 DIRS=`eval "find * -maxdepth 0 -type d $IIMAGE_EXCLUDE"`
628 for DIR in $DIRS ; do
630 if [ "$DIR" = "---" ] ; then
631 echo "<tr><td colspan=\"3\"><hr noshade size=\"1\"></td></tr>";
634 FOLDER_DESCRIPTION="";
640 if [ -f "$DIR/$COUNTFILE_SUM" ] ; then
641 SUB_COUNT=`cat $DIR/$COUNTFILE_SUM`
642 if [ "$SUB_COUNT" = "" ] ; then SUB_COUNT=0; fi
647 if [ "$SUB_COUNT" -gt 0 ] ; then
648 SUB_COUNT_STR="$SUB_COUNT";
654 COUNT_SUBDIRS=$[ $COUNT_SUBDIRS + $SUB_COUNT ]
656 if [ -f "$DIR/description" ]; then
658 title="`description title $DIR/description`"
659 date="`description date $DIR/description`"
660 FOLDER_DESCRIPTION="`description description $DIR/description`"
662 if [ "$title" = "" ] ; then title=$DIR ; fi
664 eval `grep mainimage= $DIR/description`
666 SUB_IMAGE=$DIR/$DATADIR/$THUMBNAIL_GEOMETRY/$mainimage
667 SUB_IMAGE_size=$DIR/$DATADIR/$THUMBNAIL_GEOMETRY/$mainimage.size
670 if [ "$date" != "none" ] ; then SUB_DATE="$date"; fi
676 SUB_DST=$DIR/index.html
678 { . $INDEX_DIR_TEMPLATE ;}
683 echo $COUNT_SUBDIRS > $COUNTFILE_SUB
687 ##############################################################
688 # create picture index
690 function check_iimage() {
701 identify | grep Version
702 convert | grep Version
705 JPEGTRAN="`which jpegtran 2>/dev/null`"
706 MPLAYER="`which mplayer 2>/dev/null`"
707 METACAM="`which metacam 2>/dev/null`"
708 JHEAD="`which jhead 2>/dev/null`"
709 IDENTIFY2=`identify | grep -- -format 2>/dev/null`
710 IIMAGE_FOLLOW_LINKS="`which iimage_follow_links 2>/dev/null`"
712 HOSTNAME=`hostname --fqdn 2>/dev/null || hostname`
716 [ "$JPEGTRAN" ] && echo -n "jpegtran "
717 [ "$MPLAYER" ] && echo -n "mplayer "
718 [ "$METACAM" ] && echo -n "metacam "
719 [ "$JHEAD" ] && echo -n "jhead "
720 [ "$IDENTIFY2" ] && echo -n "identify>5.x "
721 [ "$IIMAGE_FOLLOW_LINKS" ] && echo -n "follow_links "
724 echo "legend: I..identify S..size M..metacam J..jhead T..thumb O..optimize"
725 echo "-----------------------------------------------------------------------------"
728 export IIMAGE_CHECK METACAM JPEGTRAN IDENTIFY2 IIMAGE_FOLLOW_LINKS
730 IIMAGE_TOPLEVEL=true;
733 function store_templates() {
737 for file in $DATA_FILES ; do
739 base_file=`eval 'echo -e $'$file`
741 if [ ! -f $base_file -o "$FORCE_TEMPLATES" = "true" ] ; then
743 src_file=`basename $base_file`
745 if [ "$TMPLATES" = "" ] ; then
746 echo -en "TEMPLATE:\t"
750 #"$FORCE_TEMPLATES" = "" -a
751 if [ "(" -f $TEMPLATEDIR/$src_file -o -L $TEMPLATEDIR/$src_file ")" ] ; then
752 cp $TEMPLATEDIR/$src_file $base_file
755 eval "put_$file >$base_file"
762 [ "$TMPLATES" != "" ] && echo # OK
765 function init_iimage() {
767 mkdir -p $DATADIR; ls -l >$DATADIR/ls-l.new; touch $DATADIR/ls-l.old
770 rm -f $DATADIR/errors
772 [ "$IIMAGE_CHECK" = "" ] && check_iimage;
775 # -- einige Dinge ignorieren --
777 IGNORE=`description ignore`
779 IGNORE="$IGNORE $AUDIODIR"
781 for file in $IGNORE ; do
782 IIMAGE_EXCLUDE="$IIMAGE_EXCLUDE ! -name \"$file\" "
784 IIMAGE_EXCLUDE="$IIMAGE_EXCLUDE ! -name $DATADIR"
786 export IIMAGE_EXCLUDE
790 function find_all_images() {
795 FILE_EXTENSIONS_UPPER=`upper $FILE_EXTENSIONS`
798 for ext in $FILE_EXTENSIONS $FILE_EXTENSIONS_UPPER ; do
799 ALL_IMAGES="$ALL_IMAGES `eval \"find *.$ext -type f -maxdepth 0 $IIMAGE_EXCLUDE 2>/dev/null \"`"
804 IORDER=`description iorder`
806 if [ "$IORDER" = "" ] ; then IORDER="alphabetically"; fi
808 if [ "$IORDER" = "digicam" ] ; then
809 ALL_IMAGES=`ls $ALL_IMAGES | sort -n -k 2 -t "_"`
811 elif [ "$IORDER" = "alphabetically" ] ; then
814 elif [ "$IORDER" = "accesstime" -o "$IORDER" = "accesstime_asc" -o "$IORDER" = "accesstime_ascending" ] ; then
815 ALL_IMAGES=`ls -dtr $ALL_IMAGES`
817 elif [ "$IORDER" = "accesstime_desc" -o "$IORDER" = "accesstime_descending" -o "$IORDER" = "dec" ] ; then
818 ALL_IMAGES=`ls -dt $ALL_IMAGES`
820 elif [ "$IORDER" = "description" ] ; then # 5.1.2005 hfst
821 # in der Reihenfolge wie die Beschreibungen
822 ALL_IMAGES=`for file in $ALL_IMAGES; do
823 grep -n "^$file" description | awk -F"=" '{print $1}'
824 done | sort -nt":" | awk -F":" '{print $2}'` # 5.1.2005 hfst ende
832 function prepare_dir () {
839 # ls -l >$DATADIR/ls-l.new
840 # touch $DATADIR/ls-l.old
842 GI_COUNT="`echo $ALL_IMAGES | wc -w`"
843 echo $GI_COUNT > $COUNTFILE_CURENT
845 TITLE="`description title`"
846 FOLDER_DESCRIPTION="`description description`"
848 if [ "$TITLE" = "" ] ; then
849 TITLE="`basename $PWD`"
854 function iimage_recursive() {
856 if [ "$RECURSIVE" = "true" ] ; then
857 eval "find * -maxdepth 0 -type d $IIMAGE_EXCLUDE " | while read dir ; do
858 ( cd $dir && $0 $*; )
863 function prepare_images() {
865 # evtl noch modularisieren und erweiterbar machen
866 [ $IIMAGE_FOLLOW_LINKS ] && iimage_follow_links;
868 rm -f $DATADIR/slideable
870 echo "prepare images ..."
872 if [ "$GI_COUNT" -gt "0" ] ; then
873 for image in $ALL_IMAGES ; do
877 EXTENSION=`echo $image | awk -F"." '{print $NF}'`
878 EXTENSION=`upper $EXTENSION`
880 if declare -f $EXTENSION"_handler_prepare" >/dev/null ; then
881 eval $EXTENSION"_handler_prepare $image"
883 eval default_handler_prepare $image
891 function build_html() {
893 echo "generate html ..."
899 { . $INDEX_HEAD_TEMPLATE ;} > $INDEX_HTML
901 if [ "$GI_COUNT" -gt "0" ] ; then
903 COUNT=`cat $DATADIR/slideable | wc -l`
906 for THIS_IMAGE in $ALL_IMAGES ; do
907 echo -en "$THIS_IMAGE:\t"
909 DESCRIPTION=`description "$THIS_IMAGE"`
910 THIS_IMAGE_BYTE="$[ `filesize $THIS_IMAGE` / 1024 ]"
912 EXTENSION=`echo $THIS_IMAGE | awk -F"." '{print $NF}'`
913 EXTENSION=`upper $EXTENSION`
916 if declare -f $EXTENSION"_handler_html" >/dev/null ; then
917 eval $EXTENSION"_handler_html $THIS_IMAGE"
919 eval default_handler_html $THIS_IMAGE
922 wrap_table >> $INDEX_HTML ;
925 if declare -f $EXTENSION"_handler_html" >/dev/null ; then
926 eval $EXTENSION"_handler_index $THIS_IMAGE "
928 eval "default_handler_index $THIS_IMAGE "
938 created with iimage $VERSION \n\
939 (c) Ronald Schmidt http://www.ronsc.de \n\n\
940 download http://www.ronsc.de/iimage/iimage\n\n\
943 \n\n\n" >> $INDEX_HTML ;
946 { . $INDEX_FOOT_TEMPLATE ;} >> $INDEX_HTML
949 if [ -f "$COUNTFILE_CURENT" ] ; then
950 COUNT_CURRENT=`cat $COUNTFILE_CURENT`;
951 if [ "$COUNT_CURRENT" = "" ] ; then COUNT_CURRENT=0; fi
956 if [ -f "$COUNTFILE_SUB" ] ; then
957 COUNT_DIR=`cat $COUNTFILE_SUB`;
958 if [ "$COUNT_DIR" = "" ] ; then COUNT_DIR=0; fi
963 echo $[ $COUNT_CURRENT + $COUNT_DIR ] > $COUNTFILE_SUM;
969 # www.huebsch-gemacht.de
972 ALL_IMAGES=`if [ -d $DATADIR ]; then ( cd $DATADIR; set -C;find *.geometry -maxdepth 0 2>/dev/null ;) ; fi`
974 for file in $ALL_IMAGES; do
975 base=`basename $file .geometry`
976 if [ ! -f $base ]; then
977 echo -n "cleanup $base:";
979 for tn in $THUMBNAILS ; do
981 rm -f $DATADIR/$tn/$base $DATADIR/$tn/$base.*
984 rm -f $DATADIR/$base.*
989 # ls -l>$DATADIR/ls-l.old
995 function finish_iimage() {
996 ls -l>$DATADIR/ls-l.old
997 if [ "$IIMAGE_TOPLEVEL" ] ; then
999 echo -e "finished!\7"
1003 function update_description_names() {
1005 for i in $ALL_IMAGES ; do
1007 if ! egrep "$i=" ./description >/dev/null ; then
1008 echo "$i=`description $i`" >> ./description
1014 function create_description_template() {
1017 if [ -f description ] ; then
1019 echo "Error: descriptions-file exists, output on stdout !"
1024 for i in $VARIABLES ; do
1025 VAL=`description $i`
1026 if [ "$VAL" = "" ]; then eval "VAL=\$$i"; fi
1027 echo "$i=$VAL" >> $DST
1032 if [ "$DST" = "./description" ] ; then
1033 echo "description generated"
1038 function generate_header() {
1039 if [ "$2" != "" ] ; then
1042 export BGCOLOR="#ffffff"
1044 if [ "$3" != "" ] ; then
1052 . $HEAD_TEMPLATE_START
1055 . $HEAD_TEMPLATE_END
1058 . $HEAD_TEMPLATE_START
1059 . $HEAD_TEMPLATE_END
1066 ######################################################################
1067 ######################################################################
1068 ######################################################################
1070 # --------------------------------------------------------------------
1072 function put_FOOTER_TEMPLATE() {
1075 <br/><br/><br/><br/>
1077 <span style="font-size: 8pt">
1078 download iimage: <a style="font-size: 8pt" href="http://www.ronsc.de/iimage/iimage">www.ronsc.de</a>
1079 | (c) by <a style="font-size: 8pt" href="http://www.ronsc.de">Ronald Schmidt</a>
1081 <font color="#cccccc" style="font-size: 8pt">
1082 this site is generated at `date` by $USER@$HOSTNAME <br>
1083 with iimage version $VERSION, template version '$VERSION'
1093 # --------------------------------------------------------------------
1095 function put_HEAD_TEMPLATE_START() {
1098 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
1099 "http://www.w3.org/TR/html4/loose.dtd">
1102 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">
1103 <link rel="stylesheet" type="text/css" href="$PREFIX/css_template.css">
1104 <title>$TITLE</title>
1107 <body bgcolor="$BGCOLOR">
1110 border-left:1pt #ffffff solid;
1111 border-top:1pt #ffffff solid;
1112 border-bottom:1pt #000000 solid;
1116 border-right:1pt #000000 solid;
1117 border-bottom:1pt #8c8ea5 solid;
1118 background: #d6d3de;
1122 <table cellspacing="0" cellpadding="1" width="100%" border="0">
1123 <tr valign="middle" bgcolor="#d6d3de">
1125 <td align="left" width="10%">
1126 <a href="http://www.ronsc.de/iimage/iimage">iimage</a> $VERSION
1129 <b>$TITLE </b> $THIS_IMAGE
1137 # --------------------------------------------------------------------
1139 function put_HEAD_TEMPLATE_END() {
1152 <table cellspacing="0" cellpadding="0" width="100%" border="0">
1153 <tr valign="middle" bgcolor="#6f6f6f">
1154 <td><img src="$DATADIR/transp.gif" width="1" height="1" alt=""></td>
1155 </tr> <tr bgcolor="#e7e7e7"> <td>
1156 <img src="$DATADIR/transp.gif" width="1" height="1" alt=""></td> </tr> </table>
1164 # --------------------------------------------------------------------
1166 function put_HTML_TEMPLATE() {
1169 `generate_header start`
1170 <a href="../$THIS_HTML_SLIDE">Slideshow</a>
1171 <a href="../index.html">Index</a>
1172 <a href="$R_PREV_HTML"><b><<<</b></a>
1174 <a href="$R_NEXT_HTML"><b>>>></b></a>
1175 `generate_header end`
1179 <font size="-1"> $DESCRIPTION </font>
1181 <table cellspacing="0" cellpadding="0" border="0">
1184 <td width="640" height="480" valign="bottom" align="center" >
1186 if [ "$EXCLUDE_ORGINAL" = "true" ] ; then
1187 echo -e "<img alt=\"$R_DISPLAY_IMAGE\" src=\"$R_DISPLAY_IMAGE\" $R_DISPLAY_IMAGE_SIZE border="1">"
1189 echo -e "<a href=\"$R_IMAGE\"><img alt=\"$R_DISPLAY_IMAGE\" src=\"$R_DISPLAY_IMAGE\" $R_DISPLAY_IMAGE_SIZE ></a>"
1195 <td align="center"><font color="#999999" size="-2">
1196 ($THIS_IMAGE_DATE $THIS_IMAGE_GEOMETRY $THIS_IMAGE_BYTE kb )
1199 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1200 echo -e "<? if (IIMAGE_WRAPPER==1) isort_wrapper_ref(\"$THIS_IMAGE\"); ?>"
1204 <a href="../$THIS_HTML_INFO"><font color="#999999">more ...</font></a>
1211 `. $FOOTER_TEMPLATE`
1218 # --------------------------------------------------------------------
1219 # HTML_SLIDE_TEMPLATE
1220 function put_HTML_SLIDE_TEMPLATE() {
1223 `generate_header start "#888888"`
1225 <meta http-equiv="refresh" content="$SLIDE_DELAY; URL=` if [ \"$SLIDE_LOOP\" = \"true\" ] ; then echo $FIRST_HTML ; else echo $R_NEXT_HTML_SLIDE; fi` ">
1227 <font color="#888888">Slideshow</font>
1228 <a href="../$THIS_HTML">Stop</a>
1229 <a href="../index.html">Index</a>
1230 <a href="$R_PREV_HTML_SLIDE"><b><<<</b></a>
1232 <a href="$R_NEXT_HTML_SLIDE"><b>>>></b></a>
1233 `generate_header end`
1238 <table border="0" cellpadding="5" width="100%">
1240 <tr><td width="100%" align="center" valign="top">
1242 <font size="-1" color="#777777"> $DESCRIPTION </font>
1244 <table width="640" cellspacing="0" cellpadding="0" border="0">
1247 <td width="640" height="640" valign="middle" align="center" >
1248 <img alt="$R_DISPLAY_IMAGE" src="$R_DISPLAY_IMAGE" $R_DISPLAY_IMAGE_SIZE border="1">
1255 `. $FOOTER_TEMPLATE`
1262 # --------------------------------------------------------------------
1263 # HTML_INFO_TEMPLATE
1264 function put_HTML_INFO_TEMPLATE() {
1267 `generate_header start`
1268 <a href="../$THIS_HTML_SLIDE">Slideshow</a>
1269 <a href="../index.html">Index</a>
1270 <a href="$R_PREV_HTML_INFO"><b><<<</b></a>
1272 <a href="$R_NEXT_HTML_INFO"><b>>>></b></a>
1273 `generate_header end`
1280 <table border="0" cellpadding="5">
1282 <tr><td width="640" valign="top">
1284 <font size="-1"> $DESCRIPTION </font>
1286 <table width="640" cellspacing="0" cellpadding="0" border="0">
1289 <td width="640" height="480" valign="top" align="center" >
1292 if [ "$EXCLUDE_ORGINAL" = "true" ] ; then
1293 echo -e "<img src=\"$R_DISPLAY_IMAGE\" alt=\"$R_DISPLAY_IMAGE\" $R_DISPLAY_IMAGE_SIZE border=\"1\">"
1295 echo -e "<a href=\"$R_IMAGE\"><img src=\"$R_DISPLAY_IMAGE\" alt=\"$R_DISPLAY_IMAGE\" $R_DISPLAY_IMAGE_SIZE ></a>"
1299 ($THIS_IMAGE_DATE $THIS_IMAGE_GEOMETRY
1300 $THIS_IMAGE_BYTE kb )
1302 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1303 echo -e "<? if (IIMAGE_WRAPPER==1) isort_wrapper_ref(\"$THIS_IMAGE\"); ?>"
1311 </td><td valign="top">
1313 `generate_info_table`
1314 <a href="../$THIS_HTML"><font color="#999999">close ...</font></a>
1318 `. $FOOTER_TEMPLATE`
1323 # --------------------------------------------------------------------
1324 # INDEX_HEAD_TEMPLATE
1325 function put_INDEX_HEAD_TEMPLATE() {
1328 `generate_header start "" "$DATADIR"`
1329 <a href="../index.html">zurück</a>
1330 `generate_header end`
1335 <table width="80%" border="0" cellspacing="20" ><tr>
1336 <td width="50%" valign="top" align="center">
1340 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1341 echo -e "<? if (IIMAGE_WRAPPER==1) { iimage_description(\"$DIR\",\"$SUB_DST\",\"$SUB_TITLE\",2); } else { ?> $FOLDER_DESCRIPTION <? } ?>"
1343 echo -e "$FOLDER_DESCRIPTION "
1351 <td width="50%" valign="top">
1355 <td align="center" valign="top">
1356 <img src="$DIR_ICON" alt="Directory icon">
1359 <!-- index.html ist wichtig, da es sonst nicht ohne browser geht -->
1360 <b><a href="../index.html">..</a></b>
1373 <table border="0"><tr>
1379 # --------------------------------------------------------------------
1380 # INDEX_ITEM_TEMPLATE
1381 function put_INDEX_ITEM_TEMPLATE() {
1385 <td align="center" valign="bottom" width="200" height="220" >
1387 <span class="small">
1390 <table border="0" cellpadding="0" cellspacing="0">
1392 <td width="170" height="170" bgcolor="#dddddd" align="center" valign="middle">
1393 <a href="$THIS_HTML"><img alt="Thumbnail" src="$TN_IMAGE" $TN_IMAGE_SIZE ></a>
1397 <td bgcolor="#dddddd" align="center" valign="middle">
1399 <font size="-2" color="#bbbbbb">$THIS_IMAGE_DATE</font></td>
1402 <td align="center" bgcolor="#F7F7F7" class="smallgray">
1404 <a href="$THIS_HTML_INFO">($THIS_IMAGE_GEOMETRY $THIS_IMAGE_BYTE kb)</a>
1406 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1407 echo -e "<? if (IIMAGE_WRAPPER==1) isort_wrapper_ref(\"$THIS_IMAGE\"); ?>"
1420 # --------------------------------------------------------------------
1421 # INDEX_ICON_TEMPLATE
1422 function put_INDEX_ICON_TEMPLATE() {
1426 <td valign="bottom" align="center" width="200" height="220">
1429 <span class="small">$DESCRIPTION</font>
1431 <table border="0" cellpadding="0" cellspacing="0">
1433 <td width="170" height="170" bgcolor="#dddddd" align="center" valign="middle">
1434 <a href="$THIS_IMAGE"><img alt="Icon" src="$DATADIR/$ITEM_ICON" ></a>
1438 <td bgcolor="#dddddd" align="center" valign="middle">
1440 <font size="-2" color="#bbbbbb">$THIS_IMAGE_DATE</font></td>
1443 <td align="center" bgcolor="#F7F7F7" class="smallgray">
1445 ($THIS_IMAGE_BYTE kb)
1448 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1449 echo -e "<? if (IIMAGE_WRAPPER==1) isort_wrapper_ref(\"$THIS_IMAGE\"); ?>"
1462 # --------------------------------------------------------------------
1463 # INDEX_FOOT_TEMPLATE
1464 function put_INDEX_FOOT_TEMPLATE() {
1469 `. $FOOTER_TEMPLATE`
1474 # --------------------------------------------------------------------
1475 # INDEX_DIR_TEMPLATE
1476 function put_INDEX_DIR_TEMPLATE() {
1481 <td align="center" valign="top">
1482 <img src="$DIR_ICON" alt="Directory icon">
1486 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1487 echo -e " <? if (IIMAGE_WRAPPER==1) { iimage_description(\"$DIR\",\"$SUB_DST\",\"$SUB_TITLE\"); } else { ?>"
1493 <b><a href="$SUB_DST">$SUB_TITLE</a></b>
1494 <br> <font size="-2"><em>$SUB_DATE</em></font>
1497 <td><font size="-1">$FOLDER_DESCRIPTION</font>
1501 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1512 # --------------------------------------------------------------------
1514 function put_INFO_AWK_TEMPLATE() {
1517 print "<br><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
1520 (!/---------------/){
1522 if (a==1) bgcolor="#eeeeee"
1523 else bgcolor="#cccccc"
1527 print "<td bgcolor=\""bgcolor"\"><font size=\"-2\" >" $1 "</font></td>"
1528 print "<td bgcolor=\""bgcolor"\"><font size=\"-2\" >" $2 "</font></td>"
1538 # --------------------------------------------------------------------
1540 function put_CSS_TEMPLATE() {
1547 font-family: verdana,helvetica,sans-serif;
1551 font-family:monospace;
1554 text-decoration: none;
1559 .smallgray, .smallgray * {
1566 # --------------------------------------------------------------------
1567 function put_TRANSP_PIXEL () {
1569 "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\
1570 \xff\xff\xff\xff\x21\xf9\x04\x01\x0a\x00\x01\x00\x2c\x00\x00\
1571 \x00\x00\x01\x00\x01\x00\x00\x02\x02\x4c\x01\x00\x3b"
1574 # --------------------------------------------------------------------
1575 function put_DIR_ICON() {
1577 "\x47\x49\x46\x38\x39\x61\x14\x00\x16\x00\xc2\x00\x00\xff\xff\
1578 \xff\xff\xcc\x99\xcc\xff\xff\x99\x66\x33\x33\x33\x33\x00\x00\
1579 \x00\x00\x00\x00\x00\x00\x00\x21\xfe\x4e\x54\x68\x69\x73\x20\
1580 \x61\x72\x74\x20\x69\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x70\
1581 \x75\x62\x6c\x69\x63\x20\x64\x6f\x6d\x61\x69\x6e\x2e\x20\x4b\
1582 \x65\x76\x69\x6e\x20\x48\x75\x67\x68\x65\x73\x2c\x20\x6b\x65\
1583 \x76\x69\x6e\x68\x40\x65\x69\x74\x2e\x63\x6f\x6d\x2c\x20\x53\
1584 \x65\x70\x74\x65\x6d\x62\x65\x72\x20\x31\x39\x39\x35\x00\x21\
1585 \xf9\x04\x01\x00\x00\x02\x00\x2c\x00\x00\x00\x00\x14\x00\x16\
1586 \x00\x00\x03\x54\x28\xba\xdc\xfe\x30\xca\x49\x59\xb9\xf8\xce\
1587 \x12\xba\xef\x45\xc4\x7d\x64\xa6\x29\xc5\x40\x7a\x6a\x89\x06\
1588 \x43\x2c\xc7\x2b\x1c\x8e\xf5\x1a\x13\x57\x9e\x0f\x3c\x9c\x8f\
1589 \x05\xec\x0d\x49\x45\xe1\x71\x67\x3c\xb2\x82\x4e\x22\x34\xda\
1590 \x49\x52\x61\x56\x98\x56\xc5\xdd\xc2\x78\x82\xd4\x6c\x3c\x26\
1591 \x80\xc3\xe6\xb4\x7a\xcd\x23\x2c\x4c\xf0\x8c\x3b\x01\x00\x3b\
1595 # --------------------------------------------------------------------
1596 function put_AVI_ICON() {
1598 "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\
1599 \x48\x00\x48\x00\x00\xff\xfe\x00\x17\x43\x72\x65\x61\x74\x65\
1600 \x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\
1601 \xff\xdb\x00\x43\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\
1602 \x09\x09\x08\x0a\x0c\x14\x0d\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\
1603 \x14\x1d\x1a\x1f\x1e\x1d\x1a\x1c\x1c\x20\x24\x2e\x27\x20\x22\
1604 \x2c\x23\x1c\x1c\x28\x37\x29\x2c\x30\x31\x34\x34\x34\x1f\x27\
1605 \x39\x3d\x38\x32\x3c\x2e\x33\x34\x32\xff\xdb\x00\x43\x01\x09\
1606 \x09\x09\x0c\x0b\x0c\x18\x0d\x0d\x18\x32\x21\x1c\x21\x32\x32\
1607 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1608 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1609 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1610 \x32\x32\x32\xff\xc0\x00\x11\x08\x00\x3b\x00\x3a\x03\x01\x22\
1611 \x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\
1612 \x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x07\
1613 \x00\x03\x05\x04\x02\x01\xff\xc4\x00\x43\x10\x00\x01\x03\x02\
1614 \x04\x02\x05\x04\x0d\x0d\x01\x00\x00\x00\x00\x00\x01\x02\x03\
1615 \x04\x05\x11\x00\x06\x12\x21\x31\x41\x13\x22\x32\x51\x61\x14\
1616 \x35\x75\xb4\x07\x15\x16\x23\x36\x56\x71\x81\x95\xb1\xb3\xd3\
1617 \xd4\x24\x33\x42\x43\x53\x55\x63\x72\x82\x91\x93\xa1\xc1\xf0\
1618 \xff\xc4\x00\x19\x01\x01\x01\x00\x03\x01\x00\x00\x00\x00\x00\
1619 \x00\x00\x00\x00\x00\x00\x01\x00\x02\x03\x04\x05\xff\xc4\x00\
1620 \x20\x11\x00\x02\x02\x02\x01\x05\x01\x00\x00\x00\x00\x00\x00\
1621 \x00\x00\x00\x00\x01\x02\x11\x03\x31\x13\x14\x15\x21\x51\x91\
1622 \x52\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\
1623 \x77\xd5\xea\x8d\x51\xa9\xab\x9a\xf3\x4f\x3c\x02\xdb\x69\x0d\
1624 \x32\x01\x5b\x8b\x5a\xd2\x84\x24\x5c\x81\x72\xa5\x24\x6e\x40\
1625 \xdf\x72\x31\x9a\x73\x1d\x49\x36\xbe\x4e\xad\x8b\xf0\xf7\xe8\
1626 \x5f\x88\xc7\xdc\xe3\xe6\x48\xde\x95\xa7\x7a\xeb\x38\xec\xac\
1627 \xd4\x1a\xa6\xc7\x4c\x87\x96\x50\x84\xf7\x0b\x92\x6e\x2c\x00\
1628 \xe6\x7c\x37\xc0\x07\x12\xb3\x1d\x49\x20\x95\x64\xea\xe0\x03\
1629 \xf8\xd0\xbf\x11\x88\x9c\xc7\x52\x50\xba\x72\x75\x6c\x8e\xf0\
1630 \xf4\x2f\xc4\x60\x7e\x97\x5f\x6f\x34\xb5\x51\x91\x22\xb2\xf4\
1631 \x68\xb0\x81\x5b\x8c\x45\x46\x92\x10\x2f\x7d\x4e\xd8\xea\x3b\
1632 \x6e\x11\xb0\x3b\x5c\xe3\x8e\x8d\x5b\xf2\xea\x94\x98\xb9\x76\
1633 \xa5\x39\x52\xa3\x30\x64\xf9\x3c\xe7\x56\xfb\x2e\xa7\x55\xb4\
1634 \xa9\x6a\xb9\x49\x24\xec\x41\xdb\xb8\x8d\x8a\x21\x6f\xba\x1a\
1635 \x9f\xc4\xda\xe7\xf9\xa1\x7e\x23\x17\xc6\xcc\x4c\x39\x35\x88\
1636 \x53\x62\x4b\xa6\xcb\x7c\x12\xd3\x52\xd2\x9f\x7c\x20\x5c\x80\
1637 \xb4\x29\x48\x2a\xb5\xce\x9d\x57\xb0\x26\xd6\x06\xd6\x50\x6b\
1638 \x8c\x57\xe9\x2d\x4e\x61\x2a\x46\xae\xab\x8d\x2b\xb4\xda\xc6\
1639 \xc5\x27\xe4\x3c\xf9\x8d\xf8\x11\x8c\x1c\xd7\x28\x88\xd2\xa1\
1640 \x49\xa1\x4f\x9b\x1d\xd5\x25\xc6\xdf\x8c\x52\x3a\x35\x0d\x3a\
1641 \x4a\x4e\xa0\xa0\xa0\xa4\xdc\x11\x62\x0d\xac\x7b\xa2\x0c\xb1\
1642 \x30\x29\x91\x73\x1b\x95\xd8\x12\xe3\xc9\x53\x8e\x49\x80\xff\
1643 \x00\x93\xad\xd7\x1b\x0d\xa9\xce\xaa\x54\x0a\x92\x36\x0a\xb2\
1644 \xc0\x36\xd8\x90\x48\x00\x10\x01\x5e\x00\x30\x33\x8f\x99\x23\
1645 \x7a\x56\x9d\xeb\xac\xe2\xaa\xc2\xa2\xbf\x5b\x48\x9c\x7f\x24\
1646 \x85\x11\x4f\x29\x22\xfd\x65\x38\x74\x27\xe5\x3d\x55\x5b\xc4\
1647 \x8c\x5b\x9c\x7c\xc9\x1b\xd2\xb4\xef\x5d\x67\x18\xf9\xc1\xc6\
1648 \x63\xce\x8c\xfb\xa9\x71\x4c\xba\xd2\x98\x7f\xa2\x3d\x70\x35\
1649 \x0d\x2a\x48\x3c\x4a\x4a\x8e\xdd\xc4\xe1\x13\x9e\x85\x2f\x2c\
1650 \x52\x72\x9c\xe9\xd4\xfa\x7b\xc9\x8d\xac\xc7\x71\xb7\xc0\x2a\
1651 \x72\xc0\x59\x1c\x48\xd3\x65\x7d\x78\xab\x2d\x66\x7a\x60\x87\
1652 \x51\xe8\xe9\xcc\xc0\x4c\x44\x09\x0e\x06\x40\xb2\x93\xc0\x6a\
1653 \x36\xb9\x56\xdb\x5f\x8f\x2e\x18\xaa\x34\xbc\xa9\x13\x2b\xb5\
1654 \x4c\x8c\xea\xe5\x42\x48\xd4\x7b\x4b\x75\x4a\xe6\xa5\x90\x2f\
1655 \xab\x6f\x0e\x18\x09\xab\xd5\xcc\xa8\xa8\x8d\x44\x8e\xd4\x4a\
1656 \x7a\x1c\xd6\x5b\x01\x4a\x53\x8e\x0e\x0b\x75\x43\x57\x0d\xac\
1657 \x9f\x0e\x23\x11\x07\xbe\xc6\xcf\x07\x1a\xac\x14\x24\x25\x02\
1658 \x43\x41\x40\x0f\xd6\x74\x28\xd7\xff\x00\x07\xcd\x83\x75\x2f\
1659 \x0b\x4c\xb7\x5a\x95\x43\xcb\x8c\x47\x8b\x0e\x9a\xfa\x13\x75\
1660 \x29\x4b\xa9\xe8\x5b\x8a\x26\xe5\x56\x2d\xf3\x37\x3c\x79\xe0\
1661 \xaa\x85\x99\xe2\xd7\x52\xe2\x12\xdb\x91\xe5\x35\x62\xe3\x0e\
1662 \x10\x48\x07\x82\x81\x17\x04\x1e\xf1\xf3\xdb\x11\x1c\xb9\x2b\
1663 \xe1\x46\x70\xb7\xef\x21\xf6\x0c\xe0\xdb\x01\x39\x27\xe1\x3e\
1664 \x6f\xf4\x8a\x7e\xc1\x9c\x1b\x60\x03\x03\x38\xf9\x92\x37\xa5\
1665 \x69\xde\xba\xce\x38\x33\x14\x53\x25\xf8\xa1\x0b\xd0\xa5\x12\
1666 \x02\xbb\xba\xc8\xe5\x71\x7f\xf7\xff\x00\x47\x7e\x71\xf3\x24\
1667 \x6f\x4a\xd3\xbd\x75\x9c\x55\x51\xd4\xb7\xe3\x84\xab\x4a\xaf\
1668 \x60\x7b\xba\xc9\xf1\xdf\x87\xfe\xe4\x88\x1f\x55\xc9\x4d\x3e\
1669 \x97\x1f\x96\xa6\xde\x50\x1c\x14\xc8\xeb\x5b\x96\x34\xa9\x94\
1670 \x54\x45\xa6\x21\x0c\xb6\x86\xda\x41\x5d\x92\x81\x60\x06\xa3\
1671 \xc8\x5f\x1b\x12\xe2\xbe\xa6\x54\xa7\x65\xea\x01\x27\x6e\x8c\
1672 \x0b\xf8\x62\xf6\x36\x80\xa1\xfc\xff\x00\x59\xf1\x38\x24\xe9\
1673 \x59\x2d\x8b\x1a\x34\xba\xcd\x39\x72\xfc\x9e\x81\x3d\xf4\xba\
1674 \xf2\xd4\x92\xb1\xd1\x58\x74\x8b\x3f\xa5\x6e\x4a\xc5\xf1\x24\
1675 \xd7\xdb\xce\x14\xc9\xce\xd0\x9f\x8a\x85\xac\xb0\xfa\xc2\x83\
1676 \x83\x42\x87\x3d\x37\xd2\x01\x4a\x4d\xcf\x76\x09\x61\x53\x29\
1677 \x86\x84\x8a\x73\xcb\x8c\x2a\x72\xda\x53\xe8\x52\xbb\x68\x3c\
1678 \x52\x9d\x56\xb0\x04\x03\x7b\x91\xc7\x86\x3c\x16\xe0\x0c\xaf\
1679 \xed\xb1\x8f\x1c\x3e\x23\xf9\x17\x47\xd1\x8f\xce\xea\xed\xda\
1680 \xdd\xad\x3b\xdf\x1e\x57\x70\x9d\x5b\x8a\xd5\xef\xea\xd6\xf4\
1681 \x76\x74\xd1\xba\xb7\xba\xd1\xa5\x93\x52\xa6\x33\x1e\x66\x53\
1682 \xe9\x2d\x09\x33\xd2\xa6\x35\x8d\x3d\x28\x0c\x35\x72\x9b\xf6\
1683 \xbb\x2a\xe1\xdc\x7b\xb0\x6d\x85\xf2\xa3\xa9\x8c\xe9\x94\x2f\
1684 \x11\x0c\x74\x8c\xa9\x6b\xd0\xc2\x5b\xd4\xe9\x8e\xee\xbb\xd8\
1685 \x0d\xf8\x6d\xca\xfc\xaf\x86\x0e\x3b\xb0\x65\x79\x53\x6d\x55\
1686 \x33\x9b\x2c\x14\x1a\xa6\x61\xe6\xd8\xb2\xe5\x65\xf5\x08\x4c\
1687 \x17\xe4\x31\x2a\x2c\xa0\xd0\x50\x05\x61\xa7\xdb\x75\x49\x04\
1688 \x90\x2e\x42\x08\x17\x20\x5e\xdb\x8c\x0b\x3d\x98\xea\xee\x14\
1689 \x9f\x71\xb5\x90\x53\xc3\xdf\x23\x9e\x60\xfe\xd7\xc3\x0c\x5c\
1690 \x4c\x6f\x35\x8b\x75\xe6\x1a\xca\xfb\x59\x42\xb4\x7f\xae\x37\
1691 \xde\xe3\xd9\xcc\x75\x55\x32\xa6\x95\x93\x2b\x5a\x54\x08\x36\
1692 \x79\x80\x77\xf1\xe9\x6e\x30\xc5\xc4\xc4\x36\x25\x3d\xa7\x4f\
1693 \xc5\x0c\xd3\xf4\x83\x5f\x7d\x89\xed\x3a\x7e\x28\xe6\x9f\xa4\
1694 \x5a\xfb\xdc\x3a\xf1\x31\xab\x83\x17\xe5\x7c\x33\xe4\x9f\xb6\
1695 \x2d\x7d\x8f\x72\xb3\x8d\x54\xe5\x55\xea\x50\xa6\xc6\x71\xb7\
1696 \xc9\x82\xcc\x99\x25\x65\xa4\x16\xc2\x4d\xec\xa2\x92\x6e\x5c\
1697 \xef\xd9\x5f\xd9\x95\x89\x89\x8c\xe3\x08\xc5\x54\x55\x18\x39\
1698 \x39\x79\x67\xff\xd9"
1701 # --------------------------------------------------------------------
1702 function put_MOV_ICON() {
1704 "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\
1705 \x48\x00\x48\x00\x00\xff\xfe\x00\x17\x43\x72\x65\x61\x74\x65\
1706 \x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\
1707 \xff\xdb\x00\x43\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\
1708 \x09\x09\x08\x0a\x0c\x14\x0d\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\
1709 \x14\x1d\x1a\x1f\x1e\x1d\x1a\x1c\x1c\x20\x24\x2e\x27\x20\x22\
1710 \x2c\x23\x1c\x1c\x28\x37\x29\x2c\x30\x31\x34\x34\x34\x1f\x27\
1711 \x39\x3d\x38\x32\x3c\x2e\x33\x34\x32\xff\xdb\x00\x43\x01\x09\
1712 \x09\x09\x0c\x0b\x0c\x18\x0d\x0d\x18\x32\x21\x1c\x21\x32\x32\
1713 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1714 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1715 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1716 \x32\x32\x32\xff\xc0\x00\x11\x08\x00\x3b\x00\x3a\x03\x01\x22\
1717 \x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\
1718 \x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x07\
1719 \x00\x04\x05\x03\x01\x02\xff\xc4\x00\x3e\x10\x00\x01\x03\x03\
1720 \x03\x01\x03\x07\x0a\x03\x09\x00\x00\x00\x00\x00\x01\x02\x03\
1721 \x04\x00\x05\x11\x06\x12\x21\x41\x13\x31\x51\x22\x32\x35\x61\
1722 \x75\x81\xb4\x07\x14\x15\x16\x23\x52\x56\xc1\xd3\xd4\x82\x95\
1723 \xa1\x36\x53\x55\x63\x73\x91\x93\xb1\xb3\xff\xc4\x00\x18\x01\
1724 \x01\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
1725 \x00\x00\x02\x03\x04\x01\xff\xc4\x00\x24\x11\x00\x02\x02\x01\
1726 \x03\x02\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\
1727 \x11\x03\x04\x14\x21\x13\x61\x12\x41\x51\x52\x71\x81\x91\xff\
1728 \xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\x78\xde\
1729 \x2e\xad\x59\xad\xab\x9a\xf3\x4f\x3c\x02\xdb\x69\x0d\x32\x01\
1730 \x5b\x8b\x71\x69\x42\x12\x32\x40\xc9\x52\x92\x39\x20\x73\xc9\
1731 \x15\x98\x75\x25\xc8\x10\x0e\x8d\xbe\x0c\xf7\x7d\xb4\x2f\xdc\
1732 \x57\xba\xcb\xd0\x71\xbd\xab\x6d\xf8\xd6\x6b\xae\xa3\xbc\x33\
1733 \x65\x88\x99\x2e\x95\x13\xce\xd4\x23\x1b\x94\x41\x1d\xd9\x20\
1734 \x7a\xc9\x3c\x00\x09\x38\x1c\x80\x38\xab\x52\x5c\x92\x32\xad\
1735 \x1b\x7c\x03\xfd\x68\x5f\xb8\xa8\x9d\x49\x72\x50\xca\x74\x75\
1736 \xf0\x8f\x1e\xda\x17\xee\x28\x72\x1d\xed\x8b\xee\x9e\x95\x7a\
1737 \xb8\x5f\x24\xfc\xd5\x95\x6d\x53\x10\x42\x98\x48\xce\x36\x80\
1738 \xbc\x05\xaf\xbf\xce\x1b\x41\xf0\xc5\x56\xb3\x6a\x17\x55\x1e\
1739 \xe5\x32\xc7\x2e\x64\xc6\xad\x85\x3f\x39\x87\x31\xc5\x38\x1c\
1740 \x49\x04\x9e\xcd\xd5\x79\x5b\xc0\x04\xf2\x48\x3d\xc7\x19\xc8\
1741 \x00\xb7\xeb\x15\xcf\xf0\x6d\xf3\xfe\x68\x5f\xb8\xae\xf1\xb5\
1742 \x1b\x0e\x4d\x62\x14\xd8\x92\xed\xb2\xdf\x04\xb4\xd4\xb4\xa7\
1743 \x0b\x20\x64\xa4\x2d\x0a\x52\x0a\xb1\x93\xb7\x76\x70\x09\xc6\
1744 \x01\xc5\xcb\x75\xc6\x3d\xd6\xdc\xc4\xe8\x8b\xdc\xc3\xe8\x0b\
1745 \x41\x23\x07\x07\xa1\x1d\x0f\xab\xa5\x0c\x6a\xb9\x44\x46\x95\
1746 \x0a\x55\x8a\x7c\xd8\xee\xa8\x38\x87\xe3\x14\x8e\xcd\x40\x27\
1747 \x69\x49\xdc\x14\x14\x14\x9c\x82\x30\x47\x04\x1f\x00\x0d\x2a\
1748 \x50\x96\x84\xd4\x8e\xdf\x60\x4b\x8f\x25\x4e\x39\x26\xde\xff\
1749 \x00\xcd\xd6\xeb\x8d\x76\x6a\x73\xc9\x4a\x81\x52\x47\x01\x58\
1750 \x58\x07\x1c\x12\x09\x00\x02\x05\x16\xd0\x03\xfa\xcb\xd0\x71\
1751 \xbd\xab\x6d\xf8\xd6\x6b\x3a\xfa\xab\x6c\xb7\xaf\x0b\xbc\x36\
1752 \xb7\x62\x46\x64\x45\x4b\x48\xf3\x94\x56\x90\xb5\xe3\xd7\x8d\
1753 \xbe\xe0\x6b\x47\x59\x7a\x0e\x37\xb5\x6d\xbf\x1a\xcd\x0e\x6b\
1754 \x26\xa0\x37\x29\xd1\x70\x72\x43\x70\x6e\x0d\x6c\x79\xd8\xea\
1755 \xc2\xd9\x52\x40\x4e\xe1\xc1\xef\x04\x03\x8c\xe3\x03\x8e\xfa\
1756 \x03\xec\x5c\x74\xf5\xab\x42\xb6\xec\x5b\x6a\x9c\x8b\x35\x44\
1757 \x25\x87\xf1\xb9\xc5\x02\x46\x54\x79\xee\xdb\xff\x00\x55\x56\
1758 \x2e\xa4\x84\xf6\x8a\xb8\x98\xf0\x9a\x87\xd9\x6e\x8d\xd8\xb2\
1759 \x90\x10\xa7\x1c\x4f\x18\xe3\xbf\x91\x9e\xf3\xd7\xad\x4b\x8d\
1760 \xcb\x4b\x7d\x06\xc4\x54\xa0\xc9\x87\x1d\x19\x69\x2c\x6e\x24\
1761 \x7f\x10\xea\x7a\xe4\xf5\xa0\x1b\xcd\xce\x45\xd0\x32\xd5\xbc\
1762 \x31\x0a\xdc\x80\xa4\xc7\x6d\xad\xdb\x1a\xcf\x0a\x5a\x94\x01\
1763 \x05\x67\x9e\x7a\x67\xbc\xd0\x0d\x3f\x93\xe7\x90\xe6\x9a\x75\
1764 \x6c\x80\x23\xaa\x6c\x92\xce\x3e\xef\x6a\xaf\xcf\x26\x8a\x0a\
1765 \xe9\x7d\x6f\xd4\xb2\xac\xf6\x68\xac\x47\xb6\x5b\x95\x19\x96\
1766 \xd2\x94\xa1\x17\x30\x1c\x09\xc7\xdd\x52\x07\x3e\xfa\x27\xb2\
1767 \xdf\xe2\x5f\x62\x29\xf8\xdb\xd0\xb4\x1d\xae\xb2\xe0\xc2\xdb\
1768 \x57\x7e\x0e\x38\xf7\x8c\x8a\xe0\x33\xb4\x4e\x3e\xb4\xeb\x0c\
1769 \x7f\x89\x0f\xfc\x19\xa3\x8a\x06\xd1\x1f\xda\x8d\x5f\xed\x24\
1770 \xfc\x3b\x34\x73\x5d\x00\xfe\xb2\xf4\x1c\x6f\x6a\xdb\x7e\x35\
1771 \x9a\xcf\xd4\x71\x0c\xa7\xe2\xa5\x2b\xda\xa5\x12\x01\xf5\xee\
1772 \x47\x4c\xf3\xfd\x7f\x31\xa1\xac\xbd\x07\x1b\xda\xb6\xdf\x8d\
1773 \x66\xb8\xdc\x42\x96\xf4\x70\x95\x6d\x56\x70\x0f\x87\x94\x9e\
1774 \x99\xe7\xfa\xfe\x74\x00\x6d\xcf\x43\x47\x71\x2e\x3f\x24\x32\
1775 \xf1\xc1\x38\x53\x03\x93\x57\xd9\xb7\x26\x2d\x95\x44\x23\xc9\
1776 \x42\x5c\x29\x6d\xb1\x92\x46\x4f\x00\x0c\xe7\xdd\x9a\xde\x97\
1777 \x11\xe5\x32\xa5\x3b\x2f\x78\x00\xf1\xd9\x81\x9a\xce\x98\xa8\
1778 \x6d\x28\x3b\x3a\x3a\x64\x30\x88\xce\x6e\x49\x19\x23\x73\xcd\
1779 \xa4\xa8\x1e\x79\x01\x47\x9c\xfb\xea\x8d\x46\x5e\x94\x1c\xc9\
1780 \xe3\x87\x8e\x54\x04\x69\xf9\xb7\xdb\x75\xa1\xb8\xad\x69\xd9\
1781 \xaf\x79\x29\xf2\x9d\x50\x6b\x1e\x48\x18\xc2\xb9\xe9\x57\xb4\
1782 \xdc\x8b\xd4\x7d\x69\xda\x4a\xb3\xbf\x0e\x3c\xb6\x14\x1e\x51\
1783 \x21\x68\xdc\x93\x94\x92\xa4\xf0\x3b\xd5\xc1\xef\xcd\x14\x5b\
1784 \x21\xd8\xe4\x42\x84\x1b\x61\x0b\x8e\x9b\x89\x68\xbe\xf2\x40\
1785 \x5b\xbf\x64\xa5\x00\x7d\x5b\x88\x18\xf5\x0a\xaa\xd2\x58\x89\
1786 \x12\x0c\x9b\xb5\xbe\x33\x6f\x99\xe5\xb5\x36\xa8\xe9\x46\xe6\
1787 \x4a\x70\x49\x4e\x06\x70\x4f\x06\xb1\x6f\xe7\x49\xb4\xab\xe7\
1788 \x8f\x2e\xdd\xfe\xcd\x1b\x75\x75\x65\xfd\x18\x95\x31\xa9\x35\
1789 \x32\x9f\x49\x68\x49\xb8\x05\x30\x56\x36\xf6\xa0\x30\xd6\x4a\
1790 \x73\xe7\x79\xaa\xee\xf0\x3e\x14\x71\x4b\x91\x16\x35\xb3\x5d\
1791 \xe9\xab\x5b\x08\x6c\xad\x87\x1e\x53\xae\x84\x8d\xca\x2a\x65\
1792 \xd2\x01\x3d\xe7\x03\x1f\xef\x4c\x6a\xd9\xa7\xcc\xf2\xc5\xb9\
1793 \x2a\x69\xd1\x46\x48\x28\x3e\x0c\x3d\x5d\x16\x5c\xad\x3c\xa1\
1794 \x05\x83\x22\x43\x12\xa2\xca\x4b\x21\x40\x17\x03\x32\x1b\x75\
1795 \x49\x04\x90\x32\x42\x08\x19\x20\x67\x1c\x8a\x14\x7b\x51\xde\
1796 \x1c\x52\x48\xd1\xb7\x94\x94\xff\x00\x99\x1c\xf5\x07\xfb\xdf\
1797 \x55\x31\xea\x60\x78\x56\x82\xb1\x68\xbd\x43\x7a\x5f\x9f\xa4\
1798 \x2f\x47\xf8\xe3\x7e\xad\x67\x5d\x57\x26\xf2\xa6\x95\x2f\x47\
1799 \x6a\x20\xa6\x81\x09\xec\x66\x32\xd8\xe4\xe7\x90\x1e\xa6\xe6\
1800 \x07\x85\x4c\x0f\x0a\x8c\xa1\x19\x2a\x92\xb4\x75\x36\x9d\xa1\
1801 \x25\xf4\x3a\x7f\x07\xea\x9f\xe6\x2d\x7e\xb5\x4f\xa1\xd3\xf8\
1802 \x43\x54\xff\x00\x31\x6b\xf5\xa9\xdb\x81\xe1\x53\x03\xc2\xab\
1803 \xdb\xe1\xf6\x2f\xc4\x4b\xa9\x3f\x56\x2c\xfe\x4f\x34\xaa\xd9\
1804 \xba\x4a\xbb\xdc\x60\xcd\x8c\xe3\x6f\x93\x05\x99\x32\x4a\xcb\
1805 \x48\x2d\x84\x9c\xe1\x45\x24\xe4\xb9\xd4\xf0\xae\x9d\x19\x95\
1806 \x2a\x55\x91\x84\x60\xaa\x2a\x88\xb9\x37\xcb\x3f\xff\xd9"
1809 # --------------------------------------------------------------------
1810 function put_SND_ICON() {
1812 "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\
1813 \x52\x00\x00\x00\x0b\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa9\
1814 \xac\x77\x26\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\
1815 \x00\xff\xa0\xbd\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\
1816 \x00\x0b\x11\x00\x00\x0b\x11\x01\x7f\x64\x5f\x91\x00\x00\x00\
1817 \x07\x74\x49\x4d\x45\x07\xd3\x04\x19\x0b\x3a\x3b\x18\x18\xa2\
1818 \x48\x00\x00\x01\x86\x49\x44\x41\x54\x78\x9c\x63\x36\x36\x37\
1819 \x62\x10\x11\xe4\x63\x60\xf8\xf7\x9f\xe1\xeb\xb7\xef\x0c\xe8\
1820 \x20\x35\xda\x2b\xd2\xd1\x58\x5d\xf4\xf8\x85\x5b\x0f\x18\x67\
1821 \xe7\x87\x70\x32\x32\xfc\xff\xfe\x9f\x81\x81\xe1\x3f\x23\x03\
1822 \x53\xda\x84\xb5\xff\x60\x0a\x5b\x92\xbd\x95\x8f\xbc\xfc\x7e\
1823 \x8a\x9b\x83\xf5\xad\x87\x0c\x8f\x36\x23\x86\x51\x50\x30\x21\
1824 \x2b\x80\x67\xe7\xd3\xcf\x97\x7f\xfd\xff\x27\xc3\xf9\xff\xdf\
1825 \x77\x2d\x0e\x26\x1f\x26\x6c\x0a\x67\xe7\x07\x33\xed\x7e\xfe\
1826 \xa5\x8b\x4b\x86\x5b\xfa\xfb\xdf\x5f\x8c\xff\x38\x38\x78\x6f\
1827 \x73\xb0\x6f\x62\x42\x52\xc0\xc8\xc0\xc0\xc0\x30\x27\x3f\x84\
1828 \x69\xdb\xc3\x8f\x26\x3c\xb2\xbc\x19\x0f\xef\xdc\x7b\xab\xc8\
1829 \xce\xcd\x76\x64\xe7\xf1\x33\x7b\x37\x1e\x3b\xca\x38\x3d\x27\
1830 \x48\x70\xdf\xab\xaf\xdd\xbf\xfe\x33\xea\x2b\x73\x30\xc5\xab\
1831 \x0b\x72\x3e\x5a\xf5\xf0\xdd\x53\x76\x09\x66\x9e\x63\x2b\x4e\
1832 \x5b\x7c\xf8\xf8\xf1\x34\x1f\x1f\x9f\x16\x03\x03\x43\x33\x83\
1833 \xb7\xaf\x73\xcf\xb1\x53\xc7\xfe\xf5\x4d\xef\xfb\xe7\x12\xe8\
1834 \xf6\xc3\xc6\xc3\x3e\x2e\xb6\x24\xe2\xbf\x84\xa6\xe8\xa3\x39\
1835 \x50\xdb\x60\x80\xe5\xf3\xdf\xff\x5e\xaf\xde\xbf\x64\xbc\x7a\
1836 \xeb\x0a\xc3\xbf\x7f\x7f\xd9\xa5\xe5\xc5\xe6\xde\x7d\x74\x8f\
1837 \x41\xf8\x27\x47\x65\xca\xc4\xb5\xff\x91\x15\x33\x31\xb3\x30\
1838 \xcc\x6a\x6c\x6c\xfe\x77\xe9\xf4\x65\x86\x67\x0f\x9f\x30\xfc\
1839 \xfa\xf1\x93\xe5\xf3\xb3\x9f\x5f\x3c\x1d\x0d\x0f\xa2\x7b\x9c\
1840 \xf9\xc1\xcd\xfb\x27\x84\x05\xf8\xcf\x72\xf2\x70\x8a\xf3\xf3\
1841 \x70\xff\xfe\xf7\xe9\xeb\x5a\x27\x79\xb1\x72\x55\x7e\xf6\x6b\
1842 \x9b\x4e\x5e\x47\x31\x19\x12\x02\x05\x21\x1c\x0c\x0c\x0c\x9c\
1843 \x0c\xff\x19\x58\x18\x18\xfe\x7f\x61\x60\x60\xf8\x81\xee\x04\
1844 \x06\x06\x06\x06\x00\xb1\xb5\x9b\x5c\xc8\xf8\x64\x33\x00\x00\
1845 \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82"
1849 ######################################################################
1850 ######################################################################
1851 ######################################################################
1853 # --------------------------------------------------------------------
1854 # print program info
1856 echo "_____________________________________________________________________________"
1857 echo "IIMAGE $VERSION (c) Ronald Schmidt http://www.ronsc.de"
1861 # --------------------------------------------------------------------
1863 function version() {
1864 echo "Version$SVN_ID"
1867 # Help by Holm Sieber
1868 # sieber@prudsys.com
1869 # --------------------------------------------------------------------
1877 -v/-V print CVS version
1878 -h print this syntax help
1879 -H print variables description of description file
1880 -R go recursively through subdirectories
1881 -U get current version of iimage from iimage WWW server
1882 -D get developer version of iimage from iimage WWW server
1883 -f force creation of HTML-Files
1884 -T use new templates from iimage (impl. -f)
1885 -F force rebuild of thumbnails (impl. -f)
1886 -d generate sample desciption-file (impl. -u)
1887 -u update image-names in description-file
1888 -a create AUTORUN.INF
1889 -s include iimage-special-php-tags
1892 IImage generates a set of HTML files as index of all images
1893 at current directory. The following image types are recognized:
1895 echo " $FILE_EXTENSIONS"
1897 IImage creates a directory ".tmp" in which tumbnails and a lot
1898 of html files will be created. At current directory index.html
1899 will be a start point for viewing the images.
1900 IImage uses a file named "description" which contains some
1901 options about the images in the same directory. Use "iimage -H"
1902 to get a description of the syntax of this file.
1906 # --------------------------------------------------------------------
1907 # syntax description file
1908 function help_description() {
1910 VARIABLES in FILE "description"
1911 order= order of appearance of subfolders, "accesstime",
1912 "alphabetically" (default) or "dec" or explicit
1913 order, e.g. "folder1 folderb folder7"
1914 iorder= order of appearance of images, "alphabetically" (default),
1915 "accesstime" (oldest picture first),
1916 "dec" (accesstime, newest picture first),
1917 "digicam" (sorts alphabetically but ignores leading
1918 characters), "description" (order as descriptions)"
1919 or explicit order, e.g. "dscn0002.jpg dscn0232.jpg"
1920 title= title of folder (default: dir-name)
1922 description= folder description
1923 <filename>= image "filename" title
1924 ignore= files and directories to ignore
1925 AUDIODIR= optional dir for wav-files
1931 ######################################################################
1932 ######################################################################
1933 ######################################################################
1935 # parse arguments ####################################################
1937 while getopts ":hHvVRUDTfFduas" OPT ; do
1940 v|V) # print version
1948 echo -e "[autorun]\nshellexecute=index.html\n" >AUTORUN.INF
1953 h) # print syntax help
1958 H) # print syntax description file
1963 R) # run recursively
1967 echo "update $0 from http://www.ronsc.de/iimage/iimage"
1969 wget http://www.ronsc.de/iimage/iimage -q --cache=off -O $0
1974 echo "update $0 from http://www.ronsc.de/iimage/devel/iimage"
1976 wget http://www.ronsc.de/iimage/devel/iimage.gz -q --cache=off -O $0.gz
1983 FORCE_TEMPLATES=true
1986 create_description_template
1987 update_description_names
1991 update_description_names
1997 ":") # wrong argument
1998 echo -n "ERROR: Missing argument for option \"$OPTARG\". "
1999 echo "Use \"iimage -h\" to get more help."
2003 echo -n "ERROR: Unknown option \"$OPTARG\". "
2004 echo "Use \"iimage -h\" to get more help."
2011 ##############################################################
2013 if [ "$DISABLED" != "" ] ; then
2014 echo "directory disabled -> exit"
2018 # check for programms ################################################
2022 [ "$RECURSIVE" = "true" ] && iimage_recursive $*
2027 diff --brief $DATADIR/ls-l.new $DATADIR/ls-l.old >/dev/null || NEED_UPDATE=true
2028 [ "$FORCE" = "true" -o \
2029 "$FORCE_TN" = "true" -o \
2030 "$FORCE_TEMPLATES" = "true" ] && NEED_UPDATE=true
2032 if [ "$NEED_UPDATE" = "true" ] ; then
2041 } 2>>$DATADIR/errors | tee -a $DATADIR/log
2046 [ -s $DATADIR/errors ] && echo -e "\nWARNING: there were errors. see $DATADIR/errors"
2048 # vim:ai:expandtab:sw=3:ts=3:tw=200