From 81e2fef032931d0748d94c7d2625fe07499f77c3 Mon Sep 17 00:00:00 2001 From: Alessio Treglia Date: Fri, 20 Apr 2012 12:04:46 +0200 Subject: Imported Upstream version 3.4.1 --- NEWS | 8 + compile | 195 +++++- configure | 2 +- configure.ac | 2 +- depcomp | 74 +- help/C/legal.xml | 9 + help/Makefile.am | 2 + help/Makefile.in | 2 + help/de/legal.xml | 9 + install-sh | 29 +- missing | 53 +- src/book-view.c | 2 +- src/book.c | 10 +- src/book.vala | 4 +- src/page-view.c | 2 +- src/page.c | 2 +- src/scanner.c | 1998 ++++++++++++++++++++++++++++------------------------- src/scanner.vala | 448 ++++++------ src/simple-scan.c | 2 +- src/ui.c | 4 +- src/ui.vala | 2 +- 21 files changed, 1600 insertions(+), 1259 deletions(-) create mode 100644 help/C/legal.xml create mode 100644 help/de/legal.xml diff --git a/NEWS b/NEWS index df7abef..38c57d3 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,11 @@ +Overview of changes in simple-scan 3.4.1 + + * Always set scanner options in the same order to avoid options resetting + options already set. + * Number multiple page documents from 1 + * Commit help .pot file so can be translated from Launchpad + * Fix help not working + Overview of changes in simple-scan 3.4.0 * No change version bump diff --git a/compile b/compile index c0096a7..b1f4749 100755 --- a/compile +++ b/compile @@ -1,10 +1,10 @@ #! /bin/sh -# Wrapper for compilers which do not understand `-c -o'. +# Wrapper for compilers which do not understand '-c -o'. -scriptversion=2009-10-06.20; # UTC +scriptversion=2012-01-04.17; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software -# Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free +# Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -29,21 +29,186 @@ scriptversion=2009-10-06.20; # UTC # bugs to or send patches to # . +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l*) + lib=${1#-l} + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + set x "$@" "$dir/$lib.dll.lib" + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + set x "$@" "$dir/$lib.lib" + break + fi + done + IFS=$save_IFS + + test "$found" != yes && set x "$@" "$lib.lib" + shift + ;; + -L*) + func_file_conv "${1#-L}" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + case $1 in '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] -Wrapper for compilers which do not understand `-c -o'. -Remove `-o dest.o' from ARGS, run PROGRAM with the remaining +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the -right script to run: please start by reading the file `INSTALL'. +right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF @@ -53,11 +218,13 @@ EOF echo "compile $scriptversion" exit $? ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; esac ofile= cfile= -eat= for arg do @@ -66,8 +233,8 @@ do else case $1 in -o) - # configure might choose to run compile as `compile cc -o foo foo.c'. - # So we strip `-o arg' only if arg is an object. + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) @@ -94,10 +261,10 @@ do done if test -z "$ofile" || test -z "$cfile"; then - # If no `-o' option was seen then we might have been invoked from a + # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no - # `.c' file was seen then we are probably linking. That is also + # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi @@ -106,7 +273,7 @@ fi cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. -# Note: use `[/\\:.-]' here to ensure that we don't use the same name +# Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d diff --git a/configure b/configure index b8b776f..e02abff 100755 --- a/configure +++ b/configure @@ -2735,7 +2735,7 @@ fi # Define the identity of the package. PACKAGE=simple-scan - VERSION=3.4.0 + VERSION=3.4.1 cat >>confdefs.h <<_ACEOF diff --git a/configure.ac b/configure.ac index efc7874..9a86ec4 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(configure.ac) -AM_INIT_AUTOMAKE(simple-scan, 3.4.0) +AM_INIT_AUTOMAKE(simple-scan, 3.4.1) AM_CONFIG_HEADER(config.h) AM_MAINTAINER_MODE GNOME_MAINTAINER_MODE_DEFINES diff --git a/depcomp b/depcomp index df8eea7..bd0ac08 100755 --- a/depcomp +++ b/depcomp @@ -1,10 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2009-04-28.21; # UTC +scriptversion=2011-12-04.11; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, +# 2011 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ Environment variables: object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. + tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . @@ -90,10 +90,18 @@ if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" + cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what @@ -158,10 +166,12 @@ gcc) ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as -## well. +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -405,6 +415,52 @@ tru64) rm -f "$tmpdepfile" ;; +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test "$stat" = 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/ \1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/ / + G + p +}' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. @@ -503,7 +559,9 @@ makedepend) touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation diff --git a/help/C/legal.xml b/help/C/legal.xml new file mode 100644 index 0000000..86d6173 --- /dev/null +++ b/help/C/legal.xml @@ -0,0 +1,9 @@ + +

This work is licensed under a +Creative Commons +Attribution-Share Alike 3.0 Unported License.

+

As a special exception, the copyright holders give you permission to copy, +modify, and distribute the example code contained in this document under the +terms of your choosing, without restriction.

+
diff --git a/help/Makefile.am b/help/Makefile.am index 9cba84d..66bca3c 100644 --- a/help/Makefile.am +++ b/help/Makefile.am @@ -1,11 +1,13 @@ @YELP_HELP_RULES@ HELP_ID = simple-scan +HELP_POT = simple-scan-help.pot HELP_FILES = index.page \ adf.page \ crop.page \ dpi.page \ email.page \ + legal.xml \ print.page \ reorder.page \ rotate.page \ diff --git a/help/Makefile.in b/help/Makefile.in index 4371892..3ff9bbb 100644 --- a/help/Makefile.in +++ b/help/Makefile.in @@ -173,11 +173,13 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ HELP_ID = simple-scan +HELP_POT = simple-scan-help.pot HELP_FILES = index.page \ adf.page \ crop.page \ dpi.page \ email.page \ + legal.xml \ print.page \ reorder.page \ rotate.page \ diff --git a/help/de/legal.xml b/help/de/legal.xml new file mode 100644 index 0000000..46a7e88 --- /dev/null +++ b/help/de/legal.xml @@ -0,0 +1,9 @@ + + +

This work is licensed under a +Creative Commons +Attribution-Share Alike 3.0 Unported License.

+

As a special exception, the copyright holders give you permission to copy, +modify, and distribute the example code contained in this document under the +terms of your choosing, without restriction.

