]> Sergey Matveev's repositories - dotfiles.git/blob - bin/bin/scan.sh
e32f998594dd65e5be6ad5cd99d34cc8083938dd
[dotfiles.git] / bin / bin / scan.sh
1 #!/bin/sh
2
3 rotate=0
4 crop=0
5 cur=noname.ppm
6 ctr=${1:-1}
7 ctr=$(( $ctr - 1 ))
8
9 [ -z "$NEGATIVE" ] && SRC="Flatbed" || SRC="Transparency Adapter"
10
11 scan() {
12     resolution=$1
13     shift
14     scanimage --format=pnm --mode=Color --depth 16 --progress --resolution=$resolution --source="$SRC" $@ > tmp.ppm
15 }
16
17 process() {
18     [ -z "$NEGATIVE" ] && inverter=cat || inverter=pnminvert
19     [ $rotate -eq 0 ] && rotator=cat || rotator="pamflip -rotate$rotate"
20     $rotator | pnmcrop -closeness=$crop | $inverter
21 }
22
23 preview() {
24     pamdepth 8 < tmp.ppm | pnmscale -w 600 | process > preview.ppm
25     sxiv preview.ppm
26 }
27
28 do_next() {
29     rotate=180
30     [ -z "$NEGATIVE" ] && crop=50 || crop=10
31     ctr=$(( $ctr + 1 ))
32     cur=`printf "%03d.ppm" $ctr`
33 }
34
35 do_next
36
37 while : ; do
38     echo "$cur: (v)iew r(otate) c(rop) (s)can (p)review (n)ext"
39     read c
40     case $c in
41     v)
42         scan 150 --preview=yes
43         preview
44         ;;
45     s)
46         scan 1600 --preview=no --high-quality=yes
47         preview
48         ;;
49     p)
50         preview
51         ;;
52     n)
53         cat tmp.ppm | process > $cur
54         do_next
55         ;;
56     r)
57         echo -n Rotate:
58         read rotate
59         case $rotate in
60         n)
61             rotate=180
62             ;;
63         r)
64             rotate=90
65             ;;
66         l)
67             rotate=270
68             ;;
69         t)
70             rotate=0
71             ;;
72         *)
73             echo ?
74             ;;
75         esac
76         ;;
77     c)
78         echo -n Crop:
79         read crop
80         ;;
81     *)
82         echo ?
83         ;;
84     esac
85 done