]> Sergey Matveev's repositories - dotfiles.git/blobdiff - bin/bin/scan.sh
Huge tmux-fzf simplification with files quoting
[dotfiles.git] / bin / bin / scan.sh
index ce9694e3446489149102cba988b25cc1871483aa..d5c905feb48c57a1a4edf10e872f9ebd733ec30b 100755 (executable)
@@ -7,23 +7,39 @@ ctr=${1:-1}
 ctr=$(( $ctr - 1 ))
 
 scan() {
-    resolution=$1
+    preview=$1
     shift
-    scanimage --format=pnm --progress --resolution=$resolution --mode=Color $@ > tmp.ppm
+    [ -z "$NEGATIVE" ] && src="Flatbed" || src="Transparency Adapter"
+    [ -z "$NEGATIVE" ] && depth=8 || depth=16
+    [ -z "$NEGATIVE" ] && resolution=800 || resolution=1600
+    if [ "$preview" = "yes" ]; then
+        depth=8
+        resolution=150
+    fi
+    scanimage \
+        --format=pnm \
+        --mode=Color \
+        --depth $depth \
+        --progress \
+        --resolution=$resolution \
+        --source="$src" \
+        $@ > tmp.ppm
 }
 
 process() {
-    pamflip -rotate$rotate | pnmcrop -closeness=$crop
+    [ $rotate -eq 0 ] && rotator=cat || rotator="pamflip -rotate$rotate"
+    [ -z "$NEGATIVE" ] && inverter=cat || inverter=pnminvert
+    $rotator | pnmcrop -closeness=$crop | $inverter
 }
 
 preview() {
-    pnmscale -w 600 < tmp.ppm | process > preview.ppm
+    process < tmp.ppm | pamdepth 255 | pnmscale -w 600 > preview.ppm
     sxiv preview.ppm
 }
 
 do_next() {
     rotate=180
-    crop=50
+    [ -z "$NEGATIVE" ] && crop=40 || crop=10
     ctr=$(( $ctr + 1 ))
     cur=`printf "%03d.ppm" $ctr`
 }
@@ -31,15 +47,15 @@ do_next() {
 do_next
 
 while : ; do
-    echo "$cur: (v)iew r(otate) c(rop) (s)can (p)review (n)ext"
+    echo -n "$cur: crop:$crop rotate:$rotate v/r/c/s/p/n> "
     read c
     case $c in
     v)
-        scan 150
+        scan yes --preview=yes
         preview
         ;;
     s)
-        scan 1600 --high-quality=yes
+        scan no --preview=no --high-quality=yes
         preview
         ;;
     p)
@@ -50,12 +66,19 @@ while : ; do
         do_next
         ;;
     r)
+        echo -n "Rotate (n/r/l/t):"
         read rotate
-        echo Rotate: $rotate
+        case $rotate in
+        n) rotate=180 ;;
+        r) rotate=90 ;;
+        l) rotate=270 ;;
+        t) rotate=0 ;;
+        *) echo ? ;;
+        esac
         ;;
     c)
+        echo -n Crop:
         read crop
-        echo Crop: $crop
         ;;
     *)
         echo ?