flip
view app.rc @ 11:a8834c7397c4
fix bug in link to original file
| author | yiyus@1936 |
|---|---|
| date | Sat Jun 05 20:08:40 2010 +0200 (23 months ago ago) |
| parents | 55ec17785862 |
| children |
1 fn conf_enable_flip {
2 extensions=(pdf ps)
3 prev_res=150
4 thumb_res=15
6 pages_root=`{pwd}^'/_werc/pages'
7 mkdir -p $pages_root
8 base_path=`{basename -d $conf_wd}
10 conf_enable_app flip
11 }
13 fn flip_init {
14 # this could cause problems with filenames matching [0-9]+
15 pages_doc=`{echo $local_path | sed 's|/[0-9]+(-[0-9]*)?/?$||'}
16 if (test -f $werc_root^'/'^$pages_doc^'.'^$extensions){
17 name=`{basename $pages_doc}
18 pages_doc_root=$pages_root^'/'^$name
19 pages_file=`{ls $werc_root^'/'^$pages_doc^'.'^$extensions}
20 if (! test $pages_doc_root -nt $pages_file){
21 mkdir -p $pages_doc_root'/thumbs/'
22 pages2pngs $pages_file $pages_doc_root'/thumbs' 15
23 pages2pngs $pages_file $pages_doc_root 90
24 }
25 page_num=`{basename $req_path}
26 page_tot=`{ls $pages_doc_root^/*.png |wc -l}
27 if (echo $page_num | grep -s '^[0-9]+-[0-9]*$'){
28 page_num=`{basename $req_path | sed 's/-[0-9]*//'}
29 handler_body_main=pageindex
30 }
31 if not if (~ $pages_doc $local_path){
32 page_num=1
33 handler_body_main=pageindex
34 }
35 if not
36 handler_body_main=pageprev
37 if (test $page_num -gt $page_tot)
38 handler_body_main=()
39 }
40 }
42 fn pages2pngs {
43 gs -q -dNOPAUSE -dBATCH -s'DEVICE=png16m' -r^$3 -d'TextAlphaBits=4' -d'GraphicsAlphaBits=4' -s'OutputFile='^$2^'/%d.png' $1
44 }
46 fn pagelist {
47 ls -p $pages_doc_root | sed 's/\.png//p;d' | sort -n
48 }
50 # Usage: paginate number step total 'string %d %s'
51 fn paginate {
52 awk '
53 BEGIN {
54 n='$1';
55 s='$2'; s3=int(s/3);
56 a=int(n/s3)*s3-s3;
57 if(a<1) a=1;
58 if(n>a+2*s3) a+=s3;
59 w=a+s;
60 t='$3';
61 str="'$4'";
62 }
63 NR==a && NR>1 {
64 printf(str, 1, "first");
65 if(n-s > 0)
66 printf(str, n-s, "(-" s ")");
67 print "|";
68 }
69 NR>=a && NR<w {
70 printf(str, NR, NR);
71 }
72 NR==w && NR<=t {
73 print "|";
74 if(n+s <= t)
75 printf(str, n+s, "(+" s ")");
76 printf(str, t, "last");
77 }'
78 }
80 fn pagethumbs {
81 for (p in `{ls -p $pages_doc_root | sed 's/\.png//p;d' | sort -n}){
82 img='<img src="'$base_path'/_werc/pages/'$name'/thumbs/'$p'.png">'
83 echo '<a href="'$base_path'/'$name'/'$p'">'$img'</a>'
84 }
85 }
87 fn pagenav {
88 ls -p $pages_doc_root^/*.png | sort -n | awk '
89 /^'^`{basename $req_path}^'\.png/{
90 if(sub("\.png$", "", p))
91 print "<a title=\"prev\" href=\"" p "\">'$1'</a>";
92 print "<a title=\"all\" href=\"" int('$page_num'/50)*50+1 "-\">'$3'</a>";
93 getline;
94 if(sub("\.png$", "", $0))
95 print "<a title=\"next\" href=\"" $0 "\">'$2'</a>";
96 exit;
97 }
98 {p = $0;}'
99 }
101 fn pageindex {
102 tpl_handler apps/flip/pageindex.tpl
103 }
105 fn pageprev {
106 tpl_handler apps/flip/pageprev.tpl
107 }