+
diff --git a/install-sh b/install-sh index 6781b98..a9244eb 100755 --- a/install-sh +++ b/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2009-04-28.21; # UTC +scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -156,6 +156,10 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; -t) dst_arg=$2 + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac shift;; -T) no_target_directory=true;; @@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac done fi @@ -200,7 +208,11 @@ if test $# -eq 0; then fi if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. @@ -228,9 +240,9 @@ fi for src do - # Protect names starting with `-'. + # Protect names problematic for `test' and other utilities. case $src in - -*) src=./$src;; + -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then @@ -252,12 +264,7 @@ do echo "$0: no destination specified." >&2 exit 1 fi - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. @@ -385,7 +392,7 @@ do case $dstdir in /*) prefix='/';; - -*) prefix='./';; + [-=\(\)!]*) prefix='./';; *) prefix='';; esac @@ -403,7 +410,7 @@ do for d do - test -z "$d" && continue + test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then diff --git a/missing b/missing index 28055d2..86a8fc3 100755 --- a/missing +++ b/missing @@ -1,10 +1,10 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -scriptversion=2009-04-28.21; # UTC +scriptversion=2012-01-06.13; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009 Free Software Foundation, Inc. +# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -84,7 +84,6 @@ Supported PROGRAM values: help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and @@ -122,15 +121,6 @@ case $1 in # Not GNU programs, they don't have --version. ;; - tar*) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. @@ -226,7 +216,7 @@ WARNING: \`$1' $msg. You should only need it if \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then - eval LASTARG="\${$#}" + eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` @@ -256,7 +246,7 @@ WARNING: \`$1' is $msg. You should only need it if \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then - eval LASTARG="\${$#}" + eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` @@ -318,41 +308,6 @@ WARNING: \`$1' is $msg. You should only need it if touch $file ;; - tar*) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. diff --git a/src/book-view.c b/src/book-view.c index b2b33f9..3be88c2 100644 --- a/src/book-view.c +++ b/src/book-view.c @@ -1,4 +1,4 @@ -/* book-view.c generated by valac 0.15.2, the Vala compiler +/* book-view.c generated by valac 0.16.0, the Vala compiler * generated from book-view.vala, do not modify */ /* diff --git a/src/book.c b/src/book.c index 1ec2970..711aa1c 100644 --- a/src/book.c +++ b/src/book.c @@ -1,4 +1,4 @@ -/* book.c generated by valac 0.15.2, the Vala compiler +/* book.c generated by valac 0.16.0, the Vala compiler * generated from book.vala, do not modify */ /* @@ -528,7 +528,7 @@ static gchar* string_slice (const gchar* self, glong start, glong end) { static GFile* book_make_indexed_file (Book* self, const gchar* uri, gint i) { GFile* result = NULL; - gint _tmp0_; + guint _tmp0_ = 0U; const gchar* _tmp3_; gchar* _tmp4_ = NULL; gchar* basename; @@ -550,8 +550,8 @@ static GFile* book_make_indexed_file (Book* self, const gchar* uri, gint i) { GFile* _tmp31_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (uri != NULL, NULL); - _tmp0_ = i; - if (_tmp0_ == 0) { + _tmp0_ = book_get_n_pages (self); + if (_tmp0_ == ((guint) 1)) { const gchar* _tmp1_; GFile* _tmp2_ = NULL; _tmp1_ = uri; @@ -608,7 +608,7 @@ static GFile* book_make_indexed_file (Book* self, const gchar* uri, gint i) { _tmp25_ = prefix; _tmp26_ = i; _tmp27_ = suffix; - _tmp28_ = g_strdup_printf ("%s-%d%s", _tmp25_, _tmp26_, _tmp27_); + _tmp28_ = g_strdup_printf ("%s-%d%s", _tmp25_, _tmp26_ + 1, _tmp27_); _tmp29_ = _tmp28_; _tmp30_ = g_file_new_for_uri (_tmp29_); _tmp31_ = _tmp30_; diff --git a/src/book.vala b/src/book.vala index c931f41..76a1901 100644 --- a/src/book.vala +++ b/src/book.vala @@ -85,7 +85,7 @@ public class Book private File make_indexed_file (string uri, int i) { - if (i == 0) + if (get_n_pages () == 1) return File.new_for_uri (uri); /* Insert index before extension */ @@ -98,7 +98,7 @@ public class Book prefix = uri.slice (0, uri.length - suffix.length); } - return File.new_for_uri ("%s-%d%s".printf (prefix, i, suffix)); + return File.new_for_uri ("%s-%d%s".printf (prefix, i+1, suffix)); } private void save_multi_file (string type, File file) throws Error diff --git a/src/page-view.c b/src/page-view.c index a2f26ef..9f18c73 100644 --- a/src/page-view.c +++ b/src/page-view.c @@ -1,4 +1,4 @@ -/* page-view.c generated by valac 0.15.2, the Vala compiler +/* page-view.c generated by valac 0.16.0, the Vala compiler * generated from page-view.vala, do not modify */ /* diff --git a/src/page.c b/src/page.c index 424c2e9..3d56125 100644 --- a/src/page.c +++ b/src/page.c @@ -1,4 +1,4 @@ -/* page.c generated by valac 0.15.2, the Vala compiler +/* page.c generated by valac 0.16.0, the Vala compiler * generated from page.vala, do not modify */ /* diff --git a/src/scanner.c b/src/scanner.c index c91ff4c..e6d731a 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -1,4 +1,4 @@ -/* scanner.c generated by valac 0.15.2, the Vala compiler +/* scanner.c generated by valac 0.16.0, the Vala compiler * generated from scanner.vala, do not modify */ /* @@ -287,6 +287,7 @@ typedef struct _NotifyGotLinePrivate NotifyGotLinePrivate; typedef struct _ScannerPrivate ScannerPrivate; #define _g_async_queue_unref0(var) ((var == NULL) ? NULL : (var = (g_async_queue_unref (var), NULL))) #define __g_list_free__scan_job_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__scan_job_unref0_ (var), NULL))) +#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) #define _scanner_unref0(var) ((var == NULL) ? NULL : (var = (scanner_unref (var), NULL))) #define _notify_unref0(var) ((var == NULL) ? NULL : (var = (notify_unref (var), NULL))) #define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL))) @@ -636,8 +637,7 @@ struct _ScannerPrivate { gchar* current_device; SANE_Parameters parameters; SANE_Int option_index; - SANE_Int br_x_option_index; - SANE_Int br_y_option_index; + GHashTable* options; guchar* buffer; gint buffer_length1; gint _buffer_size_; @@ -925,7 +925,9 @@ static void scanner_close_device (Scanner* self); static void scanner_fail_scan (Scanner* self, gint error_code, const gchar* error_string); static gboolean scanner_handle_requests (Scanner* self); static void scanner_do_open (Scanner* self); +static void _g_free0_ (gpointer var); static void scanner_do_get_option (Scanner* self); +static SANE_Option_Descriptor* scanner_get_option_by_name (Scanner* self, SANE_Handle handle, const gchar* name, gint* index); static void scanner_do_complete_document (Scanner* self); static void scanner_do_start (Scanner* self); static void scanner_do_get_parameters (Scanner* self); @@ -3481,7 +3483,7 @@ static void scanner_do_redetect (Scanner* self) { _tmp2_ = status; _tmp3_ = sane_status_to_string (_tmp2_); _tmp4_ = _tmp3_; - g_debug ("scanner.vala:318: sane_get_devices () -> %s", _tmp4_); + g_debug ("scanner.vala:317: sane_get_devices () -> %s", _tmp4_); _g_free0 (_tmp4_); _tmp5_ = status; if (_tmp5_ != SANE_STATUS_GOOD) { @@ -3489,7 +3491,7 @@ static void scanner_do_redetect (Scanner* self) { const gchar* _tmp7_ = NULL; _tmp6_ = status; _tmp7_ = sane_strstatus (_tmp6_); - g_warning ("scanner.vala:321: Unable to get SANE devices: %s", _tmp7_); + g_warning ("scanner.vala:320: Unable to get SANE devices: %s", _tmp7_); self->priv->need_redetect = FALSE; self->priv->state = SCAN_STATE_IDLE; return; @@ -3592,7 +3594,7 @@ static void scanner_do_redetect (Scanner* self) { _tmp27_ = i; _tmp28_ = _tmp26_[_tmp27_]; _tmp29_ = _tmp28_->type; - g_debug ("scanner.vala:330: Device: name=\"%s\" vendor=\"%s\" model=\"%s\" type=" \ + g_debug ("scanner.vala:329: Device: name=\"%s\" vendor=\"%s\" model=\"%s\" type=" \ "\"%s\"", _tmp17_, _tmp21_, _tmp25_, _tmp29_); _tmp30_ = scan_device_new (); scan_device = _tmp30_; @@ -3708,7 +3710,7 @@ static gboolean scanner_set_default_option (Scanner* self, SANE_Handle handle, S _tmp6_ = status; _tmp7_ = sane_status_to_string (_tmp6_); _tmp8_ = _tmp7_; - g_debug ("scanner.vala:372: sane_control_option (%d, SANE_ACTION_SET_AUTO) -> %s", (gint) _tmp5_, _tmp8_); + g_debug ("scanner.vala:371: sane_control_option (%d, SANE_ACTION_SET_AUTO) -> %s", (gint) _tmp5_, _tmp8_); _g_free0 (_tmp8_); _tmp9_ = status; if (_tmp9_ != SANE_STATUS_GOOD) { @@ -3720,7 +3722,7 @@ static gboolean scanner_set_default_option (Scanner* self, SANE_Handle handle, S _tmp11_ = _tmp10_->name; _tmp12_ = status; _tmp13_ = sane_strstatus (_tmp12_); - g_warning ("scanner.vala:374: Error setting default option %s: %s", _tmp11_, _tmp13_); + g_warning ("scanner.vala:373: Error setting default option %s: %s", _tmp11_, _tmp13_); } _tmp14_ = status; result = _tmp14_ == SANE_STATUS_GOOD; @@ -3780,7 +3782,7 @@ static void scanner_set_bool_option (Scanner* self, SANE_Handle handle, SANE_Opt _tmp14_ = sane_status_to_string (_tmp13_); _tmp15_ = _tmp14_; _tmp16_ = _tmp9_; - g_debug ("scanner.vala:386: sane_control_option (%d, SANE_ACTION_SET_VALUE, %s) " \ + g_debug ("scanner.vala:385: sane_control_option (%d, SANE_ACTION_SET_VALUE, %s) " \ "-> (%s, %s)", (gint) _tmp11_, _tmp12_, _tmp15_, _tmp16_); _g_free0 (_tmp15_); if (_result_) { @@ -3960,7 +3962,7 @@ static void scanner_set_int_option (Scanner* self, SANE_Handle handle, SANE_Opti _tmp54_ = sane_status_to_string (status); _tmp55_ = _tmp54_; _tmp56_ = v; - g_debug ("scanner.vala:423: sane_control_option (%d, SANE_ACTION_SET_VALUE, %d) " \ + g_debug ("scanner.vala:422: sane_control_option (%d, SANE_ACTION_SET_VALUE, %d) " \ "-> (%s, %d)", (gint) _tmp52_, _tmp53_, _tmp55_, (gint) _tmp56_); _g_free0 (_tmp55_); _tmp57_ = v; @@ -4134,7 +4136,7 @@ static void scanner_set_fixed_option (Scanner* self, SANE_Handle handle, SANE_Op _tmp50_ = sane_status_to_string (status); _tmp51_ = _tmp50_; _tmp52_ = SANE_UNFIX (v_fixed); - g_debug ("scanner.vala:463: sane_control_option (%d, SANE_ACTION_SET_VALUE, %f) " \ + g_debug ("scanner.vala:462: sane_control_option (%d, SANE_ACTION_SET_VALUE, %f) " \ "-> (%s, %f)", (gint) _tmp48_, _tmp49_, _tmp51_, _tmp52_); _g_free0 (_tmp51_); _tmp53_ = SANE_UNFIX (v_fixed); @@ -4277,7 +4279,7 @@ static gboolean scanner_set_string_option (Scanner* self, SANE_Handle handle, SA _tmp34_ = sane_status_to_string (status); _tmp35_ = _tmp34_; _tmp36_ = _vala_result; - g_debug ("scanner.vala:481: sane_control_option (%d, SANE_ACTION_SET_VALUE, \"%s" \ + g_debug ("scanner.vala:480: sane_control_option (%d, SANE_ACTION_SET_VALUE, \"%s" \ "\") -> (%s, \"%s\")", (gint) _tmp32_, _tmp33_, _tmp35_, _tmp36_); _g_free0 (_tmp35_); result = status == SANE_STATUS_GOOD; @@ -5154,7 +5156,7 @@ static void scanner_log_option (Scanner* self, SANE_Int index, SANE_Option_Descr } } _tmp214_ = s; - g_debug ("scanner.vala:669: %s", _tmp214_); + g_debug ("scanner.vala:668: %s", _tmp214_); _tmp215_ = option; _tmp216_ = _tmp215_->desc; if (_tmp216_ != NULL) { @@ -5162,7 +5164,7 @@ static void scanner_log_option (Scanner* self, SANE_Int index, SANE_Option_Descr const gchar* _tmp218_; _tmp217_ = option; _tmp218_ = _tmp217_->desc; - g_debug ("scanner.vala:672: Description: %s", _tmp218_); + g_debug ("scanner.vala:671: Description: %s", _tmp218_); } _g_free0 (s); } @@ -5351,11 +5353,13 @@ static void scanner_close_device (Scanner* self) { SANE_Handle _tmp2_; _tmp1_ = self->priv->handle; sane_cancel (_tmp1_); - g_debug ("scanner.vala:699: sane_cancel ()"); + g_debug ("scanner.vala:698: sane_cancel ()"); _tmp2_ = self->priv->handle; sane_close (_tmp2_); - g_debug ("scanner.vala:702: sane_close ()"); + g_debug ("scanner.vala:701: sane_close ()"); self->priv->have_handle = FALSE; + _g_hash_table_unref0 (self->priv->options); + self->priv->options = NULL; } self->priv->buffer = (g_free (self->priv->buffer), NULL); self->priv->buffer = NULL; @@ -5495,6 +5499,11 @@ static gboolean scanner_handle_requests (Scanner* self) { } +static void _g_free0_ (gpointer var) { + var = (g_free (var), NULL); +} + + static void scanner_do_open (Scanner* self) { GList* _tmp0_; gconstpointer _tmp1_; @@ -5507,20 +5516,23 @@ static void scanner_do_open (Scanner* self) { ScanJob* _tmp11_; const gchar* _tmp12_; gboolean _tmp14_; - ScanJob* _tmp19_; - const gchar* _tmp20_; - SANE_Handle _tmp21_ = {0}; - SANE_Status _tmp22_ = 0; + GHashFunc _tmp19_; + GEqualFunc _tmp20_; + GHashTable* _tmp21_; + ScanJob* _tmp22_; + const gchar* _tmp23_; + SANE_Handle _tmp24_ = {0}; + SANE_Status _tmp25_ = 0; SANE_Status status; - ScanJob* _tmp23_; - const gchar* _tmp24_; - SANE_Status _tmp25_; - gchar* _tmp26_ = NULL; - gchar* _tmp27_; + ScanJob* _tmp26_; + const gchar* _tmp27_; SANE_Status _tmp28_; - ScanJob* _tmp33_; - const gchar* _tmp34_; - gchar* _tmp35_; + gchar* _tmp29_ = NULL; + gchar* _tmp30_; + SANE_Status _tmp31_; + ScanJob* _tmp36_; + const gchar* _tmp37_; + gchar* _tmp38_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->job_queue; _tmp1_ = _tmp0_->data; @@ -5531,8 +5543,6 @@ static void scanner_do_open (Scanner* self) { self->priv->page_number = 0; self->priv->notified_page = -1; self->priv->option_index = (SANE_Int) 0; - self->priv->br_x_option_index = (SANE_Int) 0; - self->priv->br_y_option_index = (SANE_Int) 0; _tmp4_ = job; _tmp5_ = _tmp4_->device; if (_tmp5_ == NULL) { @@ -5557,7 +5567,7 @@ static void scanner_do_open (Scanner* self) { _tmp12_ = _tmp11_->device; if (_tmp12_ == NULL) { const gchar* _tmp13_ = NULL; - g_warning ("scanner.vala:773: No scan device available"); + g_warning ("scanner.vala:771: No scan device available"); _tmp13_ = _ ("No scanners available. Please connect a scanner."); scanner_fail_scan (self, 0, _tmp13_); _scan_job_unref0 (job); @@ -5579,45 +5589,50 @@ static void scanner_do_open (Scanner* self) { } _tmp18_ = self->priv->handle; sane_close (_tmp18_); - g_debug ("scanner.vala:790: sane_close ()"); + g_debug ("scanner.vala:788: sane_close ()"); self->priv->have_handle = FALSE; } _g_free0 (self->priv->current_device); self->priv->current_device = NULL; self->priv->have_handle = FALSE; - _tmp19_ = job; - _tmp20_ = _tmp19_->device; - _tmp22_ = sane_open (_tmp20_, &_tmp21_); - self->priv->handle = _tmp21_; - status = _tmp22_; - _tmp23_ = job; - _tmp24_ = _tmp23_->device; - _tmp25_ = status; - _tmp26_ = sane_status_to_string (_tmp25_); - _tmp27_ = _tmp26_; - g_debug ("scanner.vala:798: sane_open (\"%s\") -> %s", _tmp24_, _tmp27_); - _g_free0 (_tmp27_); + _tmp19_ = g_str_hash; + _tmp20_ = g_str_equal; + _tmp21_ = g_hash_table_new_full (_tmp19_, _tmp20_, _g_free0_, NULL); + _g_hash_table_unref0 (self->priv->options); + self->priv->options = _tmp21_; + _tmp22_ = job; + _tmp23_ = _tmp22_->device; + _tmp25_ = sane_open (_tmp23_, &_tmp24_); + self->priv->handle = _tmp24_; + status = _tmp25_; + _tmp26_ = job; + _tmp27_ = _tmp26_->device; _tmp28_ = status; - if (_tmp28_ != SANE_STATUS_GOOD) { - SANE_Status _tmp29_; - const gchar* _tmp30_ = NULL; - SANE_Status _tmp31_; - const gchar* _tmp32_ = NULL; - _tmp29_ = status; - _tmp30_ = sane_strstatus (_tmp29_); - g_warning ("scanner.vala:802: Unable to get open device: %s", _tmp30_); - _tmp31_ = status; - _tmp32_ = _ ("Unable to connect to scanner"); - scanner_fail_scan (self, (gint) _tmp31_, _tmp32_); + _tmp29_ = sane_status_to_string (_tmp28_); + _tmp30_ = _tmp29_; + g_debug ("scanner.vala:797: sane_open (\"%s\") -> %s", _tmp27_, _tmp30_); + _g_free0 (_tmp30_); + _tmp31_ = status; + if (_tmp31_ != SANE_STATUS_GOOD) { + SANE_Status _tmp32_; + const gchar* _tmp33_ = NULL; + SANE_Status _tmp34_; + const gchar* _tmp35_ = NULL; + _tmp32_ = status; + _tmp33_ = sane_strstatus (_tmp32_); + g_warning ("scanner.vala:801: Unable to get open device: %s", _tmp33_); + _tmp34_ = status; + _tmp35_ = _ ("Unable to connect to scanner"); + scanner_fail_scan (self, (gint) _tmp34_, _tmp35_); _scan_job_unref0 (job); return; } self->priv->have_handle = TRUE; - _tmp33_ = job; - _tmp34_ = _tmp33_->device; - _tmp35_ = g_strdup (_tmp34_); + _tmp36_ = job; + _tmp37_ = _tmp36_->device; + _tmp38_ = g_strdup (_tmp37_); _g_free0 (self->priv->current_device); - self->priv->current_device = _tmp35_; + self->priv->current_device = _tmp38_; self->priv->state = SCAN_STATE_GET_OPTION; _scan_job_unref0 (job); } @@ -5637,18 +5652,19 @@ static void scanner_do_get_option (Scanner* self) { SANE_Int index; SANE_Int _tmp8_; SANE_Option_Descriptor* _tmp9_; - SANE_Int _tmp54_; - SANE_Option_Descriptor* _tmp55_; - SANE_Option_Descriptor* _tmp56_; - SANE_Value_Type _tmp57_; - SANE_Option_Descriptor* _tmp58_; - SANE_Int _tmp59_; - SANE_Option_Descriptor* _tmp60_; - const gchar* _tmp61_; - SANE_Option_Descriptor* _tmp62_; - const gchar* _tmp63_; - const gchar* _tmp64_; - const gchar* _tmp294_; + SANE_Int _tmp332_; + SANE_Option_Descriptor* _tmp333_; + SANE_Option_Descriptor* _tmp334_; + SANE_Value_Type _tmp335_; + SANE_Option_Descriptor* _tmp336_; + SANE_Int _tmp337_; + SANE_Option_Descriptor* _tmp338_; + const gchar* _tmp339_; + GHashTable* _tmp340_; + SANE_Option_Descriptor* _tmp341_; + const gchar* _tmp342_; + gchar* _tmp343_; + SANE_Int _tmp344_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->job_queue; _tmp1_ = _tmp0_->data; @@ -5659,438 +5675,305 @@ static void scanner_do_get_option (Scanner* self) { _tmp5_ = sane_get_option_descriptor (_tmp3_, _tmp4_); option = _tmp5_; _tmp6_ = self->priv->option_index; - g_debug ("scanner.vala:819: sane_get_option_descriptor (%d)", (gint) _tmp6_); + g_debug ("scanner.vala:818: sane_get_option_descriptor (%d)", (gint) _tmp6_); _tmp7_ = self->priv->option_index; index = _tmp7_; _tmp8_ = self->priv->option_index; self->priv->option_index = _tmp8_ + 1; _tmp9_ = option; if (_tmp9_ == NULL) { - SANE_Int _tmp10_; - SANE_Int _tmp32_; - _tmp10_ = self->priv->br_x_option_index; - if (_tmp10_ != ((SANE_Int) 0)) { - SANE_Handle _tmp11_; - SANE_Int _tmp12_; - SANE_Option_Descriptor* _tmp13_ = NULL; - SANE_Int _tmp14_; - SANE_Option_Descriptor* _tmp15_; - SANE_Constraint_Type _tmp16_; - _tmp11_ = self->priv->handle; - _tmp12_ = self->priv->br_x_option_index; - _tmp13_ = sane_get_option_descriptor (_tmp11_, _tmp12_); - option = _tmp13_; - _tmp14_ = self->priv->br_x_option_index; - g_debug ("scanner.vala:829: sane_get_option_descriptor (%d)", (gint) _tmp14_); - _tmp15_ = option; - _tmp16_ = _tmp15_->constraint_type; - if (_tmp16_ == SANE_CONSTRAINT_RANGE) { - SANE_Option_Descriptor* _tmp17_; - SANE_Value_Type _tmp18_; - _tmp17_ = option; - _tmp18_ = _tmp17_->type; - if (_tmp18_ == SANE_TYPE_FIXED) { - SANE_Handle _tmp19_; - SANE_Option_Descriptor* _tmp20_; - SANE_Int _tmp21_; - SANE_Option_Descriptor* _tmp22_; - SANE_Range* _tmp23_; - SANE_Word _tmp24_; - gdouble _tmp25_ = 0.0; - _tmp19_ = self->priv->handle; - _tmp20_ = option; - _tmp21_ = self->priv->br_x_option_index; - _tmp22_ = option; - _tmp23_ = _tmp22_->constraint.range; - _tmp24_ = _tmp23_->max; - _tmp25_ = SANE_UNFIX ((SANE_Fixed) _tmp24_); - scanner_set_fixed_option (self, _tmp19_, _tmp20_, _tmp21_, _tmp25_, NULL); - } else { - SANE_Handle _tmp26_; - SANE_Option_Descriptor* _tmp27_; - SANE_Int _tmp28_; - SANE_Option_Descriptor* _tmp29_; - SANE_Range* _tmp30_; - SANE_Word _tmp31_; - _tmp26_ = self->priv->handle; - _tmp27_ = option; - _tmp28_ = self->priv->br_x_option_index; - _tmp29_ = option; - _tmp30_ = _tmp29_->constraint.range; - _tmp31_ = _tmp30_->max; - scanner_set_int_option (self, _tmp26_, _tmp27_, _tmp28_, (gint) _tmp31_, NULL); - } - } - } - _tmp32_ = self->priv->br_y_option_index; - if (_tmp32_ != ((SANE_Int) 0)) { - SANE_Handle _tmp33_; - SANE_Int _tmp34_; - SANE_Option_Descriptor* _tmp35_ = NULL; - SANE_Int _tmp36_; - SANE_Option_Descriptor* _tmp37_; - SANE_Constraint_Type _tmp38_; - _tmp33_ = self->priv->handle; - _tmp34_ = self->priv->br_y_option_index; - _tmp35_ = sane_get_option_descriptor (_tmp33_, _tmp34_); - option = _tmp35_; - _tmp36_ = self->priv->br_y_option_index; - g_debug ("scanner.vala:841: sane_get_option_descriptor (%d)", (gint) _tmp36_); - _tmp37_ = option; - _tmp38_ = _tmp37_->constraint_type; - if (_tmp38_ == SANE_CONSTRAINT_RANGE) { - SANE_Option_Descriptor* _tmp39_; - SANE_Value_Type _tmp40_; - _tmp39_ = option; - _tmp40_ = _tmp39_->type; - if (_tmp40_ == SANE_TYPE_FIXED) { - SANE_Handle _tmp41_; - SANE_Option_Descriptor* _tmp42_; - SANE_Int _tmp43_; - SANE_Option_Descriptor* _tmp44_; - SANE_Range* _tmp45_; - SANE_Word _tmp46_; - gdouble _tmp47_ = 0.0; - _tmp41_ = self->priv->handle; - _tmp42_ = option; - _tmp43_ = self->priv->br_y_option_index; - _tmp44_ = option; - _tmp45_ = _tmp44_->constraint.range; - _tmp46_ = _tmp45_->max; - _tmp47_ = SANE_UNFIX ((SANE_Fixed) _tmp46_); - scanner_set_fixed_option (self, _tmp41_, _tmp42_, _tmp43_, _tmp47_, NULL); - } else { - SANE_Handle _tmp48_; - SANE_Option_Descriptor* _tmp49_; - SANE_Int _tmp50_; - SANE_Option_Descriptor* _tmp51_; - SANE_Range* _tmp52_; - SANE_Word _tmp53_; - _tmp48_ = self->priv->handle; - _tmp49_ = option; - _tmp50_ = self->priv->br_y_option_index; - _tmp51_ = option; - _tmp52_ = _tmp51_->constraint.range; - _tmp53_ = _tmp52_->max; - scanner_set_int_option (self, _tmp48_, _tmp49_, _tmp50_, (gint) _tmp53_, NULL); - } - } - } - self->priv->state = SCAN_STATE_START; - _scan_job_unref0 (job); - return; - } - _tmp54_ = index; - _tmp55_ = option; - scanner_log_option (self, _tmp54_, _tmp55_); - _tmp56_ = option; - _tmp57_ = _tmp56_->type; - if (_tmp57_ == SANE_TYPE_GROUP) { - _scan_job_unref0 (job); - return; - } - _tmp58_ = option; - _tmp59_ = _tmp58_->cap; - if ((_tmp59_ & SANE_CAP_INACTIVE) != ((SANE_Int) 0)) { - _scan_job_unref0 (job); - return; - } - _tmp60_ = option; - _tmp61_ = _tmp60_->name; - if (_tmp61_ == NULL) { - _scan_job_unref0 (job); - return; - } - _tmp62_ = option; - _tmp63_ = _tmp62_->name; - _tmp64_ = SANE_NAME_SCAN_RESOLUTION; - if (g_strcmp0 (_tmp63_, _tmp64_) == 0) { - SANE_Option_Descriptor* _tmp65_; - SANE_Value_Type _tmp66_; - _tmp65_ = option; - _tmp66_ = _tmp65_->type; - if (_tmp66_ == SANE_TYPE_FIXED) { - SANE_Handle _tmp67_; - SANE_Option_Descriptor* _tmp68_; - SANE_Int _tmp69_; - ScanJob* _tmp70_; - gdouble _tmp71_; - ScanJob* _tmp72_; - gdouble _tmp73_ = 0.0; - _tmp67_ = self->priv->handle; - _tmp68_ = option; - _tmp69_ = index; - _tmp70_ = job; - _tmp71_ = _tmp70_->dpi; - _tmp72_ = job; - scanner_set_fixed_option (self, _tmp67_, _tmp68_, _tmp69_, _tmp71_, &_tmp73_); - _tmp72_->dpi = _tmp73_; - } else { - gint dpi = 0; - SANE_Handle _tmp74_; - SANE_Option_Descriptor* _tmp75_; - SANE_Int _tmp76_; - ScanJob* _tmp77_; - gdouble _tmp78_; - gint _tmp79_ = 0; - ScanJob* _tmp80_; - gint _tmp81_; - _tmp74_ = self->priv->handle; - _tmp75_ = option; - _tmp76_ = index; - _tmp77_ = job; - _tmp78_ = _tmp77_->dpi; - scanner_set_int_option (self, _tmp74_, _tmp75_, _tmp76_, (gint) _tmp78_, &_tmp79_); - dpi = _tmp79_; - _tmp80_ = job; - _tmp81_ = dpi; - _tmp80_->dpi = (gdouble) _tmp81_; - } - } else { - SANE_Option_Descriptor* _tmp82_; - const gchar* _tmp83_; - const gchar* _tmp84_; - _tmp82_ = option; - _tmp83_ = _tmp82_->name; - _tmp84_ = SANE_NAME_SCAN_SOURCE; - if (g_strcmp0 (_tmp83_, _tmp84_) == 0) { - gchar* _tmp85_; - const gchar* _tmp86_ = NULL; - gchar* _tmp87_; - gchar* _tmp88_; - const gchar* _tmp89_ = NULL; - gchar* _tmp90_; - gchar* _tmp91_; - gchar* _tmp92_; - const gchar* _tmp93_ = NULL; - gchar* _tmp94_; - gchar** _tmp95_ = NULL; + SANE_Handle _tmp10_; + const gchar* _tmp11_; + gint _tmp12_ = 0; + SANE_Option_Descriptor* _tmp13_ = NULL; + SANE_Option_Descriptor* _tmp14_; + SANE_Handle _tmp86_; + const gchar* _tmp87_; + gint _tmp88_ = 0; + SANE_Option_Descriptor* _tmp89_ = NULL; + SANE_Option_Descriptor* _tmp90_; + SANE_Handle _tmp142_; + gint _tmp143_ = 0; + SANE_Option_Descriptor* _tmp144_ = NULL; + SANE_Option_Descriptor* _tmp145_; + SANE_Handle _tmp153_; + gint _tmp154_ = 0; + SANE_Option_Descriptor* _tmp155_ = NULL; + SANE_Option_Descriptor* _tmp156_; + SANE_Handle _tmp164_; + gint _tmp165_ = 0; + SANE_Option_Descriptor* _tmp166_ = NULL; + SANE_Option_Descriptor* _tmp167_; + SANE_Handle _tmp180_; + const gchar* _tmp181_; + gint _tmp182_ = 0; + SANE_Option_Descriptor* _tmp183_ = NULL; + SANE_Option_Descriptor* _tmp184_; + SANE_Handle _tmp214_; + const gchar* _tmp215_; + gint _tmp216_ = 0; + SANE_Option_Descriptor* _tmp217_ = NULL; + SANE_Option_Descriptor* _tmp218_; + SANE_Handle _tmp236_; + const gchar* _tmp237_; + gint _tmp238_ = 0; + SANE_Option_Descriptor* _tmp239_ = NULL; + SANE_Option_Descriptor* _tmp240_; + SANE_Handle _tmp258_; + const gchar* _tmp259_; + gint _tmp260_ = 0; + SANE_Option_Descriptor* _tmp261_ = NULL; + SANE_Option_Descriptor* _tmp262_; + SANE_Handle _tmp277_; + const gchar* _tmp278_; + gint _tmp279_ = 0; + SANE_Option_Descriptor* _tmp280_ = NULL; + SANE_Option_Descriptor* _tmp281_; + const gchar* _tmp296_; + _tmp10_ = self->priv->handle; + _tmp11_ = SANE_NAME_SCAN_SOURCE; + _tmp13_ = scanner_get_option_by_name (self, _tmp10_, _tmp11_, &_tmp12_); + index = (SANE_Int) _tmp12_; + option = _tmp13_; + _tmp14_ = option; + if (_tmp14_ != NULL) { + gchar* _tmp15_; + const gchar* _tmp16_ = NULL; + gchar* _tmp17_; + gchar* _tmp18_; + const gchar* _tmp19_ = NULL; + gchar* _tmp20_; + gchar* _tmp21_; + gchar* _tmp22_; + const gchar* _tmp23_ = NULL; + gchar* _tmp24_; + gchar** _tmp25_ = NULL; gchar** flatbed_sources; gint flatbed_sources_length1; gint _flatbed_sources_size_; - gchar* _tmp96_; - const gchar* _tmp97_ = NULL; - gchar* _tmp98_; - gchar* _tmp99_; - gchar* _tmp100_; - gchar* _tmp101_; - gchar** _tmp102_ = NULL; + gchar* _tmp26_; + const gchar* _tmp27_ = NULL; + gchar* _tmp28_; + gchar* _tmp29_; + gchar* _tmp30_; + gchar* _tmp31_; + gchar** _tmp32_ = NULL; gchar** adf_sources; gint adf_sources_length1; gint _adf_sources_size_; - gchar* _tmp103_; - const gchar* _tmp104_ = NULL; - gchar* _tmp105_; - gchar** _tmp106_ = NULL; + gchar* _tmp33_; + const gchar* _tmp34_ = NULL; + gchar* _tmp35_; + gchar** _tmp36_ = NULL; gchar** adf_front_sources; gint adf_front_sources_length1; gint _adf_front_sources_size_; - gchar* _tmp107_; - const gchar* _tmp108_ = NULL; - gchar* _tmp109_; - gchar** _tmp110_ = NULL; + gchar* _tmp37_; + const gchar* _tmp38_ = NULL; + gchar* _tmp39_; + gchar** _tmp40_ = NULL; gchar** adf_back_sources; gint adf_back_sources_length1; gint _adf_back_sources_size_; - gchar* _tmp111_; - const gchar* _tmp112_ = NULL; - gchar* _tmp113_; - gchar** _tmp114_ = NULL; + gchar* _tmp41_; + const gchar* _tmp42_ = NULL; + gchar* _tmp43_; + gchar** _tmp44_ = NULL; gchar** adf_duplex_sources; gint adf_duplex_sources_length1; gint _adf_duplex_sources_size_; - ScanJob* _tmp115_; - ScanType _tmp116_; - _tmp85_ = g_strdup ("Auto"); - _tmp86_ = SANE_I18N ("Auto"); - _tmp87_ = g_strdup (_tmp86_); - _tmp88_ = g_strdup ("Flatbed"); - _tmp89_ = SANE_I18N ("Flatbed"); - _tmp90_ = g_strdup (_tmp89_); - _tmp91_ = g_strdup ("FlatBed"); - _tmp92_ = g_strdup ("Normal"); - _tmp93_ = SANE_I18N ("Normal"); - _tmp94_ = g_strdup (_tmp93_); - _tmp95_ = g_new0 (gchar*, 7 + 1); - _tmp95_[0] = _tmp85_; - _tmp95_[1] = _tmp87_; - _tmp95_[2] = _tmp88_; - _tmp95_[3] = _tmp90_; - _tmp95_[4] = _tmp91_; - _tmp95_[5] = _tmp92_; - _tmp95_[6] = _tmp94_; - flatbed_sources = _tmp95_; + ScanJob* _tmp45_; + ScanType _tmp46_; + _tmp15_ = g_strdup ("Auto"); + _tmp16_ = SANE_I18N ("Auto"); + _tmp17_ = g_strdup (_tmp16_); + _tmp18_ = g_strdup ("Flatbed"); + _tmp19_ = SANE_I18N ("Flatbed"); + _tmp20_ = g_strdup (_tmp19_); + _tmp21_ = g_strdup ("FlatBed"); + _tmp22_ = g_strdup ("Normal"); + _tmp23_ = SANE_I18N ("Normal"); + _tmp24_ = g_strdup (_tmp23_); + _tmp25_ = g_new0 (gchar*, 7 + 1); + _tmp25_[0] = _tmp15_; + _tmp25_[1] = _tmp17_; + _tmp25_[2] = _tmp18_; + _tmp25_[3] = _tmp20_; + _tmp25_[4] = _tmp21_; + _tmp25_[5] = _tmp22_; + _tmp25_[6] = _tmp24_; + flatbed_sources = _tmp25_; flatbed_sources_length1 = 7; _flatbed_sources_size_ = flatbed_sources_length1; - _tmp96_ = g_strdup ("Automatic Document Feeder"); - _tmp97_ = SANE_I18N ("Automatic Document Feeder"); - _tmp98_ = g_strdup (_tmp97_); - _tmp99_ = g_strdup ("ADF"); - _tmp100_ = g_strdup ("Automatic Document Feeder(left aligned)"); - _tmp101_ = g_strdup ("Automatic Document Feeder(centrally aligned)"); - _tmp102_ = g_new0 (gchar*, 5 + 1); - _tmp102_[0] = _tmp96_; - _tmp102_[1] = _tmp98_; - _tmp102_[2] = _tmp99_; - _tmp102_[3] = _tmp100_; - _tmp102_[4] = _tmp101_; - adf_sources = _tmp102_; + _tmp26_ = g_strdup ("Automatic Document Feeder"); + _tmp27_ = SANE_I18N ("Automatic Document Feeder"); + _tmp28_ = g_strdup (_tmp27_); + _tmp29_ = g_strdup ("ADF"); + _tmp30_ = g_strdup ("Automatic Document Feeder(left aligned)"); + _tmp31_ = g_strdup ("Automatic Document Feeder(centrally aligned)"); + _tmp32_ = g_new0 (gchar*, 5 + 1); + _tmp32_[0] = _tmp26_; + _tmp32_[1] = _tmp28_; + _tmp32_[2] = _tmp29_; + _tmp32_[3] = _tmp30_; + _tmp32_[4] = _tmp31_; + adf_sources = _tmp32_; adf_sources_length1 = 5; _adf_sources_size_ = adf_sources_length1; - _tmp103_ = g_strdup ("ADF Front"); - _tmp104_ = SANE_I18N ("ADF Front"); - _tmp105_ = g_strdup (_tmp104_); - _tmp106_ = g_new0 (gchar*, 2 + 1); - _tmp106_[0] = _tmp103_; - _tmp106_[1] = _tmp105_; - adf_front_sources = _tmp106_; + _tmp33_ = g_strdup ("ADF Front"); + _tmp34_ = SANE_I18N ("ADF Front"); + _tmp35_ = g_strdup (_tmp34_); + _tmp36_ = g_new0 (gchar*, 2 + 1); + _tmp36_[0] = _tmp33_; + _tmp36_[1] = _tmp35_; + adf_front_sources = _tmp36_; adf_front_sources_length1 = 2; _adf_front_sources_size_ = adf_front_sources_length1; - _tmp107_ = g_strdup ("ADF Back"); - _tmp108_ = SANE_I18N ("ADF Back"); - _tmp109_ = g_strdup (_tmp108_); - _tmp110_ = g_new0 (gchar*, 2 + 1); - _tmp110_[0] = _tmp107_; - _tmp110_[1] = _tmp109_; - adf_back_sources = _tmp110_; + _tmp37_ = g_strdup ("ADF Back"); + _tmp38_ = SANE_I18N ("ADF Back"); + _tmp39_ = g_strdup (_tmp38_); + _tmp40_ = g_new0 (gchar*, 2 + 1); + _tmp40_[0] = _tmp37_; + _tmp40_[1] = _tmp39_; + adf_back_sources = _tmp40_; adf_back_sources_length1 = 2; _adf_back_sources_size_ = adf_back_sources_length1; - _tmp111_ = g_strdup ("ADF Duplex"); - _tmp112_ = SANE_I18N ("ADF Duplex"); - _tmp113_ = g_strdup (_tmp112_); - _tmp114_ = g_new0 (gchar*, 2 + 1); - _tmp114_[0] = _tmp111_; - _tmp114_[1] = _tmp113_; - adf_duplex_sources = _tmp114_; + _tmp41_ = g_strdup ("ADF Duplex"); + _tmp42_ = SANE_I18N ("ADF Duplex"); + _tmp43_ = g_strdup (_tmp42_); + _tmp44_ = g_new0 (gchar*, 2 + 1); + _tmp44_[0] = _tmp41_; + _tmp44_[1] = _tmp43_; + adf_duplex_sources = _tmp44_; adf_duplex_sources_length1 = 2; _adf_duplex_sources_size_ = adf_duplex_sources_length1; - _tmp115_ = job; - _tmp116_ = _tmp115_->type; - switch (_tmp116_) { + _tmp45_ = job; + _tmp46_ = _tmp45_->type; + switch (_tmp46_) { case SCAN_TYPE_SINGLE: { - SANE_Handle _tmp117_; - SANE_Option_Descriptor* _tmp118_; - SANE_Int _tmp119_; - gboolean _tmp120_ = FALSE; - _tmp117_ = self->priv->handle; - _tmp118_ = option; - _tmp119_ = index; - _tmp120_ = scanner_set_default_option (self, _tmp117_, _tmp118_, _tmp119_); - if (!_tmp120_) { - SANE_Handle _tmp121_; - SANE_Option_Descriptor* _tmp122_; - SANE_Int _tmp123_; - gchar** _tmp124_; - gint _tmp124__length1; - gboolean _tmp125_ = FALSE; - _tmp121_ = self->priv->handle; - _tmp122_ = option; - _tmp123_ = index; - _tmp124_ = flatbed_sources; - _tmp124__length1 = flatbed_sources_length1; - _tmp125_ = scanner_set_constrained_string_option (self, _tmp121_, _tmp122_, _tmp123_, _tmp124_, _tmp124__length1, NULL); - if (!_tmp125_) { - g_warning ("scanner.vala:925: Unable to set single page source, please file a bug"); + SANE_Handle _tmp47_; + SANE_Option_Descriptor* _tmp48_; + SANE_Int _tmp49_; + gboolean _tmp50_ = FALSE; + _tmp47_ = self->priv->handle; + _tmp48_ = option; + _tmp49_ = index; + _tmp50_ = scanner_set_default_option (self, _tmp47_, _tmp48_, _tmp49_); + if (!_tmp50_) { + SANE_Handle _tmp51_; + SANE_Option_Descriptor* _tmp52_; + SANE_Int _tmp53_; + gchar** _tmp54_; + gint _tmp54__length1; + gboolean _tmp55_ = FALSE; + _tmp51_ = self->priv->handle; + _tmp52_ = option; + _tmp53_ = index; + _tmp54_ = flatbed_sources; + _tmp54__length1 = flatbed_sources_length1; + _tmp55_ = scanner_set_constrained_string_option (self, _tmp51_, _tmp52_, _tmp53_, _tmp54_, _tmp54__length1, NULL); + if (!_tmp55_) { + g_warning ("scanner.vala:872: Unable to set single page source, please file a bug"); } } break; } case SCAN_TYPE_ADF_FRONT: { - SANE_Handle _tmp126_; - SANE_Option_Descriptor* _tmp127_; - SANE_Int _tmp128_; - gchar** _tmp129_; - gint _tmp129__length1; - gboolean _tmp130_ = FALSE; - _tmp126_ = self->priv->handle; - _tmp127_ = option; - _tmp128_ = index; - _tmp129_ = adf_front_sources; - _tmp129__length1 = adf_front_sources_length1; - _tmp130_ = scanner_set_constrained_string_option (self, _tmp126_, _tmp127_, _tmp128_, _tmp129_, _tmp129__length1, NULL); - if (!_tmp130_) { - SANE_Handle _tmp131_; - SANE_Option_Descriptor* _tmp132_; - SANE_Int _tmp133_; - gchar** _tmp134_; - gint _tmp134__length1; - gboolean _tmp135_ = FALSE; - _tmp131_ = self->priv->handle; - _tmp132_ = option; - _tmp133_ = index; - _tmp134_ = adf_sources; - _tmp134__length1 = adf_sources_length1; - _tmp135_ = scanner_set_constrained_string_option (self, _tmp131_, _tmp132_, _tmp133_, _tmp134_, _tmp134__length1, NULL); - if (!(!_tmp135_)) { - g_warning ("scanner.vala:930: Unable to set front ADF source, please file a bug"); + SANE_Handle _tmp56_; + SANE_Option_Descriptor* _tmp57_; + SANE_Int _tmp58_; + gchar** _tmp59_; + gint _tmp59__length1; + gboolean _tmp60_ = FALSE; + _tmp56_ = self->priv->handle; + _tmp57_ = option; + _tmp58_ = index; + _tmp59_ = adf_front_sources; + _tmp59__length1 = adf_front_sources_length1; + _tmp60_ = scanner_set_constrained_string_option (self, _tmp56_, _tmp57_, _tmp58_, _tmp59_, _tmp59__length1, NULL); + if (!_tmp60_) { + SANE_Handle _tmp61_; + SANE_Option_Descriptor* _tmp62_; + SANE_Int _tmp63_; + gchar** _tmp64_; + gint _tmp64__length1; + gboolean _tmp65_ = FALSE; + _tmp61_ = self->priv->handle; + _tmp62_ = option; + _tmp63_ = index; + _tmp64_ = adf_sources; + _tmp64__length1 = adf_sources_length1; + _tmp65_ = scanner_set_constrained_string_option (self, _tmp61_, _tmp62_, _tmp63_, _tmp64_, _tmp64__length1, NULL); + if (!(!_tmp65_)) { + g_warning ("scanner.vala:877: Unable to set front ADF source, please file a bug"); } } break; } case SCAN_TYPE_ADF_BACK: { - SANE_Handle _tmp136_; - SANE_Option_Descriptor* _tmp137_; - SANE_Int _tmp138_; - gchar** _tmp139_; - gint _tmp139__length1; - gboolean _tmp140_ = FALSE; - _tmp136_ = self->priv->handle; - _tmp137_ = option; - _tmp138_ = index; - _tmp139_ = adf_back_sources; - _tmp139__length1 = adf_back_sources_length1; - _tmp140_ = scanner_set_constrained_string_option (self, _tmp136_, _tmp137_, _tmp138_, _tmp139_, _tmp139__length1, NULL); - if (!_tmp140_) { - SANE_Handle _tmp141_; - SANE_Option_Descriptor* _tmp142_; - SANE_Int _tmp143_; - gchar** _tmp144_; - gint _tmp144__length1; - gboolean _tmp145_ = FALSE; - _tmp141_ = self->priv->handle; - _tmp142_ = option; - _tmp143_ = index; - _tmp144_ = adf_sources; - _tmp144__length1 = adf_sources_length1; - _tmp145_ = scanner_set_constrained_string_option (self, _tmp141_, _tmp142_, _tmp143_, _tmp144_, _tmp144__length1, NULL); - if (!_tmp145_) { - g_warning ("scanner.vala:935: Unable to set back ADF source, please file a bug"); + SANE_Handle _tmp66_; + SANE_Option_Descriptor* _tmp67_; + SANE_Int _tmp68_; + gchar** _tmp69_; + gint _tmp69__length1; + gboolean _tmp70_ = FALSE; + _tmp66_ = self->priv->handle; + _tmp67_ = option; + _tmp68_ = index; + _tmp69_ = adf_back_sources; + _tmp69__length1 = adf_back_sources_length1; + _tmp70_ = scanner_set_constrained_string_option (self, _tmp66_, _tmp67_, _tmp68_, _tmp69_, _tmp69__length1, NULL); + if (!_tmp70_) { + SANE_Handle _tmp71_; + SANE_Option_Descriptor* _tmp72_; + SANE_Int _tmp73_; + gchar** _tmp74_; + gint _tmp74__length1; + gboolean _tmp75_ = FALSE; + _tmp71_ = self->priv->handle; + _tmp72_ = option; + _tmp73_ = index; + _tmp74_ = adf_sources; + _tmp74__length1 = adf_sources_length1; + _tmp75_ = scanner_set_constrained_string_option (self, _tmp71_, _tmp72_, _tmp73_, _tmp74_, _tmp74__length1, NULL); + if (!_tmp75_) { + g_warning ("scanner.vala:882: Unable to set back ADF source, please file a bug"); } } break; } case SCAN_TYPE_ADF_BOTH: { - SANE_Handle _tmp146_; - SANE_Option_Descriptor* _tmp147_; - SANE_Int _tmp148_; - gchar** _tmp149_; - gint _tmp149__length1; - gboolean _tmp150_ = FALSE; - _tmp146_ = self->priv->handle; - _tmp147_ = option; - _tmp148_ = index; - _tmp149_ = adf_duplex_sources; - _tmp149__length1 = adf_duplex_sources_length1; - _tmp150_ = scanner_set_constrained_string_option (self, _tmp146_, _tmp147_, _tmp148_, _tmp149_, _tmp149__length1, NULL); - if (!_tmp150_) { - SANE_Handle _tmp151_; - SANE_Option_Descriptor* _tmp152_; - SANE_Int _tmp153_; - gchar** _tmp154_; - gint _tmp154__length1; - gboolean _tmp155_ = FALSE; - _tmp151_ = self->priv->handle; - _tmp152_ = option; - _tmp153_ = index; - _tmp154_ = adf_sources; - _tmp154__length1 = adf_sources_length1; - _tmp155_ = scanner_set_constrained_string_option (self, _tmp151_, _tmp152_, _tmp153_, _tmp154_, _tmp154__length1, NULL); - if (!_tmp155_) { - g_warning ("scanner.vala:940: Unable to set duplex ADF source, please file a bug"); + SANE_Handle _tmp76_; + SANE_Option_Descriptor* _tmp77_; + SANE_Int _tmp78_; + gchar** _tmp79_; + gint _tmp79__length1; + gboolean _tmp80_ = FALSE; + _tmp76_ = self->priv->handle; + _tmp77_ = option; + _tmp78_ = index; + _tmp79_ = adf_duplex_sources; + _tmp79__length1 = adf_duplex_sources_length1; + _tmp80_ = scanner_set_constrained_string_option (self, _tmp76_, _tmp77_, _tmp78_, _tmp79_, _tmp79__length1, NULL); + if (!_tmp80_) { + SANE_Handle _tmp81_; + SANE_Option_Descriptor* _tmp82_; + SANE_Int _tmp83_; + gchar** _tmp84_; + gint _tmp84__length1; + gboolean _tmp85_ = FALSE; + _tmp81_ = self->priv->handle; + _tmp82_ = option; + _tmp83_ = index; + _tmp84_ = adf_sources; + _tmp84__length1 = adf_sources_length1; + _tmp85_ = scanner_set_constrained_string_option (self, _tmp81_, _tmp82_, _tmp83_, _tmp84_, _tmp84__length1, NULL); + if (!_tmp85_) { + g_warning ("scanner.vala:887: Unable to set duplex ADF source, please file a bug"); } } break; @@ -6103,504 +5986,714 @@ static void scanner_do_get_option (Scanner* self) { adf_front_sources = (_vala_array_free (adf_front_sources, adf_front_sources_length1, (GDestroyNotify) g_free), NULL); adf_sources = (_vala_array_free (adf_sources, adf_sources_length1, (GDestroyNotify) g_free), NULL); flatbed_sources = (_vala_array_free (flatbed_sources, flatbed_sources_length1, (GDestroyNotify) g_free), NULL); - } else { - SANE_Option_Descriptor* _tmp156_; - const gchar* _tmp157_; - _tmp156_ = option; - _tmp157_ = _tmp156_->name; - if (g_strcmp0 (_tmp157_, "duplex") == 0) { - SANE_Option_Descriptor* _tmp158_; - SANE_Value_Type _tmp159_; - _tmp158_ = option; - _tmp159_ = _tmp158_->type; - if (_tmp159_ == SANE_TYPE_BOOL) { - SANE_Handle _tmp160_; - SANE_Option_Descriptor* _tmp161_; - SANE_Int _tmp162_; - ScanJob* _tmp163_; - ScanType _tmp164_; - _tmp160_ = self->priv->handle; - _tmp161_ = option; - _tmp162_ = index; - _tmp163_ = job; - _tmp164_ = _tmp163_->type; - scanner_set_bool_option (self, _tmp160_, _tmp161_, _tmp162_, _tmp164_ == SCAN_TYPE_ADF_BOTH, NULL); + } + _tmp86_ = self->priv->handle; + _tmp87_ = SANE_NAME_SCAN_MODE; + _tmp89_ = scanner_get_option_by_name (self, _tmp86_, _tmp87_, &_tmp88_); + index = (SANE_Int) _tmp88_; + option = _tmp89_; + _tmp90_ = option; + if (_tmp90_ != NULL) { + const gchar* _tmp91_; + gchar* _tmp92_; + gchar* _tmp93_; + gchar* _tmp94_; + gchar** _tmp95_ = NULL; + gchar** color_scan_modes; + gint color_scan_modes_length1; + gint _color_scan_modes_size_; + const gchar* _tmp96_; + gchar* _tmp97_; + gchar* _tmp98_; + gchar* _tmp99_; + const gchar* _tmp100_ = NULL; + gchar* _tmp101_; + gchar* _tmp102_; + gchar** _tmp103_ = NULL; + gchar** gray_scan_modes; + gint gray_scan_modes_length1; + gint _gray_scan_modes_size_; + const gchar* _tmp104_; + gchar* _tmp105_; + gchar* _tmp106_; + gchar* _tmp107_; + const gchar* _tmp108_ = NULL; + gchar* _tmp109_; + gchar* _tmp110_; + const gchar* _tmp111_ = NULL; + gchar* _tmp112_; + gchar* _tmp113_; + const gchar* _tmp114_ = NULL; + gchar* _tmp115_; + gchar* _tmp116_; + const gchar* _tmp117_; + gchar* _tmp118_; + gchar* _tmp119_; + gchar* _tmp120_; + const gchar* _tmp121_ = NULL; + gchar* _tmp122_; + gchar* _tmp123_; + gchar** _tmp124_ = NULL; + gchar** lineart_scan_modes; + gint lineart_scan_modes_length1; + gint _lineart_scan_modes_size_; + ScanJob* _tmp125_; + ScanMode _tmp126_; + _tmp91_ = SANE_VALUE_SCAN_MODE_COLOR; + _tmp92_ = g_strdup (_tmp91_); + _tmp93_ = g_strdup ("Color"); + _tmp94_ = g_strdup ("24bit Color"); + _tmp95_ = g_new0 (gchar*, 3 + 1); + _tmp95_[0] = _tmp92_; + _tmp95_[1] = _tmp93_; + _tmp95_[2] = _tmp94_; + color_scan_modes = _tmp95_; + color_scan_modes_length1 = 3; + _color_scan_modes_size_ = color_scan_modes_length1; + _tmp96_ = SANE_VALUE_SCAN_MODE_GRAY; + _tmp97_ = g_strdup (_tmp96_); + _tmp98_ = g_strdup ("Gray"); + _tmp99_ = g_strdup ("Grayscale"); + _tmp100_ = SANE_I18N ("Grayscale"); + _tmp101_ = g_strdup (_tmp100_); + _tmp102_ = g_strdup ("True Gray"); + _tmp103_ = g_new0 (gchar*, 5 + 1); + _tmp103_[0] = _tmp97_; + _tmp103_[1] = _tmp98_; + _tmp103_[2] = _tmp99_; + _tmp103_[3] = _tmp101_; + _tmp103_[4] = _tmp102_; + gray_scan_modes = _tmp103_; + gray_scan_modes_length1 = 5; + _gray_scan_modes_size_ = gray_scan_modes_length1; + _tmp104_ = SANE_VALUE_SCAN_MODE_LINEART; + _tmp105_ = g_strdup (_tmp104_); + _tmp106_ = g_strdup ("Lineart"); + _tmp107_ = g_strdup ("LineArt"); + _tmp108_ = SANE_I18N ("LineArt"); + _tmp109_ = g_strdup (_tmp108_); + _tmp110_ = g_strdup ("Black & White"); + _tmp111_ = SANE_I18N ("Black & White"); + _tmp112_ = g_strdup (_tmp111_); + _tmp113_ = g_strdup ("Binary"); + _tmp114_ = SANE_I18N ("Binary"); + _tmp115_ = g_strdup (_tmp114_); + _tmp116_ = g_strdup ("Thresholded"); + _tmp117_ = SANE_VALUE_SCAN_MODE_GRAY; + _tmp118_ = g_strdup (_tmp117_); + _tmp119_ = g_strdup ("Gray"); + _tmp120_ = g_strdup ("Grayscale"); + _tmp121_ = SANE_I18N ("Grayscale"); + _tmp122_ = g_strdup (_tmp121_); + _tmp123_ = g_strdup ("True Gray"); + _tmp124_ = g_new0 (gchar*, 14 + 1); + _tmp124_[0] = _tmp105_; + _tmp124_[1] = _tmp106_; + _tmp124_[2] = _tmp107_; + _tmp124_[3] = _tmp109_; + _tmp124_[4] = _tmp110_; + _tmp124_[5] = _tmp112_; + _tmp124_[6] = _tmp113_; + _tmp124_[7] = _tmp115_; + _tmp124_[8] = _tmp116_; + _tmp124_[9] = _tmp118_; + _tmp124_[10] = _tmp119_; + _tmp124_[11] = _tmp120_; + _tmp124_[12] = _tmp122_; + _tmp124_[13] = _tmp123_; + lineart_scan_modes = _tmp124_; + lineart_scan_modes_length1 = 14; + _lineart_scan_modes_size_ = lineart_scan_modes_length1; + _tmp125_ = job; + _tmp126_ = _tmp125_->scan_mode; + switch (_tmp126_) { + case SCAN_MODE_COLOR: + { + SANE_Handle _tmp127_; + SANE_Option_Descriptor* _tmp128_; + SANE_Int _tmp129_; + gchar** _tmp130_; + gint _tmp130__length1; + gboolean _tmp131_ = FALSE; + _tmp127_ = self->priv->handle; + _tmp128_ = option; + _tmp129_ = index; + _tmp130_ = color_scan_modes; + _tmp130__length1 = color_scan_modes_length1; + _tmp131_ = scanner_set_constrained_string_option (self, _tmp127_, _tmp128_, _tmp129_, _tmp130_, _tmp130__length1, NULL); + if (!_tmp131_) { + g_warning ("scanner.vala:933: Unable to set Color mode, please file a bug"); + } + break; } - } else { - SANE_Option_Descriptor* _tmp165_; - const gchar* _tmp166_; - _tmp165_ = option; - _tmp166_ = _tmp165_->name; - if (g_strcmp0 (_tmp166_, "batch-scan") == 0) { - SANE_Option_Descriptor* _tmp167_; - SANE_Value_Type _tmp168_; - _tmp167_ = option; - _tmp168_ = _tmp167_->type; - if (_tmp168_ == SANE_TYPE_BOOL) { - SANE_Handle _tmp169_; - SANE_Option_Descriptor* _tmp170_; - SANE_Int _tmp171_; - ScanJob* _tmp172_; - ScanType _tmp173_; - _tmp169_ = self->priv->handle; - _tmp170_ = option; - _tmp171_ = index; - _tmp172_ = job; - _tmp173_ = _tmp172_->type; - scanner_set_bool_option (self, _tmp169_, _tmp170_, _tmp171_, _tmp173_ != SCAN_TYPE_SINGLE, NULL); + case SCAN_MODE_GRAY: + { + SANE_Handle _tmp132_; + SANE_Option_Descriptor* _tmp133_; + SANE_Int _tmp134_; + gchar** _tmp135_; + gint _tmp135__length1; + gboolean _tmp136_ = FALSE; + _tmp132_ = self->priv->handle; + _tmp133_ = option; + _tmp134_ = index; + _tmp135_ = gray_scan_modes; + _tmp135__length1 = gray_scan_modes_length1; + _tmp136_ = scanner_set_constrained_string_option (self, _tmp132_, _tmp133_, _tmp134_, _tmp135_, _tmp135__length1, NULL); + if (!_tmp136_) { + g_warning ("scanner.vala:937: Unable to set Gray mode, please file a bug"); } - } else { - SANE_Option_Descriptor* _tmp174_; - const gchar* _tmp175_; - const gchar* _tmp176_; - _tmp174_ = option; - _tmp175_ = _tmp174_->name; - _tmp176_ = SANE_NAME_BIT_DEPTH; - if (g_strcmp0 (_tmp175_, _tmp176_) == 0) { - ScanJob* _tmp177_; - gint _tmp178_; - _tmp177_ = job; - _tmp178_ = _tmp177_->depth; - if (_tmp178_ > 0) { - SANE_Handle _tmp179_; - SANE_Option_Descriptor* _tmp180_; - SANE_Int _tmp181_; - ScanJob* _tmp182_; - gint _tmp183_; - _tmp179_ = self->priv->handle; - _tmp180_ = option; - _tmp181_ = index; - _tmp182_ = job; - _tmp183_ = _tmp182_->depth; - scanner_set_int_option (self, _tmp179_, _tmp180_, _tmp181_, _tmp183_, NULL); - } - } else { - SANE_Option_Descriptor* _tmp184_; - const gchar* _tmp185_; - const gchar* _tmp186_; - _tmp184_ = option; - _tmp185_ = _tmp184_->name; - _tmp186_ = SANE_NAME_SCAN_MODE; - if (g_strcmp0 (_tmp185_, _tmp186_) == 0) { - const gchar* _tmp187_; - gchar* _tmp188_; - gchar* _tmp189_; - gchar* _tmp190_; - gchar** _tmp191_ = NULL; - gchar** color_scan_modes; - gint color_scan_modes_length1; - gint _color_scan_modes_size_; - const gchar* _tmp192_; - gchar* _tmp193_; - gchar* _tmp194_; - gchar* _tmp195_; - const gchar* _tmp196_ = NULL; - gchar* _tmp197_; - gchar* _tmp198_; - gchar** _tmp199_ = NULL; - gchar** gray_scan_modes; - gint gray_scan_modes_length1; - gint _gray_scan_modes_size_; - const gchar* _tmp200_; - gchar* _tmp201_; - gchar* _tmp202_; - gchar* _tmp203_; - const gchar* _tmp204_ = NULL; - gchar* _tmp205_; - gchar* _tmp206_; - const gchar* _tmp207_ = NULL; - gchar* _tmp208_; - gchar* _tmp209_; - const gchar* _tmp210_ = NULL; - gchar* _tmp211_; - gchar* _tmp212_; - const gchar* _tmp213_; - gchar* _tmp214_; - gchar* _tmp215_; - gchar* _tmp216_; - const gchar* _tmp217_ = NULL; - gchar* _tmp218_; - gchar* _tmp219_; - gchar** _tmp220_ = NULL; - gchar** lineart_scan_modes; - gint lineart_scan_modes_length1; - gint _lineart_scan_modes_size_; - ScanJob* _tmp221_; - ScanMode _tmp222_; - _tmp187_ = SANE_VALUE_SCAN_MODE_COLOR; - _tmp188_ = g_strdup (_tmp187_); - _tmp189_ = g_strdup ("Color"); - _tmp190_ = g_strdup ("24bit Color"); - _tmp191_ = g_new0 (gchar*, 3 + 1); - _tmp191_[0] = _tmp188_; - _tmp191_[1] = _tmp189_; - _tmp191_[2] = _tmp190_; - color_scan_modes = _tmp191_; - color_scan_modes_length1 = 3; - _color_scan_modes_size_ = color_scan_modes_length1; - _tmp192_ = SANE_VALUE_SCAN_MODE_GRAY; - _tmp193_ = g_strdup (_tmp192_); - _tmp194_ = g_strdup ("Gray"); - _tmp195_ = g_strdup ("Grayscale"); - _tmp196_ = SANE_I18N ("Grayscale"); - _tmp197_ = g_strdup (_tmp196_); - _tmp198_ = g_strdup ("True Gray"); - _tmp199_ = g_new0 (gchar*, 5 + 1); - _tmp199_[0] = _tmp193_; - _tmp199_[1] = _tmp194_; - _tmp199_[2] = _tmp195_; - _tmp199_[3] = _tmp197_; - _tmp199_[4] = _tmp198_; - gray_scan_modes = _tmp199_; - gray_scan_modes_length1 = 5; - _gray_scan_modes_size_ = gray_scan_modes_length1; - _tmp200_ = SANE_VALUE_SCAN_MODE_LINEART; - _tmp201_ = g_strdup (_tmp200_); - _tmp202_ = g_strdup ("Lineart"); - _tmp203_ = g_strdup ("LineArt"); - _tmp204_ = SANE_I18N ("LineArt"); - _tmp205_ = g_strdup (_tmp204_); - _tmp206_ = g_strdup ("Black & White"); - _tmp207_ = SANE_I18N ("Black & White"); - _tmp208_ = g_strdup (_tmp207_); - _tmp209_ = g_strdup ("Binary"); - _tmp210_ = SANE_I18N ("Binary"); - _tmp211_ = g_strdup (_tmp210_); - _tmp212_ = g_strdup ("Thresholded"); - _tmp213_ = SANE_VALUE_SCAN_MODE_GRAY; - _tmp214_ = g_strdup (_tmp213_); - _tmp215_ = g_strdup ("Gray"); - _tmp216_ = g_strdup ("Grayscale"); - _tmp217_ = SANE_I18N ("Grayscale"); - _tmp218_ = g_strdup (_tmp217_); - _tmp219_ = g_strdup ("True Gray"); - _tmp220_ = g_new0 (gchar*, 14 + 1); - _tmp220_[0] = _tmp201_; - _tmp220_[1] = _tmp202_; - _tmp220_[2] = _tmp203_; - _tmp220_[3] = _tmp205_; - _tmp220_[4] = _tmp206_; - _tmp220_[5] = _tmp208_; - _tmp220_[6] = _tmp209_; - _tmp220_[7] = _tmp211_; - _tmp220_[8] = _tmp212_; - _tmp220_[9] = _tmp214_; - _tmp220_[10] = _tmp215_; - _tmp220_[11] = _tmp216_; - _tmp220_[12] = _tmp218_; - _tmp220_[13] = _tmp219_; - lineart_scan_modes = _tmp220_; - lineart_scan_modes_length1 = 14; - _lineart_scan_modes_size_ = lineart_scan_modes_length1; - _tmp221_ = job; - _tmp222_ = _tmp221_->scan_mode; - switch (_tmp222_) { - case SCAN_MODE_COLOR: - { - SANE_Handle _tmp223_; - SANE_Option_Descriptor* _tmp224_; - SANE_Int _tmp225_; - gchar** _tmp226_; - gint _tmp226__length1; - gboolean _tmp227_ = FALSE; - _tmp223_ = self->priv->handle; - _tmp224_ = option; - _tmp225_ = index; - _tmp226_ = color_scan_modes; - _tmp226__length1 = color_scan_modes_length1; - _tmp227_ = scanner_set_constrained_string_option (self, _tmp223_, _tmp224_, _tmp225_, _tmp226_, _tmp226__length1, NULL); - if (!_tmp227_) { - g_warning ("scanner.vala:998: Unable to set Color mode, please file a bug"); - } - break; - } - case SCAN_MODE_GRAY: - { - SANE_Handle _tmp228_; - SANE_Option_Descriptor* _tmp229_; - SANE_Int _tmp230_; - gchar** _tmp231_; - gint _tmp231__length1; - gboolean _tmp232_ = FALSE; - _tmp228_ = self->priv->handle; - _tmp229_ = option; - _tmp230_ = index; - _tmp231_ = gray_scan_modes; - _tmp231__length1 = gray_scan_modes_length1; - _tmp232_ = scanner_set_constrained_string_option (self, _tmp228_, _tmp229_, _tmp230_, _tmp231_, _tmp231__length1, NULL); - if (!_tmp232_) { - g_warning ("scanner.vala:1002: Unable to set Gray mode, please file a bug"); - } - break; - } - case SCAN_MODE_LINEART: - { - SANE_Handle _tmp233_; - SANE_Option_Descriptor* _tmp234_; - SANE_Int _tmp235_; - gchar** _tmp236_; - gint _tmp236__length1; - gboolean _tmp237_ = FALSE; - _tmp233_ = self->priv->handle; - _tmp234_ = option; - _tmp235_ = index; - _tmp236_ = lineart_scan_modes; - _tmp236__length1 = lineart_scan_modes_length1; - _tmp237_ = scanner_set_constrained_string_option (self, _tmp233_, _tmp234_, _tmp235_, _tmp236_, _tmp236__length1, NULL); - if (!_tmp237_) { - g_warning ("scanner.vala:1006: Unable to set Lineart mode, please file a bug"); - } - break; - } - default: - { - break; - } - } - lineart_scan_modes = (_vala_array_free (lineart_scan_modes, lineart_scan_modes_length1, (GDestroyNotify) g_free), NULL); - gray_scan_modes = (_vala_array_free (gray_scan_modes, gray_scan_modes_length1, (GDestroyNotify) g_free), NULL); - color_scan_modes = (_vala_array_free (color_scan_modes, color_scan_modes_length1, (GDestroyNotify) g_free), NULL); - } else { - SANE_Option_Descriptor* _tmp238_; - const gchar* _tmp239_; - _tmp238_ = option; - _tmp239_ = _tmp238_->name; - if (g_strcmp0 (_tmp239_, "compression") == 0) { - const gchar* _tmp240_ = NULL; - gchar* _tmp241_; - const gchar* _tmp242_ = NULL; - gchar* _tmp243_; - gchar* _tmp244_; - gchar* _tmp245_; - gchar** _tmp246_ = NULL; - gchar** disable_compression_names; - gint disable_compression_names_length1; - gint _disable_compression_names_size_; - SANE_Handle _tmp247_; - SANE_Option_Descriptor* _tmp248_; - SANE_Int _tmp249_; - gchar** _tmp250_; - gint _tmp250__length1; - gboolean _tmp251_ = FALSE; - _tmp240_ = SANE_I18N ("None"); - _tmp241_ = g_strdup (_tmp240_); - _tmp242_ = SANE_I18N ("none"); - _tmp243_ = g_strdup (_tmp242_); - _tmp244_ = g_strdup ("None"); - _tmp245_ = g_strdup ("none"); - _tmp246_ = g_new0 (gchar*, 4 + 1); - _tmp246_[0] = _tmp241_; - _tmp246_[1] = _tmp243_; - _tmp246_[2] = _tmp244_; - _tmp246_[3] = _tmp245_; - disable_compression_names = _tmp246_; - disable_compression_names_length1 = 4; - _disable_compression_names_size_ = disable_compression_names_length1; - _tmp247_ = self->priv->handle; - _tmp248_ = option; - _tmp249_ = index; - _tmp250_ = disable_compression_names; - _tmp250__length1 = disable_compression_names_length1; - _tmp251_ = scanner_set_constrained_string_option (self, _tmp247_, _tmp248_, _tmp249_, _tmp250_, _tmp250__length1, NULL); - if (!_tmp251_) { - g_warning ("scanner.vala:1024: Unable to disable compression, please file a bug"); - } - disable_compression_names = (_vala_array_free (disable_compression_names, disable_compression_names_length1, (GDestroyNotify) g_free), NULL); - } else { - SANE_Option_Descriptor* _tmp252_; - const gchar* _tmp253_; - const gchar* _tmp254_; - _tmp252_ = option; - _tmp253_ = _tmp252_->name; - _tmp254_ = SANE_NAME_SCAN_BR_X; - if (g_strcmp0 (_tmp253_, _tmp254_) == 0) { - SANE_Int _tmp255_; - _tmp255_ = index; - self->priv->br_x_option_index = _tmp255_; - } else { - SANE_Option_Descriptor* _tmp256_; - const gchar* _tmp257_; - const gchar* _tmp258_; - _tmp256_ = option; - _tmp257_ = _tmp256_->name; - _tmp258_ = SANE_NAME_SCAN_BR_Y; - if (g_strcmp0 (_tmp257_, _tmp258_) == 0) { - SANE_Int _tmp259_; - _tmp259_ = index; - self->priv->br_y_option_index = _tmp259_; - } else { - SANE_Option_Descriptor* _tmp260_; - const gchar* _tmp261_; - const gchar* _tmp262_; - _tmp260_ = option; - _tmp261_ = _tmp260_->name; - _tmp262_ = SANE_NAME_PAGE_WIDTH; - if (g_strcmp0 (_tmp261_, _tmp262_) == 0) { - ScanJob* _tmp263_; - gint _tmp264_; - _tmp263_ = job; - _tmp264_ = _tmp263_->page_width; - if (((gdouble) _tmp264_) > 0.0) { - SANE_Option_Descriptor* _tmp265_; - SANE_Value_Type _tmp266_; - _tmp265_ = option; - _tmp266_ = _tmp265_->type; - if (_tmp266_ == SANE_TYPE_FIXED) { - SANE_Handle _tmp267_; - SANE_Option_Descriptor* _tmp268_; - SANE_Int _tmp269_; - ScanJob* _tmp270_; - gint _tmp271_; - _tmp267_ = self->priv->handle; - _tmp268_ = option; - _tmp269_ = index; - _tmp270_ = job; - _tmp271_ = _tmp270_->page_width; - scanner_set_fixed_option (self, _tmp267_, _tmp268_, _tmp269_, _tmp271_ / 10.0, NULL); - } else { - SANE_Handle _tmp272_; - SANE_Option_Descriptor* _tmp273_; - SANE_Int _tmp274_; - ScanJob* _tmp275_; - gint _tmp276_; - _tmp272_ = self->priv->handle; - _tmp273_ = option; - _tmp274_ = index; - _tmp275_ = job; - _tmp276_ = _tmp275_->page_width; - scanner_set_int_option (self, _tmp272_, _tmp273_, _tmp274_, _tmp276_ / 10, NULL); - } - } - } else { - SANE_Option_Descriptor* _tmp277_; - const gchar* _tmp278_; - const gchar* _tmp279_; - _tmp277_ = option; - _tmp278_ = _tmp277_->name; - _tmp279_ = SANE_NAME_PAGE_HEIGHT; - if (g_strcmp0 (_tmp278_, _tmp279_) == 0) { - ScanJob* _tmp280_; - gint _tmp281_; - _tmp280_ = job; - _tmp281_ = _tmp280_->page_height; - if (((gdouble) _tmp281_) > 0.0) { - SANE_Option_Descriptor* _tmp282_; - SANE_Value_Type _tmp283_; - _tmp282_ = option; - _tmp283_ = _tmp282_->type; - if (_tmp283_ == SANE_TYPE_FIXED) { - SANE_Handle _tmp284_; - SANE_Option_Descriptor* _tmp285_; - SANE_Int _tmp286_; - ScanJob* _tmp287_; - gint _tmp288_; - _tmp284_ = self->priv->handle; - _tmp285_ = option; - _tmp286_ = index; - _tmp287_ = job; - _tmp288_ = _tmp287_->page_height; - scanner_set_fixed_option (self, _tmp284_, _tmp285_, _tmp286_, _tmp288_ / 10.0, NULL); - } else { - SANE_Handle _tmp289_; - SANE_Option_Descriptor* _tmp290_; - SANE_Int _tmp291_; - ScanJob* _tmp292_; - gint _tmp293_; - _tmp289_ = self->priv->handle; - _tmp290_ = option; - _tmp291_ = index; - _tmp292_ = job; - _tmp293_ = _tmp292_->page_height; - scanner_set_int_option (self, _tmp289_, _tmp290_, _tmp291_, _tmp293_ / 10, NULL); - } - } - } - } - } - } - } - } + break; + } + case SCAN_MODE_LINEART: + { + SANE_Handle _tmp137_; + SANE_Option_Descriptor* _tmp138_; + SANE_Int _tmp139_; + gchar** _tmp140_; + gint _tmp140__length1; + gboolean _tmp141_ = FALSE; + _tmp137_ = self->priv->handle; + _tmp138_ = option; + _tmp139_ = index; + _tmp140_ = lineart_scan_modes; + _tmp140__length1 = lineart_scan_modes_length1; + _tmp141_ = scanner_set_constrained_string_option (self, _tmp137_, _tmp138_, _tmp139_, _tmp140_, _tmp140__length1, NULL); + if (!_tmp141_) { + g_warning ("scanner.vala:941: Unable to set Lineart mode, please file a bug"); } + break; + } + default: + { + break; } } + lineart_scan_modes = (_vala_array_free (lineart_scan_modes, lineart_scan_modes_length1, (GDestroyNotify) g_free), NULL); + gray_scan_modes = (_vala_array_free (gray_scan_modes, gray_scan_modes_length1, (GDestroyNotify) g_free), NULL); + color_scan_modes = (_vala_array_free (color_scan_modes, color_scan_modes_length1, (GDestroyNotify) g_free), NULL); } - } - _tmp294_ = self->priv->current_device; - if (g_strcmp0 (_tmp294_, "test") == 0) { - SANE_Option_Descriptor* _tmp295_; - const gchar* _tmp296_; - _tmp295_ = option; - _tmp296_ = _tmp295_->name; - if (g_strcmp0 (_tmp296_, "hand-scanner") == 0) { - SANE_Handle _tmp297_; - SANE_Option_Descriptor* _tmp298_; - SANE_Int _tmp299_; - _tmp297_ = self->priv->handle; - _tmp298_ = option; - _tmp299_ = index; - scanner_set_bool_option (self, _tmp297_, _tmp298_, _tmp299_, FALSE, NULL); - } else { - SANE_Option_Descriptor* _tmp300_; - const gchar* _tmp301_; - _tmp300_ = option; - _tmp301_ = _tmp300_->name; - if (g_strcmp0 (_tmp301_, "three-pass") == 0) { - SANE_Handle _tmp302_; - SANE_Option_Descriptor* _tmp303_; - SANE_Int _tmp304_; - _tmp302_ = self->priv->handle; - _tmp303_ = option; - _tmp304_ = index; - scanner_set_bool_option (self, _tmp302_, _tmp303_, _tmp304_, FALSE, NULL); + _tmp142_ = self->priv->handle; + _tmp144_ = scanner_get_option_by_name (self, _tmp142_, "duplex", &_tmp143_); + index = (SANE_Int) _tmp143_; + option = _tmp144_; + _tmp145_ = option; + if (_tmp145_ != NULL) { + SANE_Option_Descriptor* _tmp146_; + SANE_Value_Type _tmp147_; + _tmp146_ = option; + _tmp147_ = _tmp146_->type; + if (_tmp147_ == SANE_TYPE_BOOL) { + SANE_Handle _tmp148_; + SANE_Option_Descriptor* _tmp149_; + SANE_Int _tmp150_; + ScanJob* _tmp151_; + ScanType _tmp152_; + _tmp148_ = self->priv->handle; + _tmp149_ = option; + _tmp150_ = index; + _tmp151_ = job; + _tmp152_ = _tmp151_->type; + scanner_set_bool_option (self, _tmp148_, _tmp149_, _tmp150_, _tmp152_ == SCAN_TYPE_ADF_BOTH, NULL); + } + } + _tmp153_ = self->priv->handle; + _tmp155_ = scanner_get_option_by_name (self, _tmp153_, "batch-scan", &_tmp154_); + index = (SANE_Int) _tmp154_; + option = _tmp155_; + _tmp156_ = option; + if (_tmp156_ != NULL) { + SANE_Option_Descriptor* _tmp157_; + SANE_Value_Type _tmp158_; + _tmp157_ = option; + _tmp158_ = _tmp157_->type; + if (_tmp158_ == SANE_TYPE_BOOL) { + SANE_Handle _tmp159_; + SANE_Option_Descriptor* _tmp160_; + SANE_Int _tmp161_; + ScanJob* _tmp162_; + ScanType _tmp163_; + _tmp159_ = self->priv->handle; + _tmp160_ = option; + _tmp161_ = index; + _tmp162_ = job; + _tmp163_ = _tmp162_->type; + scanner_set_bool_option (self, _tmp159_, _tmp160_, _tmp161_, _tmp163_ != SCAN_TYPE_SINGLE, NULL); + } + } + _tmp164_ = self->priv->handle; + _tmp166_ = scanner_get_option_by_name (self, _tmp164_, "compression", &_tmp165_); + index = (SANE_Int) _tmp165_; + option = _tmp166_; + _tmp167_ = option; + if (_tmp167_ != NULL) { + const gchar* _tmp168_ = NULL; + gchar* _tmp169_; + const gchar* _tmp170_ = NULL; + gchar* _tmp171_; + gchar* _tmp172_; + gchar* _tmp173_; + gchar** _tmp174_ = NULL; + gchar** disable_compression_names; + gint disable_compression_names_length1; + gint _disable_compression_names_size_; + SANE_Handle _tmp175_; + SANE_Option_Descriptor* _tmp176_; + SANE_Int _tmp177_; + gchar** _tmp178_; + gint _tmp178__length1; + gboolean _tmp179_ = FALSE; + _tmp168_ = SANE_I18N ("None"); + _tmp169_ = g_strdup (_tmp168_); + _tmp170_ = SANE_I18N ("none"); + _tmp171_ = g_strdup (_tmp170_); + _tmp172_ = g_strdup ("None"); + _tmp173_ = g_strdup ("none"); + _tmp174_ = g_new0 (gchar*, 4 + 1); + _tmp174_[0] = _tmp169_; + _tmp174_[1] = _tmp171_; + _tmp174_[2] = _tmp172_; + _tmp174_[3] = _tmp173_; + disable_compression_names = _tmp174_; + disable_compression_names_length1 = 4; + _disable_compression_names_size_ = disable_compression_names_length1; + _tmp175_ = self->priv->handle; + _tmp176_ = option; + _tmp177_ = index; + _tmp178_ = disable_compression_names; + _tmp178__length1 = disable_compression_names_length1; + _tmp179_ = scanner_set_constrained_string_option (self, _tmp175_, _tmp176_, _tmp177_, _tmp178_, _tmp178__length1, NULL); + if (!_tmp179_) { + g_warning ("scanner.vala:977: Unable to disable compression, please file a bug"); + } + disable_compression_names = (_vala_array_free (disable_compression_names, disable_compression_names_length1, (GDestroyNotify) g_free), NULL); + } + _tmp180_ = self->priv->handle; + _tmp181_ = SANE_NAME_SCAN_RESOLUTION; + _tmp183_ = scanner_get_option_by_name (self, _tmp180_, _tmp181_, &_tmp182_); + index = (SANE_Int) _tmp182_; + option = _tmp183_; + _tmp184_ = option; + if (_tmp184_ != NULL) { + SANE_Option_Descriptor* _tmp185_; + SANE_Value_Type _tmp186_; + SANE_Handle _tmp202_; + const gchar* _tmp203_; + gint _tmp204_ = 0; + SANE_Option_Descriptor* _tmp205_ = NULL; + SANE_Option_Descriptor* _tmp206_; + _tmp185_ = option; + _tmp186_ = _tmp185_->type; + if (_tmp186_ == SANE_TYPE_FIXED) { + SANE_Handle _tmp187_; + SANE_Option_Descriptor* _tmp188_; + SANE_Int _tmp189_; + ScanJob* _tmp190_; + gdouble _tmp191_; + ScanJob* _tmp192_; + gdouble _tmp193_ = 0.0; + _tmp187_ = self->priv->handle; + _tmp188_ = option; + _tmp189_ = index; + _tmp190_ = job; + _tmp191_ = _tmp190_->dpi; + _tmp192_ = job; + scanner_set_fixed_option (self, _tmp187_, _tmp188_, _tmp189_, _tmp191_, &_tmp193_); + _tmp192_->dpi = _tmp193_; } else { - SANE_Option_Descriptor* _tmp305_; - const gchar* _tmp306_; - _tmp305_ = option; - _tmp306_ = _tmp305_->name; - if (g_strcmp0 (_tmp306_, "test-picture") == 0) { - SANE_Handle _tmp307_; - SANE_Option_Descriptor* _tmp308_; - SANE_Int _tmp309_; - _tmp307_ = self->priv->handle; - _tmp308_ = option; - _tmp309_ = index; - scanner_set_string_option (self, _tmp307_, _tmp308_, _tmp309_, "Color pattern", NULL); + gint dpi = 0; + SANE_Handle _tmp194_; + SANE_Option_Descriptor* _tmp195_; + SANE_Int _tmp196_; + ScanJob* _tmp197_; + gdouble _tmp198_; + gint _tmp199_ = 0; + ScanJob* _tmp200_; + gint _tmp201_; + _tmp194_ = self->priv->handle; + _tmp195_ = option; + _tmp196_ = index; + _tmp197_ = job; + _tmp198_ = _tmp197_->dpi; + scanner_set_int_option (self, _tmp194_, _tmp195_, _tmp196_, (gint) _tmp198_, &_tmp199_); + dpi = _tmp199_; + _tmp200_ = job; + _tmp201_ = dpi; + _tmp200_->dpi = (gdouble) _tmp201_; + } + _tmp202_ = self->priv->handle; + _tmp203_ = SANE_NAME_BIT_DEPTH; + _tmp205_ = scanner_get_option_by_name (self, _tmp202_, _tmp203_, &_tmp204_); + index = (SANE_Int) _tmp204_; + option = _tmp205_; + _tmp206_ = option; + if (_tmp206_ != NULL) { + ScanJob* _tmp207_; + gint _tmp208_; + _tmp207_ = job; + _tmp208_ = _tmp207_->depth; + if (_tmp208_ > 0) { + SANE_Handle _tmp209_; + SANE_Option_Descriptor* _tmp210_; + SANE_Int _tmp211_; + ScanJob* _tmp212_; + gint _tmp213_; + _tmp209_ = self->priv->handle; + _tmp210_ = option; + _tmp211_ = index; + _tmp212_ = job; + _tmp213_ = _tmp212_->depth; + scanner_set_int_option (self, _tmp209_, _tmp210_, _tmp211_, _tmp213_, NULL); + } + } + } + _tmp214_ = self->priv->handle; + _tmp215_ = SANE_NAME_SCAN_BR_X; + _tmp217_ = scanner_get_option_by_name (self, _tmp214_, _tmp215_, &_tmp216_); + index = (SANE_Int) _tmp216_; + option = _tmp217_; + _tmp218_ = option; + if (_tmp218_ != NULL) { + SANE_Option_Descriptor* _tmp219_; + SANE_Constraint_Type _tmp220_; + _tmp219_ = option; + _tmp220_ = _tmp219_->constraint_type; + if (_tmp220_ == SANE_CONSTRAINT_RANGE) { + SANE_Option_Descriptor* _tmp221_; + SANE_Value_Type _tmp222_; + _tmp221_ = option; + _tmp222_ = _tmp221_->type; + if (_tmp222_ == SANE_TYPE_FIXED) { + SANE_Handle _tmp223_; + SANE_Option_Descriptor* _tmp224_; + SANE_Int _tmp225_; + SANE_Option_Descriptor* _tmp226_; + SANE_Range* _tmp227_; + SANE_Word _tmp228_; + gdouble _tmp229_ = 0.0; + _tmp223_ = self->priv->handle; + _tmp224_ = option; + _tmp225_ = index; + _tmp226_ = option; + _tmp227_ = _tmp226_->constraint.range; + _tmp228_ = _tmp227_->max; + _tmp229_ = SANE_UNFIX ((SANE_Fixed) _tmp228_); + scanner_set_fixed_option (self, _tmp223_, _tmp224_, _tmp225_, _tmp229_, NULL); } else { - SANE_Option_Descriptor* _tmp310_; - const gchar* _tmp311_; - _tmp310_ = option; - _tmp311_ = _tmp310_->name; - if (g_strcmp0 (_tmp311_, "read-delay") == 0) { - SANE_Handle _tmp312_; - SANE_Option_Descriptor* _tmp313_; - SANE_Int _tmp314_; - _tmp312_ = self->priv->handle; - _tmp313_ = option; - _tmp314_ = index; - scanner_set_bool_option (self, _tmp312_, _tmp313_, _tmp314_, TRUE, NULL); - } else { - SANE_Option_Descriptor* _tmp315_; - const gchar* _tmp316_; - _tmp315_ = option; - _tmp316_ = _tmp315_->name; - if (g_strcmp0 (_tmp316_, "read-delay-duration") == 0) { - SANE_Handle _tmp317_; - SANE_Option_Descriptor* _tmp318_; - SANE_Int _tmp319_; - _tmp317_ = self->priv->handle; - _tmp318_ = option; - _tmp319_ = index; - scanner_set_int_option (self, _tmp317_, _tmp318_, _tmp319_, 200000, NULL); - } - } + SANE_Handle _tmp230_; + SANE_Option_Descriptor* _tmp231_; + SANE_Int _tmp232_; + SANE_Option_Descriptor* _tmp233_; + SANE_Range* _tmp234_; + SANE_Word _tmp235_; + _tmp230_ = self->priv->handle; + _tmp231_ = option; + _tmp232_ = index; + _tmp233_ = option; + _tmp234_ = _tmp233_->constraint.range; + _tmp235_ = _tmp234_->max; + scanner_set_int_option (self, _tmp230_, _tmp231_, _tmp232_, (gint) _tmp235_, NULL); } } } + _tmp236_ = self->priv->handle; + _tmp237_ = SANE_NAME_SCAN_BR_Y; + _tmp239_ = scanner_get_option_by_name (self, _tmp236_, _tmp237_, &_tmp238_); + index = (SANE_Int) _tmp238_; + option = _tmp239_; + _tmp240_ = option; + if (_tmp240_ != NULL) { + SANE_Option_Descriptor* _tmp241_; + SANE_Constraint_Type _tmp242_; + _tmp241_ = option; + _tmp242_ = _tmp241_->constraint_type; + if (_tmp242_ == SANE_CONSTRAINT_RANGE) { + SANE_Option_Descriptor* _tmp243_; + SANE_Value_Type _tmp244_; + _tmp243_ = option; + _tmp244_ = _tmp243_->type; + if (_tmp244_ == SANE_TYPE_FIXED) { + SANE_Handle _tmp245_; + SANE_Option_Descriptor* _tmp246_; + SANE_Int _tmp247_; + SANE_Option_Descriptor* _tmp248_; + SANE_Range* _tmp249_; + SANE_Word _tmp250_; + gdouble _tmp251_ = 0.0; + _tmp245_ = self->priv->handle; + _tmp246_ = option; + _tmp247_ = index; + _tmp248_ = option; + _tmp249_ = _tmp248_->constraint.range; + _tmp250_ = _tmp249_->max; + _tmp251_ = SANE_UNFIX ((SANE_Fixed) _tmp250_); + scanner_set_fixed_option (self, _tmp245_, _tmp246_, _tmp247_, _tmp251_, NULL); + } else { + SANE_Handle _tmp252_; + SANE_Option_Descriptor* _tmp253_; + SANE_Int _tmp254_; + SANE_Option_Descriptor* _tmp255_; + SANE_Range* _tmp256_; + SANE_Word _tmp257_; + _tmp252_ = self->priv->handle; + _tmp253_ = option; + _tmp254_ = index; + _tmp255_ = option; + _tmp256_ = _tmp255_->constraint.range; + _tmp257_ = _tmp256_->max; + scanner_set_int_option (self, _tmp252_, _tmp253_, _tmp254_, (gint) _tmp257_, NULL); + } + } + } + _tmp258_ = self->priv->handle; + _tmp259_ = SANE_NAME_PAGE_WIDTH; + _tmp261_ = scanner_get_option_by_name (self, _tmp258_, _tmp259_, &_tmp260_); + index = (SANE_Int) _tmp260_; + option = _tmp261_; + _tmp262_ = option; + if (_tmp262_ != NULL) { + ScanJob* _tmp263_; + gint _tmp264_; + _tmp263_ = job; + _tmp264_ = _tmp263_->page_width; + if (((gdouble) _tmp264_) > 0.0) { + SANE_Option_Descriptor* _tmp265_; + SANE_Value_Type _tmp266_; + _tmp265_ = option; + _tmp266_ = _tmp265_->type; + if (_tmp266_ == SANE_TYPE_FIXED) { + SANE_Handle _tmp267_; + SANE_Option_Descriptor* _tmp268_; + SANE_Int _tmp269_; + ScanJob* _tmp270_; + gint _tmp271_; + _tmp267_ = self->priv->handle; + _tmp268_ = option; + _tmp269_ = index; + _tmp270_ = job; + _tmp271_ = _tmp270_->page_width; + scanner_set_fixed_option (self, _tmp267_, _tmp268_, _tmp269_, _tmp271_ / 10.0, NULL); + } else { + SANE_Handle _tmp272_; + SANE_Option_Descriptor* _tmp273_; + SANE_Int _tmp274_; + ScanJob* _tmp275_; + gint _tmp276_; + _tmp272_ = self->priv->handle; + _tmp273_ = option; + _tmp274_ = index; + _tmp275_ = job; + _tmp276_ = _tmp275_->page_width; + scanner_set_int_option (self, _tmp272_, _tmp273_, _tmp274_, _tmp276_ / 10, NULL); + } + } + } + _tmp277_ = self->priv->handle; + _tmp278_ = SANE_NAME_PAGE_HEIGHT; + _tmp280_ = scanner_get_option_by_name (self, _tmp277_, _tmp278_, &_tmp279_); + index = (SANE_Int) _tmp279_; + option = _tmp280_; + _tmp281_ = option; + if (_tmp281_ != NULL) { + ScanJob* _tmp282_; + gint _tmp283_; + _tmp282_ = job; + _tmp283_ = _tmp282_->page_height; + if (((gdouble) _tmp283_) > 0.0) { + SANE_Option_Descriptor* _tmp284_; + SANE_Value_Type _tmp285_; + _tmp284_ = option; + _tmp285_ = _tmp284_->type; + if (_tmp285_ == SANE_TYPE_FIXED) { + SANE_Handle _tmp286_; + SANE_Option_Descriptor* _tmp287_; + SANE_Int _tmp288_; + ScanJob* _tmp289_; + gint _tmp290_; + _tmp286_ = self->priv->handle; + _tmp287_ = option; + _tmp288_ = index; + _tmp289_ = job; + _tmp290_ = _tmp289_->page_height; + scanner_set_fixed_option (self, _tmp286_, _tmp287_, _tmp288_, _tmp290_ / 10.0, NULL); + } else { + SANE_Handle _tmp291_; + SANE_Option_Descriptor* _tmp292_; + SANE_Int _tmp293_; + ScanJob* _tmp294_; + gint _tmp295_; + _tmp291_ = self->priv->handle; + _tmp292_ = option; + _tmp293_ = index; + _tmp294_ = job; + _tmp295_ = _tmp294_->page_height; + scanner_set_int_option (self, _tmp291_, _tmp292_, _tmp293_, _tmp295_ / 10, NULL); + } + } + } + _tmp296_ = self->priv->current_device; + if (g_strcmp0 (_tmp296_, "test") == 0) { + SANE_Handle _tmp297_; + gint _tmp298_ = 0; + SANE_Option_Descriptor* _tmp299_ = NULL; + SANE_Option_Descriptor* _tmp300_; + SANE_Handle _tmp304_; + gint _tmp305_ = 0; + SANE_Option_Descriptor* _tmp306_ = NULL; + SANE_Option_Descriptor* _tmp307_; + SANE_Handle _tmp311_; + gint _tmp312_ = 0; + SANE_Option_Descriptor* _tmp313_ = NULL; + SANE_Option_Descriptor* _tmp314_; + SANE_Handle _tmp318_; + gint _tmp319_ = 0; + SANE_Option_Descriptor* _tmp320_ = NULL; + SANE_Option_Descriptor* _tmp321_; + SANE_Handle _tmp325_; + gint _tmp326_ = 0; + SANE_Option_Descriptor* _tmp327_ = NULL; + SANE_Option_Descriptor* _tmp328_; + _tmp297_ = self->priv->handle; + _tmp299_ = scanner_get_option_by_name (self, _tmp297_, "hand-scanner", &_tmp298_); + index = (SANE_Int) _tmp298_; + option = _tmp299_; + _tmp300_ = option; + if (_tmp300_ != NULL) { + SANE_Handle _tmp301_; + SANE_Option_Descriptor* _tmp302_; + SANE_Int _tmp303_; + _tmp301_ = self->priv->handle; + _tmp302_ = option; + _tmp303_ = index; + scanner_set_bool_option (self, _tmp301_, _tmp302_, _tmp303_, FALSE, NULL); + } + _tmp304_ = self->priv->handle; + _tmp306_ = scanner_get_option_by_name (self, _tmp304_, "three-pass", &_tmp305_); + index = (SANE_Int) _tmp305_; + option = _tmp306_; + _tmp307_ = option; + if (_tmp307_ != NULL) { + SANE_Handle _tmp308_; + SANE_Option_Descriptor* _tmp309_; + SANE_Int _tmp310_; + _tmp308_ = self->priv->handle; + _tmp309_ = option; + _tmp310_ = index; + scanner_set_bool_option (self, _tmp308_, _tmp309_, _tmp310_, FALSE, NULL); + } + _tmp311_ = self->priv->handle; + _tmp313_ = scanner_get_option_by_name (self, _tmp311_, "test-picture", &_tmp312_); + index = (SANE_Int) _tmp312_; + option = _tmp313_; + _tmp314_ = option; + if (_tmp314_ != NULL) { + SANE_Handle _tmp315_; + SANE_Option_Descriptor* _tmp316_; + SANE_Int _tmp317_; + _tmp315_ = self->priv->handle; + _tmp316_ = option; + _tmp317_ = index; + scanner_set_string_option (self, _tmp315_, _tmp316_, _tmp317_, "Color pattern", NULL); + } + _tmp318_ = self->priv->handle; + _tmp320_ = scanner_get_option_by_name (self, _tmp318_, "read-delay", &_tmp319_); + index = (SANE_Int) _tmp319_; + option = _tmp320_; + _tmp321_ = option; + if (_tmp321_ != NULL) { + SANE_Handle _tmp322_; + SANE_Option_Descriptor* _tmp323_; + SANE_Int _tmp324_; + _tmp322_ = self->priv->handle; + _tmp323_ = option; + _tmp324_ = index; + scanner_set_bool_option (self, _tmp322_, _tmp323_, _tmp324_, TRUE, NULL); + } + _tmp325_ = self->priv->handle; + _tmp327_ = scanner_get_option_by_name (self, _tmp325_, "read-delay-duration", &_tmp326_); + index = (SANE_Int) _tmp326_; + option = _tmp327_; + _tmp328_ = option; + if (_tmp328_ != NULL) { + SANE_Handle _tmp329_; + SANE_Option_Descriptor* _tmp330_; + SANE_Int _tmp331_; + _tmp329_ = self->priv->handle; + _tmp330_ = option; + _tmp331_ = index; + scanner_set_int_option (self, _tmp329_, _tmp330_, _tmp331_, 200000, NULL); + } + } + self->priv->state = SCAN_STATE_START; + _scan_job_unref0 (job); + return; + } + _tmp332_ = index; + _tmp333_ = option; + scanner_log_option (self, _tmp332_, _tmp333_); + _tmp334_ = option; + _tmp335_ = _tmp334_->type; + if (_tmp335_ == SANE_TYPE_GROUP) { + _scan_job_unref0 (job); + return; } + _tmp336_ = option; + _tmp337_ = _tmp336_->cap; + if ((_tmp337_ & SANE_CAP_INACTIVE) != ((SANE_Int) 0)) { + _scan_job_unref0 (job); + return; + } + _tmp338_ = option; + _tmp339_ = _tmp338_->name; + if (_tmp339_ == NULL) { + _scan_job_unref0 (job); + return; + } + _tmp340_ = self->priv->options; + _tmp341_ = option; + _tmp342_ = _tmp341_->name; + _tmp343_ = g_strdup (_tmp342_); + _tmp344_ = index; + g_hash_table_insert (_tmp340_, _tmp343_, GINT_TO_POINTER ((gint) _tmp344_)); _scan_job_unref0 (job); } +static SANE_Option_Descriptor* scanner_get_option_by_name (Scanner* self, SANE_Handle handle, const gchar* name, gint* index) { + gint _vala_index = 0; + SANE_Option_Descriptor* result = NULL; + GHashTable* _tmp0_; + const gchar* _tmp1_; + gconstpointer _tmp2_ = NULL; + gint _tmp3_; + SANE_Handle _tmp4_; + gint _tmp5_; + SANE_Option_Descriptor* _tmp6_ = NULL; + g_return_val_if_fail (self != NULL, NULL); + g_return_val_if_fail (name != NULL, NULL); + _tmp0_ = self->priv->options; + _tmp1_ = name; + _tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_); + _vala_index = GPOINTER_TO_INT (_tmp2_); + _tmp3_ = _vala_index; + if (_tmp3_ == 0) { + result = NULL; + if (index) { + *index = _vala_index; + } + return result; + } + _tmp4_ = handle; + _tmp5_ = _vala_index; + _tmp6_ = sane_get_option_descriptor (_tmp4_, (SANE_Int) _tmp5_); + result = _tmp6_; + if (index) { + *index = _vala_index; + } + return result; +} + + static void scanner_do_complete_document (Scanner* self) { GList* _tmp0_; GList* _tmp1_; @@ -6648,7 +6741,7 @@ static void scanner_do_start (Scanner* self) { _tmp6_ = status; _tmp7_ = sane_status_to_string (_tmp6_); _tmp8_ = _tmp7_; - g_debug ("scanner.vala:1094: sane_start (page=%d, pass=%d) -> %s", _tmp4_, _tmp5_, _tmp8_); + g_debug ("scanner.vala:1124: sane_start (page=%d, pass=%d) -> %s", _tmp4_, _tmp5_, _tmp8_); _g_free0 (_tmp8_); _tmp9_ = status; if (_tmp9_ == SANE_STATUS_GOOD) { @@ -6665,7 +6758,7 @@ static void scanner_do_start (Scanner* self) { const gchar* _tmp14_ = NULL; _tmp11_ = status; _tmp12_ = sane_strstatus (_tmp11_); - g_warning ("scanner.vala:1101: Unable to start device: %s", _tmp12_); + g_warning ("scanner.vala:1131: Unable to start device: %s", _tmp12_); _tmp13_ = status; _tmp14_ = _ ("Unable to start scan"); scanner_fail_scan (self, (gint) _tmp13_, _tmp14_); @@ -6801,7 +6894,7 @@ static void scanner_do_get_parameters (Scanner* self) { _tmp3_ = status; _tmp4_ = sane_status_to_string (_tmp3_); _tmp5_ = _tmp4_; - g_debug ("scanner.vala:1111: sane_get_parameters () -> %s", _tmp5_); + g_debug ("scanner.vala:1141: sane_get_parameters () -> %s", _tmp5_); _g_free0 (_tmp5_); _tmp6_ = status; if (_tmp6_ != SANE_STATUS_GOOD) { @@ -6811,7 +6904,7 @@ static void scanner_do_get_parameters (Scanner* self) { const gchar* _tmp10_ = NULL; _tmp7_ = status; _tmp8_ = sane_strstatus (_tmp7_); - g_warning ("scanner.vala:1114: Unable to get device parameters: %s", _tmp8_); + g_warning ("scanner.vala:1144: Unable to get device parameters: %s", _tmp8_); _tmp9_ = status; _tmp10_ = _ ("Error communicating with scanner"); scanner_fail_scan (self, (gint) _tmp9_, _tmp10_); @@ -6841,7 +6934,7 @@ static void scanner_do_get_parameters (Scanner* self) { _tmp27_ = _tmp26_.lines; _tmp28_ = self->priv->parameters; _tmp29_ = _tmp28_.depth; - g_debug ("scanner.vala:1123: Parameters: format=%s last_frame=%s bytes_per_line=" \ + g_debug ("scanner.vala:1153: Parameters: format=%s last_frame=%s bytes_per_line=" \ "%d pixels_per_line=%d lines=%d depth=%d", _tmp20_, _tmp21_, _tmp23_, _tmp25_, _tmp27_, _tmp29_); _g_free0 (_tmp20_); _tmp30_ = scan_page_info_new (); @@ -7001,7 +7094,7 @@ static void scanner_do_complete_page (Scanner* self) { } _tmp13_ = self->priv->handle; sane_cancel (_tmp13_); - g_debug ("scanner.vala:1183: sane_cancel ()"); + g_debug ("scanner.vala:1213: sane_cancel ()"); scanner_do_complete_document (self); _scan_job_unref0 (job); } @@ -7067,7 +7160,7 @@ static void scanner_do_read (Scanner* self) { _tmp14_ = sane_status_to_string (_tmp13_); _tmp15_ = _tmp14_; _tmp16_ = n_read; - g_debug ("scanner.vala:1198: sane_read (%d) -> (%s, %d)", _tmp12_, _tmp15_, (gint) _tmp16_); + g_debug ("scanner.vala:1228: sane_read (%d) -> (%s, %d)", _tmp12_, _tmp15_, (gint) _tmp16_); _g_free0 (_tmp15_); _tmp17_ = status; if (_tmp17_ == SANE_STATUS_EOF) { @@ -7097,13 +7190,13 @@ static void scanner_do_read (Scanner* self) { _tmp25_ = self->priv->line_count; _tmp26_ = self->priv->parameters; _tmp27_ = _tmp26_.lines; - g_warning ("scanner.vala:1204: Scan completed with %d lines, expected %d lines", _tmp25_, _tmp27_); + g_warning ("scanner.vala:1234: Scan completed with %d lines, expected %d lines", _tmp25_, _tmp27_); } _tmp28_ = self->priv->n_used; if (_tmp28_ > 0) { gint _tmp29_; _tmp29_ = self->priv->n_used; - g_warning ("scanner.vala:1206: Scan complete with %d bytes of unused data", _tmp29_); + g_warning ("scanner.vala:1236: Scan complete with %d bytes of unused data", _tmp29_); } scanner_do_complete_page (self); _scan_job_unref0 (job); @@ -7117,7 +7210,7 @@ static void scanner_do_read (Scanner* self) { const gchar* _tmp34_ = NULL; _tmp31_ = status; _tmp32_ = sane_strstatus (_tmp31_); - g_warning ("scanner.vala:1214: Unable to read frame from device: %s", _tmp32_); + g_warning ("scanner.vala:1244: Unable to read frame from device: %s", _tmp32_); _tmp33_ = status; _tmp34_ = _ ("Error communicating with scanner"); scanner_fail_scan (self, (gint) _tmp33_, _tmp34_); @@ -7589,7 +7682,7 @@ static void* scanner_scan_thread (Scanner* self) { _tmp2_ = status; _tmp3_ = sane_status_to_string (_tmp2_); _tmp4_ = _tmp3_; - g_debug ("scanner.vala:1331: sane_init () -> %s", _tmp4_); + g_debug ("scanner.vala:1361: sane_init () -> %s", _tmp4_); _g_free0 (_tmp4_); _tmp5_ = status; if (_tmp5_ != SANE_STATUS_GOOD) { @@ -7597,7 +7690,7 @@ static void* scanner_scan_thread (Scanner* self) { const gchar* _tmp7_ = NULL; _tmp6_ = status; _tmp7_ = sane_strstatus (_tmp6_); - g_warning ("scanner.vala:1334: Unable to initialize SANE backend: %s", _tmp7_); + g_warning ("scanner.vala:1364: Unable to initialize SANE backend: %s", _tmp7_); result = NULL; return result; } @@ -7607,7 +7700,7 @@ static void* scanner_scan_thread (Scanner* self) { _tmp11_ = SANE_VERSION_MINOR (_tmp10_); _tmp12_ = version_code; _tmp13_ = SANE_VERSION_BUILD (_tmp12_); - g_debug ("scanner.vala:1337: SANE version %d.%d.%d", _tmp9_, _tmp11_, _tmp13_); + g_debug ("scanner.vala:1367: SANE version %d.%d.%d", _tmp9_, _tmp11_, _tmp13_); scanner_redetect (self); while (TRUE) { gboolean _tmp14_ = FALSE; @@ -7697,7 +7790,7 @@ void scanner_start (Scanner* self) { _inner_error_ = NULL; _tmp2_ = e; _tmp3_ = _tmp2_->message; - g_critical ("scanner.vala:1388: Unable to create thread: %s", _tmp3_); + g_critical ("scanner.vala:1418: Unable to create thread: %s", _tmp3_); _g_error_free0 (e); } __finally14: @@ -7719,7 +7812,7 @@ void scanner_redetect (Scanner* self) { return; } self->priv->need_redetect = TRUE; - g_debug ("scanner.vala:1398: Requesting redetection of scan devices"); + g_debug ("scanner.vala:1428: Requesting redetection of scan devices"); _tmp1_ = self->priv->request_queue; _tmp2_ = request_redetect_new (); g_async_queue_push (_tmp1_, (Request*) _tmp2_); @@ -7903,7 +7996,7 @@ void scanner_scan (Scanner* self, const gchar* device, ScanOptions* options) { _tmp17_ = _tmp16_->paper_width; _tmp18_ = options; _tmp19_ = _tmp18_->paper_height; - g_debug ("scanner.vala:1444: Scanner.scan (\"%s\", dpi=%d, scan_mode=%s, depth=%" \ + g_debug ("scanner.vala:1474: Scanner.scan (\"%s\", dpi=%d, scan_mode=%s, depth=%" \ "d, type=%s, paper_width=%d, paper_height=%d)", _tmp3_, _tmp5_, _tmp9_, _tmp11_, _tmp15_, _tmp17_, _tmp19_); _g_free0 (_tmp15_); _g_free0 (_tmp9_); @@ -7963,7 +8056,7 @@ void scanner_free (Scanner* self) { RequestQuit* _tmp1_; GThread* _tmp2_; g_return_if_fail (self != NULL); - g_debug ("scanner.vala:1466: Stopping scan thread"); + g_debug ("scanner.vala:1496: Stopping scan thread"); _tmp0_ = self->priv->request_queue; _tmp1_ = request_quit_new (); g_async_queue_push (_tmp0_, (Request*) _tmp1_); @@ -7974,7 +8067,7 @@ void scanner_free (Scanner* self) { g_thread_join (_tmp3_); } sane_exit (); - g_debug ("scanner.vala:1474: sane_exit ()"); + g_debug ("scanner.vala:1504: sane_exit ()"); } @@ -8179,6 +8272,7 @@ static void scanner_finalize (Scanner* obj) { _g_free0 (self->priv->default_device); __g_list_free__scan_job_unref0_0 (self->priv->job_queue); _g_free0 (self->priv->current_device); + _g_hash_table_unref0 (self->priv->options); self->priv->buffer = (g_free (self->priv->buffer), NULL); } diff --git a/src/scanner.vala b/src/scanner.vala index 8a8c6f6..158fa50 100644 --- a/src/scanner.vala +++ b/src/scanner.vala @@ -221,9 +221,8 @@ public class Scanner /* Last option read */ private Sane.Int option_index; - /* Option index for scan area */ - private Sane.Int br_x_option_index; - private Sane.Int br_y_option_index; + /* Table of options */ + private HashTable options; /* Buffer for received line */ private uchar[] buffer; @@ -701,6 +700,7 @@ public class Scanner Sane.close (handle); debug ("sane_close ()"); have_handle = false; + options = null; } buffer = null; @@ -762,8 +762,6 @@ public class Scanner page_number = 0; notified_page = -1; option_index = 0; - br_x_option_index = 0; - br_y_option_index = 0; if (job.device == null && default_device != null) job.device = default_device; @@ -794,6 +792,7 @@ public class Scanner current_device = null; have_handle = false; + options = new HashTable (str_hash, str_equal); var status = Sane.open (job.device, out handle); debug ("sane_open (\"%s\") -> %s", job.device, Sane.status_to_string (status)); @@ -820,34 +819,251 @@ public class Scanner var index = option_index; option_index++; + /* Options complete, apply settings */ if (option == null) { + /* Pick source */ + option = get_option_by_name (handle, Sane.NAME_SCAN_SOURCE, out index); + if (option != null) + { + string[] flatbed_sources = + { + "Auto", + Sane.I18N ("Auto"), + "Flatbed", + Sane.I18N ("Flatbed"), + "FlatBed", + "Normal", + Sane.I18N ("Normal") + }; + + string[] adf_sources = + { + "Automatic Document Feeder", + Sane.I18N ("Automatic Document Feeder"), + "ADF", + "Automatic Document Feeder(left aligned)", /* Seen in the proprietary brother3 driver */ + "Automatic Document Feeder(centrally aligned)" /* Seen in the proprietary brother3 driver */ + }; + + string[] adf_front_sources = + { + "ADF Front", + Sane.I18N ("ADF Front") + }; + + string[] adf_back_sources = + { + "ADF Back", + Sane.I18N ("ADF Back") + }; + + string[] adf_duplex_sources = + { + "ADF Duplex", + Sane.I18N ("ADF Duplex") + }; + + switch (job.type) + { + case ScanType.SINGLE: + if (!set_default_option (handle, option, index)) + if (!set_constrained_string_option (handle, option, index, flatbed_sources, null)) + warning ("Unable to set single page source, please file a bug"); + break; + case ScanType.ADF_FRONT: + if (!set_constrained_string_option (handle, option, index, adf_front_sources, null)) + if (!!set_constrained_string_option (handle, option, index, adf_sources, null)) + warning ("Unable to set front ADF source, please file a bug"); + break; + case ScanType.ADF_BACK: + if (!set_constrained_string_option (handle, option, index, adf_back_sources, null)) + if (!set_constrained_string_option (handle, option, index, adf_sources, null)) + warning ("Unable to set back ADF source, please file a bug"); + break; + case ScanType.ADF_BOTH: + if (!set_constrained_string_option (handle, option, index, adf_duplex_sources, null)) + if (!set_constrained_string_option (handle, option, index, adf_sources, null)) + warning ("Unable to set duplex ADF source, please file a bug"); + break; + } + } + + /* Scan mode (before resolution as it tends to affect that */ + option = get_option_by_name (handle, Sane.NAME_SCAN_MODE, out index); + if (option != null) + { + /* The names of scan modes often used in drivers, as taken from the sane-backends source */ + string[] color_scan_modes = + { + Sane.VALUE_SCAN_MODE_COLOR, + "Color", + "24bit Color" /* Seen in the proprietary brother3 driver */ + }; + string[] gray_scan_modes = + { + Sane.VALUE_SCAN_MODE_GRAY, + "Gray", + "Grayscale", + Sane.I18N ("Grayscale"), + "True Gray" /* Seen in the proprietary brother3 driver */ + }; + string[] lineart_scan_modes = + { + Sane.VALUE_SCAN_MODE_LINEART, + "Lineart", + "LineArt", + Sane.I18N ("LineArt"), + "Black & White", + Sane.I18N ("Black & White"), + "Binary", + Sane.I18N ("Binary"), + "Thresholded", + Sane.VALUE_SCAN_MODE_GRAY, + "Gray", + "Grayscale", + Sane.I18N ("Grayscale"), + "True Gray" /* Seen in the proprietary brother3 driver */ + }; + + switch (job.scan_mode) + { + case ScanMode.COLOR: + if (!set_constrained_string_option (handle, option, index, color_scan_modes, null)) + warning ("Unable to set Color mode, please file a bug"); + break; + case ScanMode.GRAY: + if (!set_constrained_string_option (handle, option, index, gray_scan_modes, null)) + warning ("Unable to set Gray mode, please file a bug"); + break; + case ScanMode.LINEART: + if (!set_constrained_string_option (handle, option, index, lineart_scan_modes, null)) + warning ("Unable to set Lineart mode, please file a bug"); + break; + default: + break; + } + } + + /* Duplex */ + option = get_option_by_name (handle, "duplex", out index); + if (option != null) + { + if (option.type == Sane.ValueType.BOOL) + set_bool_option (handle, option, index, job.type == ScanType.ADF_BOTH, null); + } + + /* Multi-page options */ + option = get_option_by_name (handle, "batch-scan", out index); + if (option != null) + { + if (option.type == Sane.ValueType.BOOL) + set_bool_option (handle, option, index, job.type != ScanType.SINGLE, null); + } + + /* Disable compression, we will compress after scanning */ + option = get_option_by_name (handle, "compression", out index); + if (option != null) + { + string[] disable_compression_names = + { + Sane.I18N ("None"), + Sane.I18N ("none"), + "None", + "none" + }; + + if (!set_constrained_string_option (handle, option, index, disable_compression_names, null)) + warning ("Unable to disable compression, please file a bug"); + } + + /* Set resolution and bit depth */ + option = get_option_by_name (handle, Sane.NAME_SCAN_RESOLUTION, out index); + if (option != null) + { + if (option.type == Sane.ValueType.FIXED) + set_fixed_option (handle, option, index, job.dpi, out job.dpi); + else + { + int dpi; + set_int_option (handle, option, index, (int) job.dpi, out dpi); + job.dpi = dpi; + } + option = get_option_by_name (handle, Sane.NAME_BIT_DEPTH, out index); + if (option != null) + { + if (job.depth > 0) + set_int_option (handle, option, index, job.depth, null); + } + } + /* Always use maximum scan area - some scanners default to using partial areas. This should be patched in sane-backends */ - if (br_x_option_index != 0) + option = get_option_by_name (handle, Sane.NAME_SCAN_BR_X, out index); + if (option != null) { - option = Sane.get_option_descriptor (handle, br_x_option_index); - debug ("sane_get_option_descriptor (%d)", (int) br_x_option_index); if (option.constraint_type == Sane.ConstraintType.RANGE) { if (option.type == Sane.ValueType.FIXED) - set_fixed_option (handle, option, br_x_option_index, Sane.UNFIX (option.range.max), null); + set_fixed_option (handle, option, index, Sane.UNFIX (option.range.max), null); else - set_int_option (handle, option, br_x_option_index, (int) option.range.max, null); + set_int_option (handle, option, index, (int) option.range.max, null); } } - if (br_y_option_index != 0) + option = get_option_by_name (handle, Sane.NAME_SCAN_BR_Y, out index); + if (option != null) { - option = Sane.get_option_descriptor (handle, br_y_option_index); - debug ("sane_get_option_descriptor (%d)", (int) br_y_option_index); if (option.constraint_type == Sane.ConstraintType.RANGE) { if (option.type == Sane.ValueType.FIXED) - set_fixed_option (handle, option, br_y_option_index, Sane.UNFIX (option.range.max), null); + set_fixed_option (handle, option, index, Sane.UNFIX (option.range.max), null); + else + set_int_option (handle, option, index, (int) option.range.max, null); + } + } + + option = get_option_by_name (handle, Sane.NAME_PAGE_WIDTH, out index); + if (option != null) + { + if (job.page_width > 0.0) + { + if (option.type == Sane.ValueType.FIXED) + set_fixed_option (handle, option, index, job.page_width / 10.0, null); + else + set_int_option (handle, option, index, job.page_width / 10, null); + } + } + option = get_option_by_name (handle, Sane.NAME_PAGE_HEIGHT, out index); + if (option != null) + { + if (job.page_height > 0.0) + { + if (option.type == Sane.ValueType.FIXED) + set_fixed_option (handle, option, index, job.page_height / 10.0, null); else - set_int_option (handle, option, br_y_option_index, (int) option.range.max, null); + set_int_option (handle, option, index, job.page_height / 10, null); } } + /* Test scanner options (hoping will not effect other scanners...) */ + if (current_device == "test") + { + option = get_option_by_name (handle, "hand-scanner", out index); + if (option != null) + set_bool_option (handle, option, index, false, null); + option = get_option_by_name (handle, "three-pass", out index); + if (option != null) + set_bool_option (handle, option, index, false, null); + option = get_option_by_name (handle, "test-picture", out index); + if (option != null) + set_string_option (handle, option, index, "Color pattern", null); + option = get_option_by_name (handle, "read-delay", out index); + if (option != null) + set_bool_option (handle, option, index, true, null); + option = get_option_by_name (handle, "read-delay-duration", out index); + if (option != null) + set_int_option (handle, option, index, 200000, null); + } + state = ScanState.START; return; } @@ -866,202 +1082,16 @@ public class Scanner if (option.name == null) return; - if (option.name == Sane.NAME_SCAN_RESOLUTION) - { - if (option.type == Sane.ValueType.FIXED) - set_fixed_option (handle, option, index, job.dpi, out job.dpi); - else - { - int dpi; - set_int_option (handle, option, index, (int) job.dpi, out dpi); - job.dpi = dpi; - } - } - else if (option.name == Sane.NAME_SCAN_SOURCE) - { - string[] flatbed_sources = - { - "Auto", - Sane.I18N ("Auto"), - "Flatbed", - Sane.I18N ("Flatbed"), - "FlatBed", - "Normal", - Sane.I18N ("Normal") - }; - - string[] adf_sources = - { - "Automatic Document Feeder", - Sane.I18N ("Automatic Document Feeder"), - "ADF", - "Automatic Document Feeder(left aligned)", /* Seen in the proprietary brother3 driver */ - "Automatic Document Feeder(centrally aligned)" /* Seen in the proprietary brother3 driver */ - }; - - string[] adf_front_sources = - { - "ADF Front", - Sane.I18N ("ADF Front") - }; - - string[] adf_back_sources = - { - "ADF Back", - Sane.I18N ("ADF Back") - }; - - string[] adf_duplex_sources = - { - "ADF Duplex", - Sane.I18N ("ADF Duplex") - }; + options.insert (option.name, (int) index); + } - switch (job.type) - { - case ScanType.SINGLE: - if (!set_default_option (handle, option, index)) - if (!set_constrained_string_option (handle, option, index, flatbed_sources, null)) - warning ("Unable to set single page source, please file a bug"); - break; - case ScanType.ADF_FRONT: - if (!set_constrained_string_option (handle, option, index, adf_front_sources, null)) - if (!!set_constrained_string_option (handle, option, index, adf_sources, null)) - warning ("Unable to set front ADF source, please file a bug"); - break; - case ScanType.ADF_BACK: - if (!set_constrained_string_option (handle, option, index, adf_back_sources, null)) - if (!set_constrained_string_option (handle, option, index, adf_sources, null)) - warning ("Unable to set back ADF source, please file a bug"); - break; - case ScanType.ADF_BOTH: - if (!set_constrained_string_option (handle, option, index, adf_duplex_sources, null)) - if (!set_constrained_string_option (handle, option, index, adf_sources, null)) - warning ("Unable to set duplex ADF source, please file a bug"); - break; - } - } - else if (option.name == "duplex") - { - if (option.type == Sane.ValueType.BOOL) - set_bool_option (handle, option, index, job.type == ScanType.ADF_BOTH, null); - } - else if (option.name == "batch-scan") - { - if (option.type == Sane.ValueType.BOOL) - set_bool_option (handle, option, index, job.type != ScanType.SINGLE, null); - } - else if (option.name == Sane.NAME_BIT_DEPTH) - { - if (job.depth > 0) - set_int_option (handle, option, index, job.depth, null); - } - else if (option.name == Sane.NAME_SCAN_MODE) - { - /* The names of scan modes often used in drivers, as taken from the sane-backends source */ - string[] color_scan_modes = - { - Sane.VALUE_SCAN_MODE_COLOR, - "Color", - "24bit Color" /* Seen in the proprietary brother3 driver */ - }; - string[] gray_scan_modes = - { - Sane.VALUE_SCAN_MODE_GRAY, - "Gray", - "Grayscale", - Sane.I18N ("Grayscale"), - "True Gray" /* Seen in the proprietary brother3 driver */ - }; - string[] lineart_scan_modes = - { - Sane.VALUE_SCAN_MODE_LINEART, - "Lineart", - "LineArt", - Sane.I18N ("LineArt"), - "Black & White", - Sane.I18N ("Black & White"), - "Binary", - Sane.I18N ("Binary"), - "Thresholded", - Sane.VALUE_SCAN_MODE_GRAY, - "Gray", - "Grayscale", - Sane.I18N ("Grayscale"), - "True Gray" /* Seen in the proprietary brother3 driver */ - }; - - switch (job.scan_mode) - { - case ScanMode.COLOR: - if (!set_constrained_string_option (handle, option, index, color_scan_modes, null)) - warning ("Unable to set Color mode, please file a bug"); - break; - case ScanMode.GRAY: - if (!set_constrained_string_option (handle, option, index, gray_scan_modes, null)) - warning ("Unable to set Gray mode, please file a bug"); - break; - case ScanMode.LINEART: - if (!set_constrained_string_option (handle, option, index, lineart_scan_modes, null)) - warning ("Unable to set Lineart mode, please file a bug"); - break; - default: - break; - } - } - /* Disable compression, we will compress after scanning */ - else if (option.name == "compression") - { - string[] disable_compression_names = - { - Sane.I18N ("None"), - Sane.I18N ("none"), - "None", - "none" - }; - - if (!set_constrained_string_option (handle, option, index, disable_compression_names, null)) - warning ("Unable to disable compression, please file a bug"); - } - else if (option.name == Sane.NAME_SCAN_BR_X) - br_x_option_index = index; - else if (option.name == Sane.NAME_SCAN_BR_Y) - br_y_option_index = index; - else if (option.name == Sane.NAME_PAGE_WIDTH) - { - if (job.page_width > 0.0) - { - if (option.type == Sane.ValueType.FIXED) - set_fixed_option (handle, option, index, job.page_width / 10.0, null); - else - set_int_option (handle, option, index, job.page_width / 10, null); - } - } - else if (option.name == Sane.NAME_PAGE_HEIGHT) - { - if (job.page_height > 0.0) - { - if (option.type == Sane.ValueType.FIXED) - set_fixed_option (handle, option, index, job.page_height / 10.0, null); - else - set_int_option (handle, option, index, job.page_height / 10, null); - } - } + private Sane.OptionDescriptor? get_option_by_name (Sane.Handle handle, string name, out int index) + { + index = options.lookup (name); + if (index == 0) + return null; - /* Test scanner options (hoping will not effect other scanners...) */ - if (current_device == "test") - { - if (option.name == "hand-scanner") - set_bool_option (handle, option, index, false, null); - else if (option.name == "three-pass") - set_bool_option (handle, option, index, false, null); - else if (option.name == "test-picture") - set_string_option (handle, option, index, "Color pattern", null); - else if (option.name == "read-delay") - set_bool_option (handle, option, index, true, null); - else if (option.name == "read-delay-duration") - set_int_option (handle, option, index, 200000, null); - } + return Sane.get_option_descriptor (handle, index); } private void do_complete_document () diff --git a/src/simple-scan.c b/src/simple-scan.c index d76395e..fb8b8f5 100644 --- a/src/simple-scan.c +++ b/src/simple-scan.c @@ -1,4 +1,4 @@ -/* simple-scan.c generated by valac 0.15.2, the Vala compiler +/* simple-scan.c generated by valac 0.16.0, the Vala compiler * generated from simple-scan.vala, do not modify */ /* diff --git a/src/ui.c b/src/ui.c index 10ae780..fd42d4e 100644 --- a/src/ui.c +++ b/src/ui.c @@ -1,4 +1,4 @@ -/* ui.c generated by valac 0.15.2, the Vala compiler +/* ui.c generated by valac 0.16.0, the Vala compiler * generated from ui.vala, do not modify */ /* @@ -3174,7 +3174,7 @@ void G_MODULE_EXPORT help_contents_menuitem_activate_cb (GtkWidget* widget, Simp _tmp0_ = self->priv->window; _tmp1_ = gtk_window_get_screen (_tmp0_); _tmp2_ = gtk_get_current_event_time (); - gtk_show_uri (_tmp1_, "ghelp:simple-scan", _tmp2_, &_inner_error_); + gtk_show_uri (_tmp1_, "help:simple-scan", _tmp2_, &_inner_error_); if (_inner_error_ != NULL) { goto __catch20_g_error; } diff --git a/src/ui.vala b/src/ui.vala index f8521d0..3056061 100644 --- a/src/ui.vala +++ b/src/ui.vala @@ -1051,7 +1051,7 @@ public class SimpleScan { try { - Gtk.show_uri (window.get_screen (), "ghelp:simple-scan", Gtk.get_current_event_time ()); + Gtk.show_uri (window.get_screen (), "help:simple-scan", Gtk.get_current_event_time ()); } catch (Error e) { -- cgit v1.2.3