wok-next rev 18242
sane-backends/sane.cgi: resize to screen width in preview
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Wed Jul 29 17:07:24 2015 +0200 (2015-07-29) |
parents | f630a53bd713 |
children | c50866b1c9cb |
files | sane-backends/receipt sane-backends/stuff/tazpanel/sane sane-backends/stuff/tazpanel/sane.cgi |
line diff
1.1 --- a/sane-backends/receipt Tue Jul 28 10:56:38 2015 +0000 1.2 +++ b/sane-backends/receipt Wed Jul 29 17:07:24 2015 +0200 1.3 @@ -40,6 +40,7 @@ 1.4 mkdir -p $fs/usr/lib $fs/usr/share \ 1.5 $fs/var/lock/sane $fs/etc/sane.d \ 1.6 $fs/var/www/tazpanel/lib \ 1.7 + $fs/var/www/tazpanel/report.d \ 1.8 $fs/var/www/tazpanel/menu.d/hardware 1.9 1.10 cp -a $install/etc/sane.d $fs/etc 1.11 @@ -49,6 +50,7 @@ 1.12 cp -a $install/usr/lib/sane $fs/usr/lib 1.13 cp -a $install/usr/share/sane $fs/usr/share 1.14 cp $stuff/tazpanel/sane.cgi $fs/var/www/tazpanel/ 1.15 + cp $stuff/tazpanel/sane $fs/var/www/tazpanel/report.d/ 1.16 cp $stuff/tazpanel/crop.js $fs/var/www/tazpanel/lib/ 1.17 ln -s ../../sane.cgi $fs/var/www/tazpanel/menu.d/hardware/sane 1.18
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/sane-backends/stuff/tazpanel/sane Wed Jul 29 17:07:24 2015 +0200 2.3 @@ -0,0 +1,5 @@ 2.4 + cat <<EOT 2.5 +<h2>scanimage --help</h2> 2.6 +<pre>$(scanimage --help 2>&1)</pre> 2.7 + 2.8 +EOT
3.1 --- a/sane-backends/stuff/tazpanel/sane.cgi Tue Jul 28 10:56:38 2015 +0000 3.2 +++ b/sane-backends/stuff/tazpanel/sane.cgi Wed Jul 29 17:07:24 2015 +0200 3.3 @@ -37,11 +37,12 @@ 3.4 3.5 getgeometry() { 3.6 CMD="" 3.7 - for i in l t x y ; do 3.8 + ARGS="" 3.9 + for i in x y l t ; do 3.10 j=$(inrange $(xPOST geometry_$i) $(xPOST ${i}_min) $(xPOST ${i}_max)) 3.11 eval "geometry_$i=$j" 3.12 CMD="$CMD -$i $j" 3.13 -# convert -crop XxY+L+T -resize XxY 3.14 + ARGS="$ARGS $j" 3.15 done 3.16 for i in mode source contrast brightness ; do 3.17 [ "$(xPOST $i)" ] && CMD="$CMD --$i '$(xPOST $i)'" 3.18 @@ -55,10 +56,35 @@ 3.19 resolution=$(($resolution * 2)) 3.20 done 3.21 fi 3.22 + case "$(xPOST mode)" in 3.23 + *lack*|*ineart*) mode="-monochrome" ;; 3.24 + *ray*) mode="-colorspace gray" ;; 3.25 + *) mode="" ;; 3.26 + esac 3.27 [ -d tmp ] || ln -s /tmp tmp 3.28 case "$device" in 3.29 - fake*) echo "cat /usr/share/images/slitaz-background.jpg" ;; 3.30 - *) echo "scanimage -d '$(echo $device | sed 's/,.*//')' --resolution '$(inrange $resolution $(xPOST res_min) $(xPOST res_max))dpi'$CMD" 3.31 + fake*) f=/usr/share/images/slitaz-banner.png 3.32 + c="$(echo $ARGS $(identify $f | sed \ 3.33 + 's/.* \([0-9]*\)x.*/\1/') $(GET width) $(POST x_max) | awk ' 3.34 +function a(x) { return int(($x * $5)/ $7); } 3.35 +{ printf "%dx%d+%d+%d -resize %dx%d",a(1),a(2),a(3),a(4),$6,int(($2*$6)/$1)} 3.36 +')" 3.37 + cat <<EOT 3.38 +if convert -crop $c $mode $f /tmp/sane$$.png 2> /dev/null ; then 3.39 + cat /tmp/sane$$.png 3.40 + rm -f /tmp/sane$$.png 3.41 +else 3.42 + cat $f 3.43 +fi 3.44 +EOT 3.45 + ;; 3.46 + *) echo -n "scanimage -d '$(echo $device | sed 's/,.*//')' --resolution '$(inrange $resolution $(xPOST res_min) $(xPOST res_max))dpi'$CMD" 3.47 + if [ -z "$1" -a "$(which convert)" ]; then 3.48 + echo -n "> /tmp/sane$$.pnm ; convert -resize " 3.49 + echo $ARGS $(GET width) | awk '{ printf "%dx%d",$5,int(($2*$5)/$1)}' 3.50 + echo -n " /tmp/sane$$.pnm /tmp/sane$$.png ;" 3.51 + echo -n "cat /tmp/sane$$.png ; rm -f /tmp/sane$$.pn?" 3.52 + fi 3.53 esac 3.54 } 3.55 3.56 @@ -151,20 +177,31 @@ 3.57 xhtml_header 3.58 [ -n "$error" ] && msg warn "$error" 3.59 [ -n "$info" ] && msg tip "$info" 3.60 -[ "$(which convert 2> /dev/null)" ] || 3.61 -msg tip "$(_ "You should install %s to preview images." \ 3.62 - "<a href=\"/user/pkgs.cgi?info=imagemagick\">imagemagick</a>")" 3.63 if [ -z "$device" ]; then 3.64 - [ -s sane-fake.log ] && all="$(sed 's/|/\n/g' sane-fake.log)" || 3.65 - all="$(scanimage -f '%d,%v %m|' | sed 's/|/\n/g')" 3.66 + all="$(scanimage -f '%d,%v %m|'|cat - sane-fake.log|sed 's/|/\n/g')" 3.67 case "$(echo "$all" | wc -l)" in 3.68 1) if [ -z "$all" ]; then 3.69 - msg warn 'No scanner found' 3.70 + msg warn "$(_ "No scanner found")" 3.71 + msg tip "$(_ "You can test this GUI with ")\ 3.72 +<a href=\"/user/pkgs.cgi?info=fake-sane\">fake-sane</a>" 3.73 xhtml_footer 3.74 exit 0 3.75 fi 3.76 device="${all%|}" ;; 3.77 - *) cat <<EOT 3.78 + *) 3.79 + suggested="" 3.80 + while read exe pkg msg; do 3.81 + [ "$(which $exe 2> /dev/null)" ] && continue 3.82 + suggested="$suggested 3.83 +<li><a href=\"/user/pkgs.cgi?info=$pkg\">$pkg</a> $msg</li>" 3.84 + done <<EOT 3.85 +convert imagemagick $(_ "to preview images and support more image formats") 3.86 +gocr gocr $(_ "a basic optical character recognition") 3.87 +tesseract tesseract-ocr $(_ "a better optical character recognition") 3.88 +EOT 3.89 + [ "$suggested" ] && 3.90 + msg tip "$(_ "You may need to install:") <ol>$suggested</ol>" 3.91 + cat <<EOT 3.92 <section> 3.93 <header> 3.94 <form name="scanner" method="post"> 3.95 @@ -190,7 +227,7 @@ 3.96 <script language="JavaScript" type="text/javascript"> 3.97 <!-- 3.98 function new_width() { 3.99 - document.parameters.action = "?width="+document.width 3.100 + document.parameters.action = "?width="+(document.width-30) 3.101 } 3.102 3.103 window.onresize = new_width 3.104 @@ -202,7 +239,7 @@ 3.105 $(echo $device | sed 's/.*,//') 3.106 <div class="float-right"> 3.107 <button name="scan" data-icon="start">$(_ "Scan")</button> 3.108 - <button name="reset" data-icon="stop">$(_ "Reset")</button> 3.109 + <button name="reset" data-icon="refresh">$(_ "Reset")</button> 3.110 <button name="preview" data-icon="view">$(_ "Preview")</button> 3.111 </div> 3.112 </header> 3.113 @@ -256,7 +293,8 @@ 3.114 } 3.115 ')" 3.116 fi 3.117 -output="$(echo "$params" | while read name def min max ; do 3.118 +output="$(n=$(echo "$params" | wc -l); echo "$params" | \ 3.119 +while read name def min max ; do 3.120 name="${name##*-}" 3.121 def="${def//=/ }" 3.122 if [ "$min" == "enum" ]; then 3.123 @@ -283,7 +321,7 @@ 3.124 [ "$(xPOST $name)" ] && def=$(xPOST $name) 3.125 [ $def -lt $min ] && def=$min 3.126 [ $def -gt $max ] && def=$max 3.127 - f="$(_ "$name")<input name=\"$name\" value=\"$def\"" 3.128 + f="$(_ "$name") <input name=\"$name\" value=\"$def\"" 3.129 u="" 3.130 case "$name" in 3.131 x|y|l|t) cat <<EOT 3.132 @@ -304,8 +342,6 @@ 3.133 x Width width $max 3.134 y Height height $max 3.135 EOT 3.136 - [ "$newline" ] || echo "</tr><tr>" 3.137 - newline=$name 3.138 esac 3.139 [ "$name" == "resolution" ] && f="$f onchange=showGeometry()" 3.140 echo "<td>$f type=\"text\" title=\"$min .. $max\" size=4 maxlength=4>$u" 3.141 @@ -320,6 +356,10 @@ 3.142 EOT 3.143 esac 3.144 echo "</td>" 3.145 + n=$(($n - 2)) 3.146 + case "$n" in 3.147 + 1|2) echo "</tr><tr>" 3.148 + esac 3.149 done)" 3.150 echo "$output" | sed '/^:/d' 3.151