fn conf_enable_flip { extensions=(pdf ps) prev_res=150 thumb_res=15 pages_root=`{pwd}^'/_werc/pages' mkdir -p $pages_root base_path=`{basename -d $conf_wd} conf_enable_app flip } fn flip_init { # this could cause problems with filenames matching [0-9]+ pages_doc=`{echo $local_path | sed 's|/[0-9]+(-[0-9]*)?/?$||'} if (test -f $werc_root^'/'^$pages_doc^'.'^$extensions){ name=`{basename $pages_doc} pages_doc_root=$pages_root^'/'^$name pages_file=`{ls $werc_root^'/'^$pages_doc^'.'^$extensions} if (! test $pages_doc_root -nt $pages_file){ mkdir -p $pages_doc_root'/thumbs/' pages2pngs $pages_file $pages_doc_root'/thumbs' 15 pages2pngs $pages_file $pages_doc_root 90 } page_num=`{basename $req_path} page_tot=`{ls $pages_doc_root^/*.png |wc -l} if (echo $page_num | grep -s '^[0-9]+-[0-9]*$'){ page_num=`{basename $req_path | sed 's/-[0-9]*//'} handler_body_main=pageindex } if not if (~ $pages_doc $local_path){ page_num=1 handler_body_main=pageindex } if not handler_body_main=pageprev if (test $page_num -gt $page_tot) handler_body_main=() } } fn pages2pngs { gs -q -dNOPAUSE -dBATCH -s'DEVICE=png16m' -r^$3 -d'TextAlphaBits=4' -d'GraphicsAlphaBits=4' -s'OutputFile='^$2^'/%d.png' $1 } fn pagelist { ls -p $pages_doc_root | sed 's/\.png//p;d' | sort -n } # Usage: paginate number step total 'string %d %s' fn paginate { awk ' BEGIN { n='$1'; s='$2'; s3=int(s/3); a=int(n/s3)*s3-s3; if(a<1) a=1; if(n>a+2*s3) a+=s3; w=a+s; t='$3'; str="'$4'"; } NR==a && NR>1 { printf(str, 1, "first"); if(n-s > 0) printf(str, n-s, "(-" s ")"); print "|"; } NR>=a && NR' echo ''$img'' } } fn pagenav { ls -p $pages_doc_root^/*.png | sort -n | awk ' /^'^`{basename $req_path}^'\.png/{ if(sub("\.png$", "", p)) print "'$1'"; print "'$3'"; getline; if(sub("\.png$", "", $0)) print "'$2'"; exit; } {p = $0;}' } fn pageindex { tpl_handler apps/flip/pageindex.tpl } fn pageprev { tpl_handler apps/flip/pageprev.tpl }