diff options
-rw-r--r-- | NEWS | 11 | ||||
-rw-r--r-- | aclocal.m4 | 21 | ||||
-rwxr-xr-x | configure | 353 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | po/af.po | 4 | ||||
-rw-r--r-- | po/ar.po | 4 | ||||
-rw-r--r-- | po/ast.po | 4 | ||||
-rw-r--r-- | po/bg.po | 161 | ||||
-rw-r--r-- | po/ca.po | 4 | ||||
-rw-r--r-- | po/cs.po | 40 | ||||
-rw-r--r-- | po/da.po | 4 | ||||
-rw-r--r-- | po/de.po | 10 | ||||
-rw-r--r-- | po/el.po | 4 | ||||
-rw-r--r-- | po/en_GB.po | 4 | ||||
-rw-r--r-- | po/es.po | 5 | ||||
-rw-r--r-- | po/eu.po | 4 | ||||
-rw-r--r-- | po/fi.po | 15 | ||||
-rw-r--r-- | po/fr.po | 4 | ||||
-rw-r--r-- | po/gl.po | 4 | ||||
-rw-r--r-- | po/he.po | 4 | ||||
-rw-r--r-- | po/hr.po | 4 | ||||
-rw-r--r-- | po/hu.po | 4 | ||||
-rw-r--r-- | po/it.po | 4 | ||||
-rw-r--r-- | po/ja.po | 4 | ||||
-rw-r--r-- | po/lt.po | 4 | ||||
-rw-r--r-- | po/ms.po | 4 | ||||
-rw-r--r-- | po/nb.po | 17 | ||||
-rw-r--r-- | po/nl.po | 47 | ||||
-rw-r--r-- | po/pl.po | 4 | ||||
-rw-r--r-- | po/pt.po | 4 | ||||
-rw-r--r-- | po/pt_BR.po | 4 | ||||
-rw-r--r-- | po/ro.po | 4 | ||||
-rw-r--r-- | po/ru.po | 4 | ||||
-rw-r--r-- | po/sk.po | 4 | ||||
-rw-r--r-- | po/sl.po | 8 | ||||
-rw-r--r-- | po/sr.po | 4 | ||||
-rw-r--r-- | po/sv.po | 4 | ||||
-rw-r--r-- | po/te.po | 4 | ||||
-rw-r--r-- | po/tr.po | 4 | ||||
-rw-r--r-- | po/uk.po | 2 | ||||
-rw-r--r-- | po/vi.po | 4 | ||||
-rw-r--r-- | po/zh_CN.po | 4 | ||||
-rw-r--r-- | src/book.c | 76 | ||||
-rw-r--r-- | src/book.h | 2 | ||||
-rw-r--r-- | src/page-view.c | 209 | ||||
-rw-r--r-- | src/page.c | 575 | ||||
-rw-r--r-- | src/page.h | 37 | ||||
-rw-r--r-- | src/scanner.c | 70 | ||||
-rw-r--r-- | src/scanner.h | 14 | ||||
-rw-r--r-- | src/simple-scan.c | 8 | ||||
-rw-r--r-- | src/ui.c | 41 |
51 files changed, 1029 insertions, 811 deletions
@@ -1,3 +1,14 @@ +Overview of changes in simple-scan 2.31.90.1 + + * Store scanned pages in raw format, not converted to 8 bit RGB. This uses + less memory and allows higher bit images to be used in the future. + * Fix scaling in output PDF + * Use 4 gray levels for text scanned documents + +Overview of changes in simple-scan 2.31.90 + + * Updated translations + Overview of changes in simple-scan 2.31.5 * Prompt user to save if they are quitting/starting a new document and have @@ -13,8 +13,8 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],, -[m4_warning([this file was generated for autoconf 2.65. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],, +[m4_warning([this file was generated for autoconf 2.67. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) @@ -346,7 +346,7 @@ msgstr "" dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs - dnl in configure.in. + dnl in configure.ac. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" @@ -475,7 +475,7 @@ AC_DEFINE_UNQUOTED($1, "$localedir", dnl dnl Now the definitions that aclocal will find dnl -ifdef(glib_configure_in,[],[ +ifdef(glib_configure_ac,[],[ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) ])dnl @@ -941,8 +941,9 @@ AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL]) # AC_DEFUN([AC_PROG_INTLTOOL], ...) -# nls.m4 serial 3 (gettext-0.15) -dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc. +# nls.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, +dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -960,17 +961,17 @@ dnl Authors: dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. -AC_PREREQ(2.50) +AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS - AC_ARG_ENABLE(nls, + AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- @@ -1,11 +1,11 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.65. +# Generated by GNU Autoconf 2.67. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -316,7 +316,7 @@ $as_echo X"$as_dir" | test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p @@ -356,19 +356,19 @@ else fi # as_fn_arith -# as_fn_error ERROR [LINENO LOG_FD] -# --------------------------------- +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with status $?, using 1 if that was 0. +# script with STATUS, using 1 if that was 0. as_fn_error () { - as_status=$?; test $as_status -eq 0 && as_status=1 - if test "$3"; then - as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $1" >&2 + $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -530,7 +530,7 @@ test -n "$DJDIR" || exec 7<&0 </dev/null exec 6>&1 # Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` @@ -835,8 +835,9 @@ do fi case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. @@ -881,7 +882,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -907,7 +908,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1111,7 +1112,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1127,7 +1128,7 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1157,8 +1158,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information." + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) @@ -1166,7 +1167,7 @@ Try \`$0 --help' for more information." # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error "invalid variable name: \`$ac_envvar'" ;; + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1184,13 +1185,13 @@ done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error "missing argument to $ac_option" + as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; - fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1213,7 +1214,7 @@ do [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac - as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' @@ -1227,8 +1228,8 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1243,9 +1244,9 @@ test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error "working directory cannot be determined" + as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error "pwd does not report name of working directory" + as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. @@ -1284,11 +1285,11 @@ else fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then @@ -1328,7 +1329,7 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files @@ -1498,9 +1499,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure -generated by GNU Autoconf 2.65 +generated by GNU Autoconf 2.67 -Copyright (C) 2009 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1616,7 +1617,7 @@ $as_echo "$ac_try_echo"; } >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } >/dev/null && { + test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : @@ -1682,10 +1683,10 @@ fi ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + if eval "test \"\${$3+set}\"" = set; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : +if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 @@ -1721,7 +1722,7 @@ if ac_fn_c_try_cpp "$LINENO"; then : else ac_header_preproc=no fi -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } @@ -1748,7 +1749,7 @@ $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : +if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" @@ -1770,7 +1771,7 @@ ac_fn_c_check_header_compile () as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : +if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -1800,7 +1801,7 @@ ac_fn_c_check_func () as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : +if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -1863,7 +1864,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.65. Invocation command line was +generated by GNU Autoconf 2.67. Invocation command line was $ $0 $@ @@ -1973,11 +1974,9 @@ trap 'exit_status=$? { echo - cat <<\_ASBOX -## ---------------- ## + $as_echo "## ---------------- ## ## Cache variables. ## -## ---------------- ## -_ASBOX +## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( @@ -2011,11 +2010,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - cat <<\_ASBOX -## ----------------- ## + $as_echo "## ----------------- ## ## Output variables. ## -## ----------------- ## -_ASBOX +## ----------------- ##" echo for ac_var in $ac_subst_vars do @@ -2028,11 +2025,9 @@ _ASBOX echo if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## + $as_echo "## ------------------- ## ## File substitutions. ## -## ------------------- ## -_ASBOX +## ------------------- ##" echo for ac_var in $ac_subst_files do @@ -2046,11 +2041,9 @@ _ASBOX fi if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## + $as_echo "## ----------- ## ## confdefs.h. ## -## ----------- ## -_ASBOX +## ----------- ##" echo cat confdefs.h echo @@ -2105,7 +2098,12 @@ _ACEOF ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - ac_site_file1=$CONFIG_SITE + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site @@ -2120,7 +2118,11 @@ do { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5 ; } fi done @@ -2196,7 +2198,7 @@ if $ac_cache_corrupted; then $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## @@ -2213,16 +2215,22 @@ am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - for ac_t in install-sh install.sh shtool; do - if test -f "$ac_dir/$ac_t"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/$ac_t -c" - break 2 - fi - done + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi done if test -z "$ac_aux_dir"; then - as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, @@ -2338,11 +2346,11 @@ am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error "unsafe absolute working directory name" "$LINENO" 5;; + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; + as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;; esac # Do `set' in a subshell so we don't clobber the current shell's @@ -2364,7 +2372,7 @@ if ( # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - as_fn_error "ls -t appears to fail. Make sure there is not a broken + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi @@ -2374,7 +2382,7 @@ then # Ok. : else - as_fn_error "newly created file is older than distributed files! + as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -2612,7 +2620,7 @@ done $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF @@ -2620,7 +2628,7 @@ SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; @@ -2654,7 +2662,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then - as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi @@ -2670,7 +2678,7 @@ fi # Define the identity of the package. PACKAGE=simple-scan - VERSION=2.31.5 + VERSION=2.31.90.1 cat >>confdefs.h <<_ACEOF @@ -3121,8 +3129,8 @@ fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "no acceptable C compiler found in \$PATH -See \`config.log' for more details." "$LINENO" 5; } +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5 ; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -3236,9 +3244,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ as_fn_set_status 77 -as_fn_error "C compiler cannot create executables -See \`config.log' for more details." "$LINENO" 5; }; } +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5 ; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -3280,8 +3287,8 @@ done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." "$LINENO" 5; } +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5 ; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 @@ -3338,9 +3345,9 @@ $as_echo "$ac_try_echo"; } >&5 else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot run C compiled programs. +as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. -See \`config.log' for more details." "$LINENO" 5; } +See \`config.log' for more details" "$LINENO" 5 ; } fi fi fi @@ -3391,8 +3398,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot compute suffix of object files: cannot compile -See \`config.log' for more details." "$LINENO" 5; } +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5 ; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi @@ -3805,7 +3812,7 @@ $as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then : +if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\"" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4207,8 +4214,8 @@ fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "no acceptable C compiler found in \$PATH -See \`config.log' for more details." "$LINENO" 5; } +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5 ; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -4619,7 +4626,7 @@ else # Broken: fails on valid input. continue fi -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. @@ -4635,11 +4642,11 @@ else ac_preproc_ok=: break fi -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext +rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi @@ -4678,7 +4685,7 @@ else # Broken: fails on valid input. continue fi -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. @@ -4694,18 +4701,18 @@ else ac_preproc_ok=: break fi -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext +rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." "$LINENO" 5; } +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5 ; } fi ac_ext=c @@ -4766,7 +4773,7 @@ esac done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then - as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP @@ -4832,7 +4839,7 @@ esac done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then - as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP @@ -4995,7 +5002,7 @@ $as_echo "Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >& if test "${enable_schemas_install+set}" = set; then : enableval=$enable_schemas_install; case ${enableval} in yes|no) ;; - *) as_fn_error "bad value ${enableval} for --enable-schemas-install" "$LINENO" 5 ;; + *) as_fn_error $? "bad value ${enableval} for --enable-schemas-install" "$LINENO" 5 ;; esac fi @@ -5077,7 +5084,7 @@ $as_echo "$has_option" >&6; } fi ;; *) - as_fn_error "Unknown argument '$enable_compile_warnings' to --enable-compile-warnings" "$LINENO" 5 + as_fn_error $? "Unknown argument '$enable_compile_warnings' to --enable-compile-warnings" "$LINENO" 5 ;; esac CFLAGS="$realsave_CFLAGS" @@ -5384,7 +5391,7 @@ fi # Put the nasty error message in config.log where it belongs echo "$SIMPLE_SCAN_PKG_ERRORS" >&5 - as_fn_error "Package requirements ( + as_fn_error $? "Package requirements ( gtk+-2.0 >= $GTK_REQUIRED gconf-2.0 gmodule-export-2.0 @@ -5410,7 +5417,7 @@ elif test $pkg_failed = untried; then $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "The pkg-config script could not be found or is too old. Make sure it +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -5419,7 +5426,7 @@ and SIMPLE_SCAN_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." "$LINENO" 5; } +See \`config.log' for more details" "$LINENO" 5 ; } else SIMPLE_SCAN_CFLAGS=$pkg_cv_SIMPLE_SCAN_CFLAGS SIMPLE_SCAN_LIBS=$pkg_cv_SIMPLE_SCAN_LIBS @@ -5435,8 +5442,7 @@ do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " -eval as_val=\$$as_ac_Header - if test "x$as_val" = x""yes; then : +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF @@ -5455,7 +5461,7 @@ if test "x$ac_cv_header_sane_sane_h" = x""yes; then : _ACEOF else - as_fn_error "SANE not found" "$LINENO" 5 + as_fn_error $? "SANE not found" "$LINENO" 5 fi done @@ -5469,7 +5475,7 @@ if test "x$ac_cv_header_sane_saneopts_h" = x""yes; then : _ACEOF else - as_fn_error "SANE not found" "$LINENO" 5 + as_fn_error $? "SANE not found" "$LINENO" 5 fi done @@ -5483,7 +5489,7 @@ if test "x$ac_cv_header_jpeglib_h" = x""yes; then : _ACEOF else - as_fn_error "libjpeg not found" "$LINENO" 5 + as_fn_error $? "libjpeg not found" "$LINENO" 5 fi done @@ -5524,7 +5530,7 @@ $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - as_fn_error "gnome-doc-utils >= $gdu_cv_version_required not found" "$LINENO" 5 + as_fn_error $? "gnome-doc-utils >= $gdu_cv_version_required not found" "$LINENO" 5 fi @@ -5610,7 +5616,7 @@ $as_echo "$USE_NLS" >&6; } case "$am__api_version" in 1.01234) - as_fn_error "Automake 1.5 or newer is required to use intltool" "$LINENO" 5 + as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5 ;; *) ;; @@ -5627,7 +5633,7 @@ $as_echo_n "checking for intltool >= 0.35.0... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5 $as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; } test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || - as_fn_error "Your intltool is too old. You need intltool 0.35.0 or later." "$LINENO" 5 + as_fn_error $? "Your intltool is too old. You need intltool 0.35.0 or later." "$LINENO" 5 fi # Extract the first word of "intltool-update", so it can be a program name with args. @@ -5751,7 +5757,7 @@ fi if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then - as_fn_error "The intltool scripts were not found. Please install intltool." "$LINENO" 5 + as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5 fi INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' @@ -6033,13 +6039,13 @@ fi if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then - as_fn_error "GNU gettext tools not found; required for intltool" "$LINENO" 5 + as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then - as_fn_error "GNU gettext tools not found; required for intltool" "$LINENO" 5 + as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi # Extract the first word of "perl", so it can be a program name with args. @@ -6083,13 +6089,13 @@ fi if test -z "$INTLTOOL_PERL"; then - as_fn_error "perl not found" "$LINENO" 5 + as_fn_error $? "perl not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.1" >&5 $as_echo_n "checking for perl >= 5.8.1... " >&6; } $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then - as_fn_error "perl 5.8.1 is required for intltool" "$LINENO" 5 + as_fn_error $? "perl 5.8.1 is required for intltool" "$LINENO" 5 else IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5 @@ -6102,7 +6108,7 @@ $as_echo_n "checking for XML::Parser... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else - as_fn_error "XML::Parser perl module is required for intltool" "$LINENO" 5 + as_fn_error $? "XML::Parser perl module is required for intltool" "$LINENO" 5 fi fi @@ -6979,6 +6985,7 @@ DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= +U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' @@ -7002,31 +7009,31 @@ else fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - as_fn_error "conditional \"MAINTAINER_MODE\" was never defined. + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error "conditional \"AMDEP\" was never defined. + as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error "conditional \"am__fastdepCC\" was never defined. + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error "conditional \"am__fastdepCC\" was never defined. + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GCONF_SCHEMAS_INSTALL_TRUE}" && test -z "${GCONF_SCHEMAS_INSTALL_FALSE}"; then - as_fn_error "conditional \"GCONF_SCHEMAS_INSTALL\" was never defined. + as_fn_error $? "conditional \"GCONF_SCHEMAS_INSTALL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SK_TRUE}" && test -z "${ENABLE_SK_FALSE}"; then - as_fn_error "conditional \"ENABLE_SK\" was never defined. + as_fn_error $? "conditional \"ENABLE_SK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GNOME_DOC_UTILS_TRUE}" && test -z "${HAVE_GNOME_DOC_UTILS_FALSE}"; then - as_fn_error "conditional \"HAVE_GNOME_DOC_UTILS\" was never defined. + as_fn_error $? "conditional \"HAVE_GNOME_DOC_UTILS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi @@ -7180,19 +7187,19 @@ export LANGUAGE (unset CDPATH) >/dev/null 2>&1 && unset CDPATH -# as_fn_error ERROR [LINENO LOG_FD] -# --------------------------------- +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with status $?, using 1 if that was 0. +# script with STATUS, using 1 if that was 0. as_fn_error () { - as_status=$?; test $as_status -eq 0 && as_status=1 - if test "$3"; then - as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $1" >&2 + $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -7388,7 +7395,7 @@ $as_echo X"$as_dir" | test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p @@ -7442,7 +7449,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by $as_me, which was -generated by GNU Autoconf 2.65. Invocation command line was +generated by GNU Autoconf 2.67. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -7499,10 +7506,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.65, +configured by $0, generated by GNU Autoconf 2.67, with options \\"\$ac_cs_config\\" -Copyright (C) 2009 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -7520,11 +7527,16 @@ ac_need_defaults=: while test $# != 0 do case $1 in - --*=*) + --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; *) ac_option=$1 ac_optarg=$2 @@ -7546,6 +7558,7 @@ do $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; @@ -7556,7 +7569,7 @@ do ac_cs_silent=: ;; # This is an error. - -*) as_fn_error "unrecognized option: \`$1' + -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" @@ -7621,7 +7634,7 @@ do "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; - *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; esac done @@ -7658,7 +7671,7 @@ $debug || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") -} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. @@ -7675,7 +7688,7 @@ if test "x$ac_cr" = x; then fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\r' + ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi @@ -7689,18 +7702,18 @@ _ACEOF echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi @@ -7789,20 +7802,28 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ - || as_fn_error "could not setup config files machinery" "$LINENO" 5 + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// s/^[^=]*=[ ]*$// }' fi @@ -7820,7 +7841,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -7848,7 +7869,7 @@ do [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" @@ -7875,7 +7896,7 @@ $as_echo "$as_me: creating $ac_file" >&6;} case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac @@ -8012,22 +8033,22 @@ s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 +which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} +which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; @@ -8138,7 +8159,7 @@ $as_echo X"$file" | esac ;; "po/stamp-it":C) if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then - as_fn_error "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5 + as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5 fi rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp" >"po/stamp-it.tmp" @@ -8166,7 +8187,7 @@ _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || - as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. @@ -8187,7 +8208,7 @@ if test "$no_create" != yes; then exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit $? + $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 diff --git a/configure.ac b/configure.ac index e86b020..9366e11 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, 2.31.5) +AM_INIT_AUTOMAKE(simple-scan, 2.31.90.1) AM_MAINTAINER_MODE GNOME_MAINTAINER_MODE_DEFINES m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-01-26 22:27+0000\n" "Last-Translator: Launchpad Translations Administrators " "<rosetta@launchpad.net>\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:45+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-04-19 09:51+0000\n" "Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n" "Language-Team: Arabic <ar@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:45+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-01-26 22:27+0000\n" "Last-Translator: Launchpad Translations Administrators " "<rosetta@launchpad.net>\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:45+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" -"PO-Revision-Date: 2010-02-27 20:56+0000\n" -"Last-Translator: Krasimir Chonov <mk2616@abv.bg>\n" +"POT-Creation-Date: 2010-08-08 07:48+0000\n" +"PO-Revision-Date: 2010-08-14 18:50+0000\n" +"Last-Translator: Svetoslav Stefanov <svetlisashkov@yahoo.com>\n" "Language-Team: Bulgarian <bg@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:45+0000\n" +"X-Launchpad-Export-Date: 2010-08-15 06:31+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -45,39 +45,39 @@ msgstr "" #. Combo box label for scanning the back side of a page #: ../data/simple-scan.ui.h:12 msgid "Back" -msgstr "" +msgstr "Обратна страна" #: ../data/simple-scan.ui.h:13 msgid "Crop" -msgstr "" +msgstr "Отрязване" #: ../data/simple-scan.ui.h:14 msgid "Crop the selected page" -msgstr "" +msgstr "Отрязва избраната страница" #. Combo box label for scanning the front side of a page #: ../data/simple-scan.ui.h:16 msgid "Front" -msgstr "" +msgstr "Предна страна" #. Combo box label for scanning both sides of a page #: ../data/simple-scan.ui.h:18 msgid "Front and Back" -msgstr "" +msgstr "Предна и обратна страна" #. Radio button for cropping to page to US legal size #: ../data/simple-scan.ui.h:20 msgid "Le_gal" -msgstr "" +msgstr "Le_gal" #: ../data/simple-scan.ui.h:21 msgid "New" -msgstr "" +msgstr "Нов" #. Label beside page size combo box #: ../data/simple-scan.ui.h:23 msgid "Page Size:" -msgstr "" +msgstr "Размер на листа:" #. Combo box label for photo scan mode #: ../data/simple-scan.ui.h:25 @@ -112,12 +112,12 @@ msgstr "Завъртане на_дясно" #. Tooltip for rotate left (counter-clockwise) button #: ../data/simple-scan.ui.h:37 msgid "Rotate the page to the left (counter-clockwise)" -msgstr "" +msgstr "Завъртане страницата на ляво (обратно на часовниковата стрелка)" #. Tooltip for rotate right (clockwise) button #: ../data/simple-scan.ui.h:39 msgid "Rotate the page to the right (clockwise)" -msgstr "" +msgstr "Завъртане страницата на дясно (по часовниковата стрелка)" #: ../data/simple-scan.ui.h:40 msgid "Save" @@ -131,7 +131,7 @@ msgstr "" #. Scan menu item #: ../data/simple-scan.ui.h:44 msgid "Sc_an" -msgstr "" +msgstr "Ска_ниране" #. Label on scan toolbar item #: ../data/simple-scan.ui.h:46 @@ -146,7 +146,7 @@ msgstr "Източник" #. Label beside scan side combo box #: ../data/simple-scan.ui.h:50 msgid "Scan Side:" -msgstr "" +msgstr "Избор на страна за сканиране:" #. Tooltip for scan toolbar button #: ../data/simple-scan.ui.h:52 @@ -166,16 +166,16 @@ msgstr "Единична страница" #. Tooltip for new document button #: ../data/simple-scan.ui.h:58 msgid "Start a new document" -msgstr "" +msgstr "Започване на нов документ" #: ../data/simple-scan.ui.h:59 msgid "Stop" -msgstr "" +msgstr "Спиране" #. Tooltip for stop button #: ../data/simple-scan.ui.h:61 msgid "Stop the current scan" -msgstr "" +msgstr "Спиране на текущото сканиране" #. Combo box label for text scan mode #: ../data/simple-scan.ui.h:63 @@ -190,7 +190,7 @@ msgstr "_Упълномощаване" #. Help|Contents menu #: ../data/simple-scan.ui.h:67 msgid "_Contents" -msgstr "" +msgstr "_Съдържание" #. Label for page crop submenu #: ../data/simple-scan.ui.h:69 @@ -200,7 +200,7 @@ msgstr "И_зрязване" #. Radio button for cropping to custom page size #: ../data/simple-scan.ui.h:71 msgid "_Custom" -msgstr "" +msgstr "_Потребителско" #. Label on document menu (contains actions for this document, e.g. save, print) #: ../data/simple-scan.ui.h:73 @@ -210,7 +210,7 @@ msgstr "_Документ" #. Label on email menu item #: ../data/simple-scan.ui.h:75 msgid "_Email" -msgstr "" +msgstr "_Електронна поща" #. Label on help menu #: ../data/simple-scan.ui.h:77 @@ -240,22 +240,22 @@ msgstr "_Парола:" #. Label beside scan source combo box #: ../data/simple-scan.ui.h:87 msgid "_Photo Resolution:" -msgstr "" +msgstr "_Разделителна способност на снимката:" #. Menu item to rotate the crop area #: ../data/simple-scan.ui.h:89 msgid "_Rotate Crop" -msgstr "" +msgstr "_Завъртане на изрязването" #. Menu entry to stop current scan #: ../data/simple-scan.ui.h:91 msgid "_Stop Scan" -msgstr "" +msgstr "_Спиране на сканирането" #. Label beside scan source combo box #: ../data/simple-scan.ui.h:93 msgid "_Text Resolution:" -msgstr "" +msgstr "_Разделителна способност на текста:" #. Label beside username entry #: ../data/simple-scan.ui.h:95 @@ -264,43 +264,43 @@ msgstr "_Потребителско име за ресурса:" #: ../data/simple-scan.desktop.in.h:1 msgid "Scan Documents" -msgstr "" +msgstr "Сканиране на документи" #: ../data/simple-scan.schemas.in.h:1 msgid "Device to scan from" -msgstr "" +msgstr "Устройство, от което да се сканира" #: ../data/simple-scan.schemas.in.h:2 msgid "Direction of scan" -msgstr "" +msgstr "Посока на сканиране" #: ../data/simple-scan.schemas.in.h:3 msgid "Directory to save files to" -msgstr "" +msgstr "Папка, където да се запазят файловете" #: ../data/simple-scan.schemas.in.h:4 msgid "Height of paper in tenths of a mm" -msgstr "" +msgstr "Височина на хартията в десетки милиметри" #: ../data/simple-scan.schemas.in.h:5 msgid "Height of scanned image in pixels" -msgstr "" +msgstr "Височина на сканираното изображение в пиксели" #: ../data/simple-scan.schemas.in.h:6 msgid "Page side to scan" -msgstr "" +msgstr "Страна на листа за сканиране" #: ../data/simple-scan.schemas.in.h:7 msgid "Resolution for photo scans" -msgstr "" +msgstr "Разделителна способност на фото сканиранията" #: ../data/simple-scan.schemas.in.h:8 msgid "Resolution for text scans" -msgstr "" +msgstr "Разделителна способност на текстовите сканирания" #: ../data/simple-scan.schemas.in.h:9 msgid "Resolution of last scanned image" -msgstr "" +msgstr "Разделителна способност на последното сканирано изображение" #: ../data/simple-scan.schemas.in.h:10 msgid "SANE device to acquire images from." @@ -315,11 +315,15 @@ msgid "" "The direction of the scanner across the scanned page. It can be one of the " "following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'" msgstr "" +"Посоката на скенера през сканираната страница. Може да бъде една от " +"следните: 'отгоре-надолу' 'отдолу-нагоре' 'от лява-надясно' 'от дясно-наляво'" #: ../data/simple-scan.schemas.in.h:13 msgid "" "The directory to save files to. Defaults to the documents directory if unset." msgstr "" +"Папка, където да се запазват файловете. По подразбиране, ако не е настроено, " +" е папката с документи." #: ../data/simple-scan.schemas.in.h:14 msgid "" @@ -332,39 +336,50 @@ msgid "" "The height of the paper in tenths of a mm (or 0 for automatic paper " "detection)." msgstr "" +"Височина на хартията в десетки милиметри (или 0 за автоматично разпознаване)." #: ../data/simple-scan.schemas.in.h:16 msgid "" "The page side to scan. It can be one of the following: 'both' 'front' 'back'" msgstr "" +"Страна на листа за сканиране. Тя може да бъде една от следните: \"двете\" " +"\"предна\" \"обратна\"" #: ../data/simple-scan.schemas.in.h:17 msgid "The resolution in dots-per-inch of the previously scanned image." msgstr "" +"Разделителна способност в точки-за-инч от предишното сканирано изображение." #: ../data/simple-scan.schemas.in.h:18 msgid "The resolution in dots-per-inch to use when scanning photos." msgstr "" +"Разделителна способност в точки-за-инч, която да се използва при сканиране " +"на снимки." #: ../data/simple-scan.schemas.in.h:19 msgid "The resolution in dots-per-inch to use when scanning text." msgstr "" +"Разделителна способност в точки-за-инч, която да се използва, когато се " +"сканира текст." #: ../data/simple-scan.schemas.in.h:20 msgid "" "The width of scanned image in pixels. This value is updated to what the last " "scanned page was." msgstr "" +"Ширина на сканираните изображения в пиксели. Тази стойност е обновена до " +"стойността от на последната сканирана страница." #: ../data/simple-scan.schemas.in.h:21 msgid "" "The width of the paper in tenths of a mm (or 0 for automatic paper " "detection)." msgstr "" +"Широчина на листа в десетки милиметри (избери 0 за автоматично разпознаване)." #: ../data/simple-scan.schemas.in.h:22 msgid "Type of document being scanned" -msgstr "" +msgstr "Типове документи, които се сканират" #: ../data/simple-scan.schemas.in.h:23 msgid "" @@ -372,27 +387,30 @@ msgid "" "photos. This setting decides on the scan resolution, colors and post-" "processing." msgstr "" +"Типове документи, които се сканират. 'текст' за текстови документи, 'фото' " +"за снимки. Тези настройки определят разделителната способност на " +"сканирането, цветовете и последващата обработка." #: ../data/simple-scan.schemas.in.h:24 msgid "Width of paper in tenths of a mm" -msgstr "" +msgstr "Ширина на хартията в десетки милиметри" #: ../data/simple-scan.schemas.in.h:25 msgid "Width of scanned image in pixels" -msgstr "" +msgstr "Ширина на сканираните изображения в пиксели" #: ../data/simple-scan.schemas.in.h:26 msgid "Window height in pixels" -msgstr "" +msgstr "Височина на прозореца в пиксели" #: ../data/simple-scan.schemas.in.h:27 msgid "Window width in pixels" -msgstr "" +msgstr "Ширина на прозореца в пиксели" #. Error displayed when no scanners to scan with #: ../src/scanner.c:889 msgid "No scanners available. Please connect a scanner." -msgstr "" +msgstr "Не са налични скенери. Моля свържете скенер." #. Error displayed when cannot connect to scanner #: ../src/scanner.c:916 @@ -417,7 +435,7 @@ msgstr "Неуспех при сканиране" #. Default filename to use when saving document (and extension will be added, e.g. .jpg) #: ../src/simple-scan.c:283 msgid "Scanned Document" -msgstr "" +msgstr "Сканиран документ" #. Description on how to use simple-scan displayed on command-line #: ../src/simple-scan.c:426 @@ -440,6 +458,12 @@ msgid "" " --help-all Show all help options\n" " --help-gtk Show GTK+ options" msgstr "" +"Помощни опции:\n" +" -d, --debug Печатане на дебъг съобщения\n" +" -v, --version Показване на версията\n" +" -h, --help Показване на помощните опции\n" +" --help-all Показване всички помощни опции\n" +" --help-gtk Показване на GTK+ опции" #. Description on simple-scan command-line GTK+ options displayed on command-line #: ../src/simple-scan.c:446 @@ -455,6 +479,13 @@ msgid "" " --gtk-module=MODULES Load additional GTK+ modules\n" " --g-fatal-warnings Make all warnings fatal" msgstr "" +"Опции на GTK+:\n" +" --class=КЛАС Класът на програмата, използван от мениджъра на прозорци\n" +" --name=ИМЕ Името на програмата, използвано от мениджъра на прозорци\n" +" --screen=ДИСПЛЕЙ Дисплеят на X, който да се ползва\n" +" --sync Извикванията на X да са синхронни\n" +" --gtk-module=МОДУЛИ Зареждане на допълнителни модули на GTK+\n" +" --g-fatal-warnings Всички предупреждения да се считат за грешки" #. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization #: ../src/ui.c:151 @@ -475,17 +506,17 @@ msgstr "Моля проверете дали скенерът ви е свърз #. Save dialog: Label for saving in PDF format #: ../src/ui.c:382 msgid "PDF (multi-page document)" -msgstr "" +msgstr "PDF (документ с много страници)" #. Save dialog: Label for saving in JPEG format #: ../src/ui.c:384 msgid "JPEG (compressed)" -msgstr "" +msgstr "JPEG (компресирани)" #. Save dialog: Label for saving in PNG format #: ../src/ui.c:386 msgid "PNG (lossless)" -msgstr "" +msgstr "PNG (без загуби)" #. Save dialog: Dialog title #: ../src/ui.c:398 @@ -495,17 +526,17 @@ msgstr "Запазване като..." #. Save dialog: Filter name to show only image files #: ../src/ui.c:414 msgid "Image Files" -msgstr "" +msgstr "Файлове с изображения" #. Save dialog: Filter name to show all files #: ../src/ui.c:421 msgid "All Files" -msgstr "" +msgstr "Всички файлове" #. #: ../src/ui.c:426 msgid "Select File _Type" -msgstr "" +msgstr "Избор на _тип файл" #. Title of error dialog when save failed #: ../src/ui.c:524 @@ -515,17 +546,17 @@ msgstr "Неуспех при запазване на файл" #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:552 msgid "If you don't save, changes will be permanently lost." -msgstr "" +msgstr "Ако не запазите, промените ще бъдат изгубени." #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:594 msgid "Save current document?" -msgstr "" +msgstr "Запазване на текущия документ?" #. Button in dialog to create new document and discard unsaved document #: ../src/ui.c:596 msgid "Discard Changes" -msgstr "" +msgstr "Отказ от промените" #. Error message display when unable to preview image #: ../src/ui.c:949 @@ -535,7 +566,7 @@ msgstr "" #. Error message displayed when unable to launch help browser #: ../src/ui.c:1245 msgid "Unable to open help file" -msgstr "" +msgstr "Помощния файл не може да бъде отворен" #. The license this software is under (GPL3+) #: ../src/ui.c:1260 @@ -553,6 +584,20 @@ msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see <http://www.gnu.org/licenses/>." msgstr "" +"Тази програма е свободен софтуер: можете да я редистрибутирате и/или " +"модифицирате\n" +"под условията на GNU General Public License, публикуван от\n" +"Free Software Foundation, или под версия 3 на Лиценза, или\n" +"(по ваше усмотрение) която и да е следваща версия.\n" +"\n" +"Тази програма е дистрибутирана с надеждата, че ще бъде полезна,\n" +"но БЕЗ КАКВАТО И ДА Е ГАРАНЦИЯ; без дори предполагаемата гаранция на\n" +"ПРОДАВАЕМОСТТА или СПОСОБНОСТТА ЗА СПЕЦИФИЧНА УПОТРЕБА. Погледнете\n" +"GNU General Public License за повече детайли.\n" +"\n" +"Вие би трябвало да сте получили копие на GNU General Public License\n" +"заедно с тази програма. Ако това не е така, вижте " +"<http://www.gnu.org/licenses/>." #. Title of about dialog #: ../src/ui.c:1274 @@ -587,25 +632,25 @@ msgstr "" #: ../src/ui.c:1448 #, c-format msgid "%d dpi (draft)" -msgstr "" +msgstr "%d dpi (чернова)" #. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch) #: ../src/ui.c:1450 ../src/ui.c:1451 ../src/ui.c:1452 ../src/ui.c:1455 #, c-format msgid "%d dpi" -msgstr "" +msgstr "%d dpi" #. Preferences dialog: Label for maximum resolution in resolution list #: ../src/ui.c:1454 #, c-format msgid "%d dpi (high resolution)" -msgstr "" +msgstr "%d dpi (висока разделителна способност)" #. Preferences dialog: Label for default resolution in resolution list #: ../src/ui.c:1477 #, c-format msgid "%d dpi (default)" -msgstr "" +msgstr "%d dpi (по подразбиране)" #. Title of dialog when cannot load required files #: ../src/ui.c:1522 @@ -620,7 +665,7 @@ msgstr "Моля проверете инсталацията си" #. Button in error infobar to open preferences dialog and change scanner #: ../src/ui.c:1581 msgid "Change _Scanner" -msgstr "" +msgstr "Смяна на _скенер" #. Combo box value for automatic paper size #: ../src/ui.c:1587 @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-02-11 15:07+0000\n" "Last-Translator: David Planella <david.planella@ubuntu.com>\n" "Language-Team: Catalan <ca@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:45+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" -"PO-Revision-Date: 2010-04-10 15:06+0000\n" +"POT-Creation-Date: 2010-08-08 07:48+0000\n" +"PO-Revision-Date: 2010-08-13 21:18+0000\n" "Last-Translator: Adrian Guniš <andygun696@gmail.com>\n" "Language-Team: Czech <cs@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:45+0000\n" +"X-Launchpad-Export-Date: 2010-08-14 06:24+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -45,7 +45,7 @@ msgstr "Všechny stránky z _podavače" #. Combo box label for scanning the back side of a page #: ../data/simple-scan.ui.h:12 msgid "Back" -msgstr "" +msgstr "Zadní" #: ../data/simple-scan.ui.h:13 msgid "Crop" @@ -58,12 +58,12 @@ msgstr "Oříznout vybranou stránku" #. Combo box label for scanning the front side of a page #: ../data/simple-scan.ui.h:16 msgid "Front" -msgstr "" +msgstr "Přední" #. Combo box label for scanning both sides of a page #: ../data/simple-scan.ui.h:18 msgid "Front and Back" -msgstr "" +msgstr "Přední a zadní" #. Radio button for cropping to page to US legal size #: ../data/simple-scan.ui.h:20 @@ -77,7 +77,7 @@ msgstr "Nový" #. Label beside page size combo box #: ../data/simple-scan.ui.h:23 msgid "Page Size:" -msgstr "" +msgstr "Velikost stránky:" #. Combo box label for photo scan mode #: ../data/simple-scan.ui.h:25 @@ -126,7 +126,7 @@ msgstr "Uložit" #. Tooltip for save toolbar button #: ../data/simple-scan.ui.h:42 msgid "Save document to a file" -msgstr "" +msgstr "Uložit dokument do souboru" #. Scan menu item #: ../data/simple-scan.ui.h:44 @@ -146,7 +146,7 @@ msgstr "_Zdroj skenování:" #. Label beside scan side combo box #: ../data/simple-scan.ui.h:50 msgid "Scan Side:" -msgstr "" +msgstr "Skenovat stranu:" #. Tooltip for scan toolbar button #: ../data/simple-scan.ui.h:52 @@ -280,7 +280,7 @@ msgstr "Adresář pro ukládání souborů" #: ../data/simple-scan.schemas.in.h:4 msgid "Height of paper in tenths of a mm" -msgstr "" +msgstr "Výška papíru v desetinách milimetru" #: ../data/simple-scan.schemas.in.h:5 msgid "Height of scanned image in pixels" @@ -288,7 +288,7 @@ msgstr "Výška skenovaného obrázku v pixelech" #: ../data/simple-scan.schemas.in.h:6 msgid "Page side to scan" -msgstr "" +msgstr "Strana stránky ke skenování" #: ../data/simple-scan.schemas.in.h:7 msgid "Resolution for photo scans" @@ -338,11 +338,14 @@ msgid "" "The height of the paper in tenths of a mm (or 0 for automatic paper " "detection)." msgstr "" +"Výška papíru v desetinách milimetru (nebo 0 pro automatické zjištění papíru)." #: ../data/simple-scan.schemas.in.h:16 msgid "" "The page side to scan. It can be one of the following: 'both' 'front' 'back'" msgstr "" +"Strana stránky ke skenování. Může to být jedna z následujících hodnot: " +"„both“ (obě), „front“ (přední), „back“ (zadní)" #: ../data/simple-scan.schemas.in.h:17 msgid "The resolution in dots-per-inch of the previously scanned image." @@ -369,6 +372,7 @@ msgid "" "The width of the paper in tenths of a mm (or 0 for automatic paper " "detection)." msgstr "" +"Šířka papíru v desetinách milimetru (nebo 0 pro automatické zjištění papíru)." #: ../data/simple-scan.schemas.in.h:22 msgid "Type of document being scanned" @@ -386,7 +390,7 @@ msgstr "" #: ../data/simple-scan.schemas.in.h:24 msgid "Width of paper in tenths of a mm" -msgstr "" +msgstr "Šířka papíru v desetinách milimetru" #: ../data/simple-scan.schemas.in.h:25 msgid "Width of scanned image in pixels" @@ -541,17 +545,17 @@ msgstr "Uložení souboru selhalo" #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:552 msgid "If you don't save, changes will be permanently lost." -msgstr "" +msgstr "Pokud neuložíte, změny budou nenávratně ztraceny." #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:594 msgid "Save current document?" -msgstr "" +msgstr "Uložit stávající dokument?" #. Button in dialog to create new document and discard unsaved document #: ../src/ui.c:596 msgid "Discard Changes" -msgstr "" +msgstr "Zahodit změny" #. Error message display when unable to preview image #: ../src/ui.c:949 @@ -615,12 +619,12 @@ msgstr "" #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:1304 msgid "Save document before quitting?" -msgstr "" +msgstr "Uložit dokument před ukončením?" #. Button in dialog to quit and discard unsaved document #: ../src/ui.c:1306 msgid "Quit without Saving" -msgstr "" +msgstr "Ukončit bez uložení" #. Preferences dialog: Label for minimum resolution in resolution list #: ../src/ui.c:1448 @@ -664,7 +668,7 @@ msgstr "Změnit _skener" #. Combo box value for automatic paper size #: ../src/ui.c:1587 msgid "Automatic" -msgstr "" +msgstr "Automaticky" #: ../src/ui.c:1865 msgid "Scanned Document.pdf" @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-05-25 09:17+0000\n" "Last-Translator: AJenbo <anders@jenbo.dk>\n" "Language-Team: Danish <da@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" -"PO-Revision-Date: 2010-06-14 03:39+0000\n" -"Last-Translator: Jochen Skulj <jochen@jochenskulj.de>\n" +"POT-Creation-Date: 2010-07-18 04:27+0000\n" +"PO-Revision-Date: 2010-07-17 23:44+0000\n" +"Last-Translator: Jan-Christoph Borchardt <inquata@gmail.com>\n" "Language-Team: German <de@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-19 03:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -559,7 +559,7 @@ msgstr "" #. Button in dialog to create new document and discard unsaved document #: ../src/ui.c:596 msgid "Discard Changes" -msgstr "" +msgstr "Änderungen verwerfen" #. Error message display when unable to preview image #: ../src/ui.c:949 @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-03-23 00:21+0000\n" "Last-Translator: Thanos Lefteris <Unknown>\n" "Language-Team: Greek <el@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch diff --git a/po/en_GB.po b/po/en_GB.po index 8673cb7..50fe33f 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-03-23 12:03+0000\n" "Last-Translator: Alex Denvir <coldfff@blueyonder.co.uk>\n" "Language-Team: English (United Kingdom) <en_GB@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-05-29 15:56+0000\n" "Last-Translator: Julián Alarcón <alarconj@gmail.com>\n" "Language-Team: Spanish <es@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -622,6 +622,7 @@ msgstr "" " DiegoJ https://launchpad.net/~diegojromerolopez\n" " Edgardo Fredz https://launchpad.net/~edgardo-fredz\n" " FAMM https://launchpad.net/~famm94\n" +" Genesis Bustamante https://launchpad.net/~genmarc\n" " Hector Louzao https://launchpad.net/~hhlp\n" " José Luis Ricón https://launchpad.net/~artirj\n" " Julián Alarcón https://launchpad.net/~alarconj\n" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-01-26 22:27+0000\n" "Last-Translator: Launchpad Translations Administrators " "<rosetta@launchpad.net>\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:45+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" -"PO-Revision-Date: 2010-04-07 12:59+0000\n" -"Last-Translator: Elias Julkunen <elias.julkunen@gmail.com>\n" +"POT-Creation-Date: 2010-07-27 18:03+0000\n" +"PO-Revision-Date: 2010-07-31 00:17+0000\n" +"Last-Translator: Jiri Grönroos <Unknown>\n" "Language-Team: Finnish <fi@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-08-01 03:56+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -45,7 +45,7 @@ msgstr "Kaikki sivut _laitteelta" #. Combo box label for scanning the back side of a page #: ../data/simple-scan.ui.h:12 msgid "Back" -msgstr "" +msgstr "Takapuoli" #: ../data/simple-scan.ui.h:13 msgid "Crop" @@ -58,12 +58,12 @@ msgstr "Rajaa nykyistä sivua" #. Combo box label for scanning the front side of a page #: ../data/simple-scan.ui.h:16 msgid "Front" -msgstr "" +msgstr "Etupuoli" #. Combo box label for scanning both sides of a page #: ../data/simple-scan.ui.h:18 msgid "Front and Back" -msgstr "" +msgstr "Etu- ja takapuoli" #. Radio button for cropping to page to US legal size #: ../data/simple-scan.ui.h:20 @@ -577,6 +577,7 @@ msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Elias Julkunen https://launchpad.net/~eliasj\n" +" Jiri Grönroos https://launchpad.net/~jiri-gronroos\n" " Timo Jyrinki https://launchpad.net/~timo-jyrinki" #. Text in dialog warning when a document is about to be lost @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-05-21 16:03+0000\n" "Last-Translator: Pierre Slamich <pierre.slamich@gmail.com>\n" "Language-Team: French <fr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-04-22 12:35+0000\n" "Last-Translator: Manuel Xosé Lemos <Unknown>\n" "Language-Team: Galician <gl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:43+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-02-27 20:15+0000\n" "Last-Translator: Liel Fridman <Unknown>\n" "Language-Team: Hebrew <he@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-01-26 22:27+0000\n" "Last-Translator: Launchpad Translations Administrators " "<rosetta@launchpad.net>\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-03-31 08:51+0000\n" "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n" "Language-Team: Hungarian <hu@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-03-21 13:09+0000\n" "Last-Translator: Paolo Sammicheli <paolo@sammicheli.net>\n" "Language-Team: Italian <it@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-06-17 01:01+0000\n" "Last-Translator: Shushi Kurose <md81bird@hitaki.net>\n" "Language-Team: Japanese <ja@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-01-26 22:27+0000\n" "Last-Translator: Launchpad Translations Administrators " "<rosetta@launchpad.net>\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-01-26 22:27+0000\n" "Last-Translator: Launchpad Translations Administrators " "<rosetta@launchpad.net>\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" -"PO-Revision-Date: 2010-04-29 22:37+0000\n" +"POT-Creation-Date: 2010-08-05 03:24+0000\n" +"PO-Revision-Date: 2010-08-05 22:50+0000\n" "Last-Translator: Kjetil Birkeland Moe <kjetil@skifremme.com>\n" "Language-Team: Norwegian Bokmal <nb@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-08-07 03:51+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -542,17 +542,17 @@ msgstr "Lagring av fil mislyktes" #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:552 msgid "If you don't save, changes will be permanently lost." -msgstr "" +msgstr "Hvis du ikke lagrer vil endringene gå tapt." #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:594 msgid "Save current document?" -msgstr "" +msgstr "Lagre gjeldende dokument?" #. Button in dialog to create new document and discard unsaved document #: ../src/ui.c:596 msgid "Discard Changes" -msgstr "" +msgstr "Forkast endringer" #. Error message display when unable to preview image #: ../src/ui.c:949 @@ -608,6 +608,7 @@ msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Hans Rødtang https://launchpad.net/~hansrodtang\n" +" Kenneth Salvesen https://launchpad.net/~kesalves\n" " Kjetil Birkeland Moe https://launchpad.net/~kjetilbmoe\n" " Kåre Birger Lapstuen https://launchpad.net/~lapstue\n" " Mats Taraldsvik https://launchpad.net/~meastp" @@ -615,12 +616,12 @@ msgstr "" #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:1304 msgid "Save document before quitting?" -msgstr "" +msgstr "Lagre dokumentet før du avslutter?" #. Button in dialog to quit and discard unsaved document #: ../src/ui.c:1306 msgid "Quit without Saving" -msgstr "" +msgstr "Avslutt uten å lagre" #. Preferences dialog: Label for minimum resolution in resolution list #: ../src/ui.c:1448 @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" -"PO-Revision-Date: 2010-03-13 14:29+0000\n" -"Last-Translator: cumulus007 <cumulus0007@gmail.com>\n" +"POT-Creation-Date: 2010-08-07 06:51+0000\n" +"PO-Revision-Date: 2010-08-07 08:15+0000\n" +"Last-Translator: Hannie Dumoleyn <Unknown>\n" "Language-Team: Dutch <nl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-08-08 03:56+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -45,7 +45,7 @@ msgstr "Alle pagina's van in_voer" #. Combo box label for scanning the back side of a page #: ../data/simple-scan.ui.h:12 msgid "Back" -msgstr "" +msgstr "Terug" #: ../data/simple-scan.ui.h:13 msgid "Crop" @@ -58,12 +58,12 @@ msgstr "De geselecteerde pagina bijsnijden" #. Combo box label for scanning the front side of a page #: ../data/simple-scan.ui.h:16 msgid "Front" -msgstr "" +msgstr "Voor" #. Combo box label for scanning both sides of a page #: ../data/simple-scan.ui.h:18 msgid "Front and Back" -msgstr "" +msgstr "Voor- en achterzijde" #. Radio button for cropping to page to US legal size #: ../data/simple-scan.ui.h:20 @@ -77,7 +77,7 @@ msgstr "Nieuw" #. Label beside page size combo box #: ../data/simple-scan.ui.h:23 msgid "Page Size:" -msgstr "" +msgstr "Paginagrootte:" #. Combo box label for photo scan mode #: ../data/simple-scan.ui.h:25 @@ -126,7 +126,7 @@ msgstr "Opslaan" #. Tooltip for save toolbar button #: ../data/simple-scan.ui.h:42 msgid "Save document to a file" -msgstr "" +msgstr "Document naar een bestand opslaan" #. Scan menu item #: ../data/simple-scan.ui.h:44 @@ -146,7 +146,7 @@ msgstr "Scanner:" #. Label beside scan side combo box #: ../data/simple-scan.ui.h:50 msgid "Scan Side:" -msgstr "" +msgstr "Scangrootte:" #. Tooltip for scan toolbar button #: ../data/simple-scan.ui.h:52 @@ -280,7 +280,7 @@ msgstr "Map om bestanden in op te slaan" #: ../data/simple-scan.schemas.in.h:4 msgid "Height of paper in tenths of a mm" -msgstr "" +msgstr "Hoogte van het papier in tienden van een mm" #: ../data/simple-scan.schemas.in.h:5 msgid "Height of scanned image in pixels" @@ -288,7 +288,7 @@ msgstr "Hoogte van gescande afbeelding in pixels" #: ../data/simple-scan.schemas.in.h:6 msgid "Page side to scan" -msgstr "" +msgstr "Te scannen paginazijde" #: ../data/simple-scan.schemas.in.h:7 msgid "Resolution for photo scans" @@ -339,11 +339,15 @@ msgid "" "The height of the paper in tenths of a mm (or 0 for automatic paper " "detection)." msgstr "" +"De hoogte van het papier in tienden van een mm (of 0 voor automatische " +"papierdetectie)." #: ../data/simple-scan.schemas.in.h:16 msgid "" "The page side to scan. It can be one of the following: 'both' 'front' 'back'" msgstr "" +"De te scannen paginazijde. Het kan één van de volgende waarden bevatten: " +"'both' 'front' 'back'" #: ../data/simple-scan.schemas.in.h:17 msgid "The resolution in dots-per-inch of the previously scanned image." @@ -375,6 +379,8 @@ msgid "" "The width of the paper in tenths of a mm (or 0 for automatic paper " "detection)." msgstr "" +"De breedte van het papier in tienden van een mm (of 0 voor automatische " +"papierdetectie)." #: ../data/simple-scan.schemas.in.h:22 msgid "Type of document being scanned" @@ -391,7 +397,7 @@ msgstr "" #: ../data/simple-scan.schemas.in.h:24 msgid "Width of paper in tenths of a mm" -msgstr "" +msgstr "Breedte van het papier in tienden van een mm" #: ../data/simple-scan.schemas.in.h:25 msgid "Width of scanned image in pixels" @@ -548,17 +554,17 @@ msgstr "Bestand opslaan mislukt" #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:552 msgid "If you don't save, changes will be permanently lost." -msgstr "" +msgstr "Als u niet opslaat, zullen wijzigingen permanent verloren gaan." #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:594 msgid "Save current document?" -msgstr "" +msgstr "Huidige document opslaan?" #. Button in dialog to create new document and discard unsaved document #: ../src/ui.c:596 msgid "Discard Changes" -msgstr "" +msgstr "Wijzigingen negeren" #. Error message display when unable to preview image #: ../src/ui.c:949 @@ -616,24 +622,25 @@ msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Elco https://launchpad.net/~eajnab\n" +" Hannie Dumoleyn https://launchpad.net/~lafeber-dumoleyn\n" " Heureka https://launchpad.net/~jan-de-ridder\n" " Jeroen Hoek https://launchpad.net/~mail-jeroenhoek\n" " Martijn Bastiaan https://launchpad.net/~hmb1\n" " Michaël Van Dorpe https://launchpad.net/~michael-vandorpe\n" " Pascal Pieters https://launchpad.net/~pascalaldo\n" -" Sense Hofstede https://launchpad.net/~qense\n" +" Sense Hofstede https://launchpad.net/~sense\n" " SvenVranckx https://launchpad.net/~sven-vranckx\n" " cumulus007 https://launchpad.net/~cumulus-007" #. Text in dialog warning when a document is about to be lost #: ../src/ui.c:1304 msgid "Save document before quitting?" -msgstr "" +msgstr "Document opslaan voor afsluiten?" #. Button in dialog to quit and discard unsaved document #: ../src/ui.c:1306 msgid "Quit without Saving" -msgstr "" +msgstr "Afsluiten zonder opslaan" #. Preferences dialog: Label for minimum resolution in resolution list #: ../src/ui.c:1448 @@ -677,7 +684,7 @@ msgstr "_Scanner wijzigen" #. Combo box value for automatic paper size #: ../src/ui.c:1587 msgid "Automatic" -msgstr "" +msgstr "Automatisch" #: ../src/ui.c:1865 msgid "Scanned Document.pdf" @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-07 04:08+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-07-07 14:00+0000\n" "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n" "Language-Team: Polish <pl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-08 03:59+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-06-03 21:51+0000\n" "Last-Translator: Tiago <Unknown>\n" "Language-Team: Portuguese <pt@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch diff --git a/po/pt_BR.po b/po/pt_BR.po index 5df7478..fa573a1 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-02-28 21:55+0000\n" "Last-Translator: André Gondim <andregondim@ubuntu.com>\n" "Language-Team: Brazilian Portuguese <pt_BR@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-01-26 22:27+0000\n" "Last-Translator: Launchpad Translations Administrators " "<rosetta@launchpad.net>\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-04-10 14:59+0000\n" "Last-Translator: Alexandre Prokoudine <alexandre.prokoudine@gmail.com>\n" "Language-Team: Russian <ru@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-02-13 20:04+0000\n" "Last-Translator: Laco Gubík <Unknown>\n" "Language-Team: Slovak <sk@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-08 04:05+0000\n" -"PO-Revision-Date: 2010-07-10 20:01+0000\n" +"POT-Creation-Date: 2010-07-19 03:57+0000\n" +"PO-Revision-Date: 2010-07-26 06:12+0000\n" "Last-Translator: Andrej Znidarsic <andrej.znidarsic@gmail.com>\n" "Language-Team: Slovenian <sl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-11 03:47+0000\n" +"X-Launchpad-Export-Date: 2010-07-27 04:04+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -288,7 +288,7 @@ msgstr "Višina optično prebrane slike v točkah" #: ../data/simple-scan.schemas.in.h:6 msgid "Page side to scan" -msgstr "" +msgstr "Stran strani za optično branje" #: ../data/simple-scan.schemas.in.h:7 msgid "Resolution for photo scans" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-01-26 22:27+0000\n" "Last-Translator: Launchpad Translations Administrators " "<rosetta@launchpad.net>\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-06-27 08:29+0000\n" "Last-Translator: Daniel Nylander <yeager@ubuntu.com>\n" "Language-Team: Swedish <sv@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-01-26 22:27+0000\n" "Last-Translator: Launchpad Translations Administrators " "<rosetta@launchpad.net>\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-06-04 02:53+0000\n" "Last-Translator: Murat Bişkin <mbiskin@gmail.com>\n" "Language-Team: Turkish <tr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-13 03:56+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-01-26 22:27+0000\n" "Last-Translator: Launchpad Translations Administrators " "<rosetta@launchpad.net>\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch diff --git a/po/zh_CN.po b/po/zh_CN.po index 9c7254a..7a5e699 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: simple-scan\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-07-06 22:07+0000\n" +"POT-Creation-Date: 2010-07-11 04:04+0000\n" "PO-Revision-Date: 2010-06-13 05:56+0000\n" "Last-Translator: Xhacker Liu <liu.dongyuan@gmail.com>\n" "Language-Team: Chinese (Simplified) <zh_CN@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-07-07 03:46+0000\n" +"X-Launchpad-Export-Date: 2010-07-14 03:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Radio button for cropping page to 4x6 inch @@ -73,14 +73,13 @@ page_changed_cb (Page *page, Book *book) Page * -book_append_page (Book *book, gint width, gint height, gint dpi, Orientation orientation) +book_append_page (Book *book, gint width, gint height, gint dpi, ScanDirection scan_direction) { Page *page; - page = page_new (); - g_signal_connect (page, "image-changed", G_CALLBACK (page_changed_cb), book); + page = page_new (width, height, dpi, scan_direction); + g_signal_connect (page, "pixels-changed", G_CALLBACK (page_changed_cb), book); g_signal_connect (page, "crop-changed", G_CALLBACK (page_changed_cb), book); - page_setup (page, width, height, dpi, orientation); book->priv->pages = g_list_append (book->priv->pages, page); @@ -222,7 +221,7 @@ book_save_ps (Book *book, GFile *file, GError **error) double width, height; GdkPixbuf *image; - image = page_get_cropped_image (page); + image = page_get_image (page, TRUE); width = gdk_pixbuf_get_width (image) * 72.0 / page_get_dpi (page); height = gdk_pixbuf_get_height (image) * 72.0 / page_get_dpi (page); @@ -444,7 +443,7 @@ book_save_pdf (Book *book, GFile *file, GError **error) height = page_get_height (page); page_width = width * 72. / page_get_dpi (page); page_height = height * 72. / page_get_dpi (page); - image = page_get_cropped_image (page); + image = page_get_image (page, TRUE); pixels = gdk_pixbuf_get_pixels (image); if (page_is_color (page)) { @@ -470,13 +469,53 @@ book_save_pdf (Book *book, GFile *file, GError **error) } } } + else if (page_get_depth (page) == 2) { + int row, shift_count = 6; + guchar *write_ptr; + + depth = 2; + color_space = "DeviceGray"; + data_length = height * ((width * 2 + 7) / 8); + data = g_malloc (sizeof (guchar) * data_length); + write_ptr = data; + write_ptr[0] = 0; + for (row = 0; row < height; row++) { + int x; + guchar *in_line; + + /* Pad to the next line */ + if (shift_count != 6) { + write_ptr++; + write_ptr[0] = 0; + shift_count = 6; + } + + in_line = pixels + row * gdk_pixbuf_get_rowstride (image); + for (x = 0; x < width; x++) { + guchar *in_p = in_line + x*3; + if (in_p[0] >= 192) + write_ptr[0] |= 3 << shift_count; + else if (in_p[0] >= 128) + write_ptr[0] |= 2 << shift_count; + else if (in_p[0] >= 64) + write_ptr[0] |= 1 << shift_count; + if (shift_count == 0) { + write_ptr++; + write_ptr[0] = 0; + shift_count = 6; + } + else + shift_count -= 2; + } + } + } else if (page_get_depth (page) == 1) { - int row, offset = 7; + int row, mask = 0x80; guchar *write_ptr; depth = 1; color_space = "DeviceGray"; - data_length = (height * width + 7) / 8; + data_length = height * ((width + 7) / 8); data = g_malloc (sizeof (guchar) * data_length); write_ptr = data; write_ptr[0] = 0; @@ -484,16 +523,23 @@ book_save_pdf (Book *book, GFile *file, GError **error) int x; guchar *in_line; + /* Pad to the next line */ + if (mask != 0x80) { + write_ptr++; + write_ptr[0] = 0; + mask = 0x80; + } + in_line = pixels + row * gdk_pixbuf_get_rowstride (image); for (x = 0; x < width; x++) { guchar *in_p = in_line + x*3; - if (in_p[0]) - write_ptr[0] |= 1 << offset; - offset--; - if (offset < 0) { + if (in_p[0] != 0) + write_ptr[0] |= mask; + mask >>= 1; + if (mask == 0) { write_ptr++; write_ptr[0] = 0; - offset = 7; + mask = 0x80; } } } @@ -583,9 +629,9 @@ book_save_pdf (Book *book, GFile *file, GError **error) /* Page contents */ command = g_strdup_printf ("q\n" - "%d 0 0 %d 0 0 cm\n" + "%f 0 0 %f 0 0 cm\n" "/Im%d Do\n" - "Q", width, height, i); + "Q", page_width, page_height, i); pdf_printf (writer, "\n"); number = pdf_start_object (writer); pdf_printf (writer, "%d 0 obj\n", number); @@ -47,7 +47,7 @@ Book *book_new (void); void book_clear (Book *book); -Page *book_append_page (Book *book, gint width, gint height, gint dpi, Orientation orientation); +Page *book_append_page (Book *book, gint width, gint height, gint dpi, ScanDirection orientation); void book_delete_page (Book *book, Page *page); diff --git a/src/page-view.c b/src/page-view.c index 2c37fc2..40823f6 100644 --- a/src/page-view.c +++ b/src/page-view.c @@ -43,7 +43,7 @@ struct PageViewPrivate { /* Page being rendered */ Page *page; - + /* Image to render at current resolution */ GdkPixbuf *image; @@ -53,6 +53,9 @@ struct PageViewPrivate /* True if image needs to be regenerated */ gboolean update_image; + + /* Direction of currently scanned image */ + ScanDirection scan_direction; /* Next scan line to render */ gint scan_line; @@ -104,7 +107,8 @@ page_view_set_selected (PageView *view, gboolean selected) } -gboolean page_view_get_selected (PageView *view) +gboolean +page_view_get_selected (PageView *view) { g_return_val_if_fail (view != NULL, FALSE); return view->priv->selected; @@ -143,19 +147,92 @@ page_view_get_y_offset (PageView *view) } -static guchar * -get_pixel (guchar *input, gint rowstride, gint n_channels, gint x, gint y) +static guchar +get_sample (const guchar *line, gint x, gint depth, gint sample) +{ + // FIXME + return 0xFF; +} + + +static void +get_pixel (Page *page, gint x, gint y, guchar *pixel) { - return input + rowstride * y + x * n_channels; + gint t, depth, n_channels; + const guchar *p, *line; + + switch (page_get_scan_direction (page)) + { + case TOP_TO_BOTTOM: + break; + case BOTTOM_TO_TOP: + x = page_get_scan_width (page) - x; + y = page_get_scan_height (page) - y; + break; + case LEFT_TO_RIGHT: + t = x; + x = page_get_scan_width (page) - y; + y = t; + break; + case RIGHT_TO_LEFT: + t = x; + x = y; + y = page_get_scan_height (page) - t; + break; + } + + depth = page_get_depth (page); + n_channels = page_get_n_channels (page); + line = page_get_pixels (page) + page_get_rowstride (page) * y; + + /* Optimise for 8 bit images */ + if (depth == 8 && n_channels == 3) { + p = line + x * n_channels; + pixel[0] = p[0]; + pixel[1] = p[1]; + pixel[2] = p[2]; + return; + } + else if (depth == 8 && n_channels == 1) { + p = line + x; + pixel[0] = pixel[1] = pixel[2] = p[0]; + return; + } + + /* Optimise for bitmaps */ + else if (depth == 1 && n_channels == 1) { + p = line + (x / 8); + pixel[0] = pixel[1] = pixel[2] = p[0] & (0x80 >> (x % 8)) ? 0x00 : 0xFF; + return; + } + + /* Optimise for 2 bit images */ + else if (depth == 2 && n_channels == 1) { + gint sample; + gint block_shift[4] = { 6, 4, 2, 0 }; + + p = line + (x / 4); + sample = (p[0] >> block_shift[x % 4]) & 0x3; + sample = sample * 255 / 3; + + pixel[0] = pixel[1] = pixel[2] = sample; + return; + } + + /* Use slow method */ + pixel[0] = get_sample (line, x, depth, x * n_channels); + pixel[0] = get_sample (line, x, depth, x * n_channels + 1); + pixel[0] = get_sample (line, x, depth, x * n_channels + 2); } static void -set_pixel (guchar *input, gint rowstride, gint n_channels, +set_pixel (Page *page, double l, double r, double t, double b, guchar *pixel) { gint x, y; gint L, R, T, B; + guchar p[3]; double scale, red, green, blue; /* Decimation: @@ -225,7 +302,7 @@ set_pixel (guchar *input, gint rowstride, gint n_channels, if ((r - l <= 1.0 && (gint)r == (gint)l) || (b - t <= 1.0 && (gint)b == (gint)t)) { /* Inside */ if ((gint)l == (gint)r || (gint)t == (gint)b) { - guchar *p = get_pixel (input, rowstride, n_channels, (gint)l, (gint)t); + get_pixel (page, (gint)l, (gint)t, p); pixel[0] = p[0]; pixel[1] = p[1]; pixel[2] = p[2]; @@ -234,34 +311,34 @@ set_pixel (guchar *input, gint rowstride, gint n_channels, /* Stradling horizontal edge */ if (L > R) { - guchar *p = get_pixel (input, rowstride, n_channels, R, T-1); + get_pixel (page, R, T-1, p); red += p[0] * (r-l)*(T-t); green += p[1] * (r-l)*(T-t); blue += p[2] * (r-l)*(T-t); for (y = T; y < B; y++) { - guchar *p = get_pixel (input, rowstride, n_channels, R, y); + get_pixel (page, R, y, p); red += p[0] * (r-l); green += p[1] * (r-l); blue += p[2] * (r-l); } - p = get_pixel (input, rowstride, n_channels, R, B); + get_pixel (page, R, B, p); red += p[0] * (r-l)*(b-B); green += p[1] * (r-l)*(b-B); blue += p[2] * (r-l)*(b-B); } /* Stradling vertical edge */ else { - guchar *p = get_pixel (input, rowstride, n_channels, L - 1, B); + get_pixel (page, L - 1, B, p); red += p[0] * (b-t)*(L-l); green += p[1] * (b-t)*(L-l); blue += p[2] * (b-t)*(L-l); for (x = L; x < R; x++) { - guchar *p = get_pixel (input, rowstride, n_channels, x, B); + get_pixel (page, x, B, p); red += p[0] * (b-t); green += p[1] * (b-t); blue += p[2] * (b-t); } - p = get_pixel (input, rowstride, n_channels, R, B); + get_pixel (page, R, B, p); red += p[0] * (b-t)*(r-R); green += p[1] * (b-t)*(r-R); blue += p[2] * (b-t)*(r-R); @@ -277,7 +354,7 @@ set_pixel (guchar *input, gint rowstride, gint n_channels, /* Add the middle pixels */ for (x = L; x < R; x++) { for (y = T; y < B; y++) { - guchar *p = get_pixel (input, rowstride, n_channels, x, y); + get_pixel (page, x, y, p); red += p[0]; green += p[1]; blue += p[2]; @@ -287,14 +364,14 @@ set_pixel (guchar *input, gint rowstride, gint n_channels, /* Add the weighted top and bottom pixels */ for (x = L; x < R; x++) { if (t != T) { - guchar *p = get_pixel (input, rowstride, n_channels, x, T - 1); + get_pixel (page, x, T - 1, p); red += p[0] * (T - t); green += p[1] * (T - t); blue += p[2] * (T - t); } if (b != B) { - guchar *p = get_pixel (input, rowstride, n_channels, x, B); + get_pixel (page, x, B, p); red += p[0] * (b - B); green += p[1] * (b - B); blue += p[2] * (b - B); @@ -304,14 +381,14 @@ set_pixel (guchar *input, gint rowstride, gint n_channels, /* Add the left and right pixels */ for (y = T; y < B; y++) { if (l != L) { - guchar *p = get_pixel (input, rowstride, n_channels, L - 1, y); + get_pixel (page, L - 1, y, p); red += p[0] * (L - l); green += p[1] * (L - l); blue += p[2] * (L - l); } if (r != R) { - guchar *p = get_pixel (input, rowstride, n_channels, R, y); + get_pixel (page, R, y, p); red += p[0] * (r - R); green += p[1] * (r - R); blue += p[2] * (r - R); @@ -320,25 +397,25 @@ set_pixel (guchar *input, gint rowstride, gint n_channels, /* Add the corner pixels */ if (l != L && t != T) { - guchar *p = get_pixel (input, rowstride, n_channels, L - 1, T - 1); + get_pixel (page, L - 1, T - 1, p); red += p[0] * (L - l)*(T - t); green += p[1] * (L - l)*(T - t); blue += p[2] * (L - l)*(T - t); } if (r != R && t != T) { - guchar *p = get_pixel (input, rowstride, n_channels, R, T - 1); + get_pixel (page, R, T - 1, p); red += p[0] * (r - R)*(T - t); green += p[1] * (r - R)*(T - t); blue += p[2] * (r - R)*(T - t); } if (r != R && b != B) { - guchar *p = get_pixel (input, rowstride, n_channels, R, B); + get_pixel (page, R, B, p); red += p[0] * (r - R)*(b - B); green += p[1] * (r - R)*(b - B); blue += p[2] * (r - R)*(b - B); } if (l != L && b != B) { - guchar *p = get_pixel (input, rowstride, n_channels, L - 1, B); + get_pixel (page, L - 1, B, p); red += p[0] * (L - l)*(b - B); green += p[1] * (L - l)*(b - B); blue += p[2] * (L - l)*(b - B); @@ -353,23 +430,19 @@ set_pixel (guchar *input, gint rowstride, gint n_channels, static void -update_preview (GdkPixbuf *image, +update_preview (Page *page, GdkPixbuf **output_image, gint output_width, gint output_height, - Orientation orientation, gint old_scan_line, gint scan_line) + ScanDirection scan_direction, gint old_scan_line, gint scan_line) { - guchar *input, *output; + guchar *output; gint input_width, input_height; - gint input_rowstride, input_n_channels; gint output_rowstride, output_n_channels; gint x, y; gint L, R, T, B; - input = gdk_pixbuf_get_pixels (image); - input_width = gdk_pixbuf_get_width (image); - input_height = gdk_pixbuf_get_height (image); - input_rowstride = gdk_pixbuf_get_rowstride (image); - input_n_channels = gdk_pixbuf_get_n_channels (image); - + input_width = page_get_width (page); + input_height = page_get_height (page); + /* Create new image if one does not exist or has changed size */ if (!*output_image || gdk_pixbuf_get_width (*output_image) != output_width || @@ -381,7 +454,7 @@ update_preview (GdkPixbuf *image, 8, output_width, output_height); - + /* Update entire image */ L = 0; R = output_width - 1; @@ -390,7 +463,7 @@ update_preview (GdkPixbuf *image, } /* Otherwise only update changed area */ else { - switch (orientation) { + switch (scan_direction) { case TOP_TO_BOTTOM: L = 0; R = output_width - 1; @@ -432,15 +505,25 @@ update_preview (GdkPixbuf *image, g_return_if_fail (T >= 0); g_return_if_fail (B < output_height); g_return_if_fail (*output_image != NULL); - + output = gdk_pixbuf_get_pixels (*output_image); output_rowstride = gdk_pixbuf_get_rowstride (*output_image); output_n_channels = gdk_pixbuf_get_n_channels (*output_image); + + if (!page_has_data (page)) { + for (x = L; x <= R; x++) + for (y = T; y <= B; y++) { + guchar *pixel; + pixel = output + output_rowstride * y + x * output_n_channels; + pixel[0] = pixel[1] = pixel[2] = 0xFF; + } + return; + } /* Update changed area */ for (x = L; x <= R; x++) { double l, r; - + l = (double)x * input_width / output_width; r = (double)(x + 1) * input_width / output_width; @@ -450,9 +533,9 @@ update_preview (GdkPixbuf *image, t = (double)y * input_height / output_height; b = (double)(y + 1) * input_height / output_height; - set_pixel (input, input_rowstride, input_n_channels, + set_pixel (page, l, r, t, b, - get_pixel (output, output_rowstride, output_n_channels, x, y)); + output + output_rowstride * y + x * output_n_channels); } } } @@ -475,22 +558,27 @@ get_preview_height (PageView *view) static void update_page_view (PageView *view) { - GdkPixbuf *image; - gint old_scan_line, scan_line; + gint old_scan_line, scan_line, left_steps; if (!view->priv->update_image) return; - image = page_get_image (view->priv->page); old_scan_line = view->priv->scan_line; scan_line = page_get_scan_line (view->priv->page); - update_preview (image, + /* Delete old image if scan direction changed */ + left_steps = view->priv->scan_direction - page_get_scan_direction (view->priv->page); + if (left_steps && view->priv->image) { + g_object_unref (view->priv->image); + view->priv->image = NULL; + } + view->priv->scan_direction = page_get_scan_direction (view->priv->page); + + update_preview (view->priv->page, &view->priv->image, get_preview_width (view), get_preview_height (view), - page_get_orientation (view->priv->page), old_scan_line, scan_line); - g_object_unref (image); + page_get_scan_direction (view->priv->page), old_scan_line, scan_line); view->priv->update_image = FALSE; view->priv->scan_line = scan_line; @@ -844,18 +932,8 @@ page_view_render (PageView *view, cairo_t *context) /* Draw image */ cairo_translate (context, view->priv->border_width, view->priv->border_width); - if (view->priv->image) { - gdk_cairo_set_source_pixbuf (context, view->priv->image, 0, 0); - cairo_paint (context); - } - else { - cairo_scale (context, - (double) get_preview_width (view) / page_get_width (view->priv->page), - (double) get_preview_height (view) / page_get_height (view->priv->page)); - gdk_cairo_set_source_pixbuf (context, page_get_image (view->priv->page), 0, 0); - - cairo_paint (context); - } + gdk_cairo_set_source_pixbuf (context, view->priv->image, 0, 0); + cairo_paint (context); /* Draw throbber */ if (page_is_scanning (view->priv->page) && !page_has_data (view->priv->page)) { @@ -895,8 +973,8 @@ page_view_render (PageView *view, cairo_t *context) double x1, y1, x2, y2; scan_line = page_get_scan_line (view->priv->page); - - switch (page_get_orientation (view->priv->page)) { + + switch (page_get_scan_direction (view->priv->page)) { case TOP_TO_BOTTOM: s = page_to_screen_y (view, scan_line); x1 = 0; y1 = s + 0.5; @@ -1024,7 +1102,7 @@ page_view_get_height (PageView *view) static void -page_image_changed_cb (Page *p, PageView *view) +page_pixels_changed_cb (Page *p, PageView *view) { /* Regenerate image */ view->priv->update_image = TRUE; @@ -1050,16 +1128,27 @@ page_overlay_changed_cb (Page *p, PageView *view) static void +scan_direction_changed_cb (Page *p, PageView *view) +{ + /* Regenerate image */ + view->priv->update_image = TRUE; + g_signal_emit (view, signals[SIZE_CHANGED], 0); + g_signal_emit (view, signals[CHANGED], 0); +} + + +static void page_view_set_page (PageView *view, Page *page) { g_return_if_fail (view != NULL); g_return_if_fail (view->priv->page == NULL); view->priv->page = g_object_ref (page); - g_signal_connect (view->priv->page, "image-changed", G_CALLBACK (page_image_changed_cb), view); + g_signal_connect (view->priv->page, "pixels-changed", G_CALLBACK (page_pixels_changed_cb), view); g_signal_connect (view->priv->page, "size-changed", G_CALLBACK (page_size_changed_cb), view); g_signal_connect (view->priv->page, "crop-changed", G_CALLBACK (page_overlay_changed_cb), view); g_signal_connect (view->priv->page, "scan-line-changed", G_CALLBACK (page_overlay_changed_cb), view); + g_signal_connect (view->priv->page, "scan-direction-changed", G_CALLBACK (scan_direction_changed_cb), view); } @@ -12,12 +12,11 @@ #include <string.h> #include "page.h" - enum { - IMAGE_CHANGED, + PIXELS_CHANGED, SIZE_CHANGED, SCAN_LINE_CHANGED, - ORIENTATION_CHANGED, + SCAN_DIRECTION_CHANGED, CROP_CHANGED, LAST_SIGNAL }; @@ -29,7 +28,7 @@ struct PagePrivate gint dpi; /* Number of rows in this page or -1 if currently unknown */ - gint rows; + gint expected_rows; /* Bit depth */ gint depth; @@ -38,7 +37,8 @@ struct PagePrivate gchar *color_profile; /* Scanned image data */ - GdkPixbuf *image; + gint width, n_rows, rowstride, n_channels; + guchar *pixels; /* Page is getting data */ gboolean scanning; @@ -46,14 +46,11 @@ struct PagePrivate /* TRUE if have some page data */ gboolean has_data; - /* TRUE if have color data */ - gboolean is_color; - /* Expected next scan row */ gint scan_line; /* Rotation of scanned data */ - Orientation orientation; + ScanDirection scan_direction; /* Crop */ gboolean has_crop; @@ -65,67 +62,54 @@ G_DEFINE_TYPE (Page, page, G_TYPE_OBJECT); Page * -page_new () +page_new (gint width, gint height, gint dpi, ScanDirection scan_direction) { - return g_object_new (PAGE_TYPE, NULL); -} - - -void -page_setup (Page *page, gint width, gint height, gint dpi, Orientation orientation) -{ - page->priv->orientation = orientation; + Page *page; + + page = g_object_new (PAGE_TYPE, NULL); + if (scan_direction == TOP_TO_BOTTOM || scan_direction == BOTTOM_TO_TOP) { + page->priv->width = width; + page->priv->n_rows = height; + } + else { + page->priv->width = height; + page->priv->n_rows = width; + } page->priv->dpi = dpi; - if (orientation == LEFT_TO_RIGHT || orientation == RIGHT_TO_LEFT) - page->priv->rows = width; - else - page->priv->rows = height; - page->priv->image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, - 8, - width, - height); - g_return_if_fail (page->priv->image != NULL); - gdk_pixbuf_fill (page->priv->image, 0xFFFFFFFF); + page->priv->scan_direction = scan_direction; + + return page; } void -page_set_scan_area (Page *page, gint width, gint rows, gint dpi) +page_set_page_info (Page *page, ScanPageInfo *info) { - gint height; - g_return_if_fail (page != NULL); + page->priv->expected_rows = info->height; + page->priv->dpi = info->dpi; + + /* Create a white page */ + page->priv->width = info->width; + page->priv->n_rows = info->height; /* Variable height, try 50% of the width for now */ - if (rows < 0) - height = width / 2; + if (page->priv->n_rows < 0) + page->priv->n_rows = page->priv->width / 2; + page->priv->depth = info->depth; + page->priv->n_channels = info->n_channels; + page->priv->rowstride = (page->priv->width * page->priv->depth * page->priv->n_channels + 7) / 8; + page->priv->pixels = g_realloc (page->priv->pixels, page->priv->n_rows * page->priv->rowstride); + g_return_if_fail (page->priv->pixels != NULL); + + /* Fill with white */ + if (page->priv->depth == 1) + memset (page->priv->pixels, 0x00, page->priv->n_rows * page->priv->rowstride); else - height = rows; + memset (page->priv->pixels, 0xFF, page->priv->n_rows * page->priv->rowstride); - /* Rotate page */ - if (page->priv->orientation == LEFT_TO_RIGHT || page->priv->orientation == RIGHT_TO_LEFT) { - gint t; - t = width; - width = height; - height = t; - } - - page->priv->rows = rows; - page->priv->dpi = dpi; - - /* Create a white page */ - /* NOTE: Pixbuf only supports 8 bit RGB images */ - if (page->priv->image) - g_object_unref (page->priv->image); - page->priv->image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, - 8, - width, - height); - g_return_if_fail (page->priv->image != NULL); - - gdk_pixbuf_fill (page->priv->image, 0xFFFFFFFF); g_signal_emit (page, signals[SIZE_CHANGED], 0); - g_signal_emit (page, signals[IMAGE_CHANGED], 0); + g_signal_emit (page, signals[PIXELS_CHANGED], 0); } @@ -139,7 +123,8 @@ page_start (Page *page) } -gboolean page_is_scanning (Page *page) +gboolean +page_is_scanning (Page *page) { g_return_val_if_fail (page != NULL, FALSE); @@ -147,60 +132,24 @@ gboolean page_is_scanning (Page *page) } -static gint -get_sample (guchar *data, gint depth, gint index) -{ - gint i, offset, value, n_bits; - - /* Optimise if using 8 bit samples */ - if (depth == 8) - return data[index]; - - /* Bit offset for this sample */ - offset = depth * index; - - /* Get the remaining bits in the octet this sample starts in */ - i = offset / 8; - n_bits = 8 - offset % 8; - value = data[i] & (0xFF >> (8 - n_bits)); - - /* Add additional octets until get enough bits */ - while (n_bits < depth) { - value = value << 8 | data[i++]; - n_bits += 8; - } - - /* Trim remaining bits off */ - if (n_bits > depth) - value >>= n_bits - depth; - - return value; -} - - -gboolean page_has_data (Page *page) +gboolean +page_has_data (Page *page) { g_return_val_if_fail (page != NULL, FALSE); return page->priv->has_data; } -gboolean page_is_color (Page *page) +gboolean +page_is_color (Page *page) { g_return_val_if_fail (page != NULL, FALSE); - return page->priv->is_color; + return page->priv->n_channels > 1; } gint -page_get_depth (Page *page) -{ - g_return_val_if_fail (page != NULL, 0); - return page->priv->depth; -} - - -gint page_get_scan_line (Page *page) +page_get_scan_line (Page *page) { g_return_val_if_fail (page != NULL, -1); return page->priv->scan_line; @@ -208,126 +157,27 @@ gint page_get_scan_line (Page *page) static void -set_pixel (ScanLine *line, gint n, gint x, guchar *pixel) -{ - gint sample; - guchar *data; - - data = line->data + line->data_length * n; - - switch (line->format) { - case LINE_RGB: - pixel[0] = get_sample (data, line->depth, x*3) * 0xFF / ((1 << line->depth) - 1); - pixel[1] = get_sample (data, line->depth, x*3+1) * 0xFF / ((1 << line->depth) - 1); - pixel[2] = get_sample (data, line->depth, x*3+2) * 0xFF / ((1 << line->depth) - 1); - break; - case LINE_GRAY: - /* Bitmap, 0 = white, 1 = black */ - sample = get_sample (data, line->depth, x) * 0xFF / ((1 << line->depth) - 1); - if (line->depth == 1) - sample = sample ? 0x00 : 0xFF; - - pixel[0] = pixel[1] = pixel[2] = sample; - break; - case LINE_RED: - pixel[0] = get_sample (data, line->depth, x) * 0xFF / ((1 << line->depth) - 1); - break; - case LINE_GREEN: - pixel[1] = get_sample (data, line->depth, x) * 0xFF / ((1 << line->depth) - 1); - break; - case LINE_BLUE: - pixel[2] = get_sample (data, line->depth, x) * 0xFF / ((1 << line->depth) - 1); - break; - } -} - - -static void parse_line (Page *page, ScanLine *line, gint n, gboolean *size_changed) { - guchar *pixels; gint line_number; - gint i, x = 0, y = 0, x_step = 0, y_step = 0; - gint rowstride, n_channels; line_number = line->number + n; - if (line->format != LINE_GRAY) - page->priv->is_color = TRUE; - if (line->depth > page->priv->depth) - page->priv->depth = line->depth; - /* Extend image if necessary */ while (line_number >= page_get_scan_height (page)) { - GdkPixbuf *image; - gint height, width, new_width, new_height; + gint rows; /* Extend image */ - new_width = width = gdk_pixbuf_get_width (page->priv->image); - new_height = height = gdk_pixbuf_get_height (page->priv->image); - if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == BOTTOM_TO_TOP) { - new_height = height + width / 2; - g_debug("Extending image height from %d pixels to %d pixels", height, new_height); - } - else { - new_width = width + height / 2; - g_debug("Extending image width from %d pixels to %d pixels", width, new_width); - } - image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, - 8, new_width, new_height); - - /* Copy old data */ - gdk_pixbuf_fill (page->priv->image, 0xFFFFFFFF); - if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == LEFT_TO_RIGHT) - gdk_pixbuf_copy_area (page->priv->image, 0, 0, width, height, - image, 0, 0); - else - gdk_pixbuf_copy_area (page->priv->image, 0, 0, width, height, - image, new_width - width, new_height - height); - - g_object_unref (page->priv->image); - page->priv->image = image; + rows = page->priv->n_rows; + page->priv->n_rows = rows + page->priv->width / 2; + g_debug("Extending image from %d lines to %d lines", rows, page->priv->n_rows); + page->priv->pixels = g_realloc (page->priv->pixels, page->priv->n_rows * page->priv->rowstride); *size_changed = TRUE; } - - switch (page->priv->orientation) { - case TOP_TO_BOTTOM: - x = 0; - y = line_number; - x_step = 1; - y_step = 0; - break; - case BOTTOM_TO_TOP: - x = page_get_width (page) - 1; - y = page_get_height (page) - line_number - 1; - x_step = -1; - y_step = 0; - break; - case LEFT_TO_RIGHT: - x = line_number; - y = page_get_height (page) - 1; - x_step = 0; - y_step = -1; - break; - case RIGHT_TO_LEFT: - x = page_get_width (page) - line_number - 1; - y = 0; - x_step = 0; - y_step = 1; - break; - } - pixels = gdk_pixbuf_get_pixels (page->priv->image); - rowstride = gdk_pixbuf_get_rowstride (page->priv->image); - n_channels = gdk_pixbuf_get_n_channels (page->priv->image); - for (i = 0; i < line->width; i++) { - guchar *pixel; - - pixel = pixels + y * rowstride + x * n_channels; - set_pixel (line, n, i, pixel); - x += x_step; - y += y_step; - } + + /* Copy in new row */ + memcpy (page->priv->pixels + line_number * page->priv->rowstride, line->data + n * line->data_length, line->data_length); page->priv->scan_line = line_number; } @@ -349,7 +199,7 @@ page_parse_scan_line (Page *page, ScanLine *line) if (size_changed) g_signal_emit (page, signals[SIZE_CHANGED], 0); g_signal_emit (page, signals[SCAN_LINE_CHANGED], 0); - g_signal_emit (page, signals[IMAGE_CHANGED], 0); + g_signal_emit (page, signals[PIXELS_CHANGED], 0); } @@ -361,35 +211,15 @@ page_finish (Page *page) g_return_if_fail (page != NULL); /* Trim page */ - if (page->priv->rows < 0 && - page->priv->scan_line != gdk_pixbuf_get_height (page->priv->image)) { - GdkPixbuf *image; - gint width, height, new_width, new_height; - - new_width = width = gdk_pixbuf_get_width (page->priv->image); - new_height = height = gdk_pixbuf_get_height (page->priv->image); - if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == BOTTOM_TO_TOP) { - new_height = page->priv->scan_line; - g_debug("Trimming image height from %d pixels to %d pixels", height, new_height); - } - else { - new_width = page->priv->scan_line; - g_debug("Trimming image width from %d pixels to %d pixels", width, new_width); - } - image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, - 8, - new_width, new_height); - - /* Copy old data */ - if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == LEFT_TO_RIGHT) - gdk_pixbuf_copy_area (page->priv->image, 0, 0, width, height, - image, 0, 0); - else - gdk_pixbuf_copy_area (page->priv->image, width - new_width, height - new_height, width, height, - image, 0, 0); - - g_object_unref (page->priv->image); - page->priv->image = image; + if (page->priv->expected_rows < 0 && + page->priv->scan_line != page_get_scan_height (page)) { + gint rows; + + rows = page->priv->n_rows; + page->priv->n_rows = page->priv->scan_line; + page->priv->pixels = g_realloc (page->priv->pixels, page->priv->n_rows * page->priv->rowstride); + g_debug("Trimming page from %d lines to %d lines", rows, page->priv->n_rows); + size_changed = TRUE; } page->priv->scanning = FALSE; @@ -400,47 +230,36 @@ page_finish (Page *page) } -Orientation -page_get_orientation (Page *page) +ScanDirection +page_get_scan_direction (Page *page) { g_return_val_if_fail (page != NULL, TOP_TO_BOTTOM); - return page->priv->orientation; + return page->priv->scan_direction; } -void -page_set_orientation (Page *page, Orientation orientation) +static void +page_set_scan_direction (Page *page, ScanDirection scan_direction) { gint left_steps, t; - GdkPixbuf *image; gboolean size_changed = FALSE; gint width, height; g_return_if_fail (page != NULL); - if (page->priv->orientation == orientation) + if (page->priv->scan_direction == scan_direction) return; /* Work out how many times it has been rotated to the left */ - left_steps = orientation - page->priv->orientation; + left_steps = scan_direction - page->priv->scan_direction; if (left_steps < 0) left_steps += 4; + if (left_steps != 2) + size_changed = TRUE; width = page_get_width (page); height = page_get_height (page); - - /* Rotate image */ - if (left_steps == 1) - image = gdk_pixbuf_rotate_simple (page->priv->image, GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE); - else if (left_steps == 2) - image = gdk_pixbuf_rotate_simple (page->priv->image, GDK_PIXBUF_ROTATE_UPSIDEDOWN); - else - image = gdk_pixbuf_rotate_simple (page->priv->image, GDK_PIXBUF_ROTATE_CLOCKWISE); - g_object_unref (page->priv->image); - page->priv->image = image; - if (left_steps != 2) - size_changed = TRUE; /* Rotate crop */ if (page->priv->has_crop) { @@ -471,42 +290,42 @@ page_set_orientation (Page *page, Orientation orientation) } } - page->priv->orientation = orientation; + page->priv->scan_direction = scan_direction; if (size_changed) g_signal_emit (page, signals[SIZE_CHANGED], 0); - g_signal_emit (page, signals[IMAGE_CHANGED], 0); - g_signal_emit (page, signals[ORIENTATION_CHANGED], 0); - g_signal_emit (page, signals[CROP_CHANGED], 0); + g_signal_emit (page, signals[SCAN_DIRECTION_CHANGED], 0); + if (page->priv->has_crop) + g_signal_emit (page, signals[CROP_CHANGED], 0); } void page_rotate_left (Page *page) { - Orientation orientation; + ScanDirection scan_direction; g_return_if_fail (page != NULL); - orientation = page_get_orientation (page); - if (orientation == RIGHT_TO_LEFT) - orientation = TOP_TO_BOTTOM; + scan_direction = page_get_scan_direction (page); + if (scan_direction == RIGHT_TO_LEFT) + scan_direction = TOP_TO_BOTTOM; else - orientation++; - page_set_orientation (page, orientation); + scan_direction++; + page_set_scan_direction (page, scan_direction); } void page_rotate_right (Page *page) { - Orientation orientation; + ScanDirection scan_direction; - orientation = page_get_orientation (page); - if (orientation == TOP_TO_BOTTOM) - orientation = RIGHT_TO_LEFT; + scan_direction = page_get_scan_direction (page); + if (scan_direction == TOP_TO_BOTTOM) + scan_direction = RIGHT_TO_LEFT; else - orientation--; - page_set_orientation (page, orientation); + scan_direction--; + page_set_scan_direction (page, scan_direction); } @@ -530,7 +349,11 @@ gint page_get_width (Page *page) { g_return_val_if_fail (page != NULL, 0); - return gdk_pixbuf_get_width (page->priv->image); + + if (page->priv->scan_direction == TOP_TO_BOTTOM || page->priv->scan_direction == BOTTOM_TO_TOP) + return page->priv->width; + else + return page->priv->n_rows; } @@ -538,7 +361,33 @@ gint page_get_height (Page *page) { g_return_val_if_fail (page != NULL, 0); - return gdk_pixbuf_get_height (page->priv->image); + + if (page->priv->scan_direction == TOP_TO_BOTTOM || page->priv->scan_direction == BOTTOM_TO_TOP) + return page->priv->n_rows; + else + return page->priv->width; +} + + +gint +page_get_depth (Page *page) +{ + g_return_val_if_fail (page != NULL, 0); + return page->priv->depth; +} + + +gint page_get_n_channels (Page *page) +{ + g_return_val_if_fail (page != NULL, 0); + return page->priv->n_channels; +} + + +gint page_get_rowstride (Page *page) +{ + g_return_val_if_fail (page != NULL, 0); + return page->priv->rowstride; } @@ -547,10 +396,7 @@ page_get_scan_width (Page *page) { g_return_val_if_fail (page != NULL, 0); - if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == BOTTOM_TO_TOP) - return gdk_pixbuf_get_width (page->priv->image); - else - return gdk_pixbuf_get_height (page->priv->image); + return page->priv->width; } @@ -559,10 +405,7 @@ page_get_scan_height (Page *page) { g_return_val_if_fail (page != NULL, 0); - if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == BOTTOM_TO_TOP) - return gdk_pixbuf_get_height (page->priv->image); - else - return gdk_pixbuf_get_width (page->priv->image); + return page->priv->n_rows; } @@ -779,44 +622,136 @@ page_get_named_crop (Page *page) } -GdkPixbuf * -page_get_image (Page *page) +const guchar * +page_get_pixels (Page *page) { g_return_val_if_fail (page != NULL, NULL); - return g_object_ref (page->priv->image); + return page->priv->pixels; +} + + +// FIXME: Copied from page-view, should be shared code +static guchar +get_sample (const guchar *line, gint x, gint depth, gint n_channels, gint channel) +{ + // FIXME + return 0xFF; +} + + +// FIXME: Copied from page-view, should be shared code +static void +get_pixel (Page *page, gint x, gint y, guchar *pixel) +{ + gint t, depth, n_channels; + const guchar *p, *line; + + switch (page_get_scan_direction (page)) + { + case TOP_TO_BOTTOM: + break; + case BOTTOM_TO_TOP: + x = page_get_scan_width (page) - x; + y = page_get_scan_height (page) - y; + break; + case LEFT_TO_RIGHT: + t = x; + x = page_get_scan_width (page) - y; + y = t; + break; + case RIGHT_TO_LEFT: + t = x; + x = y; + y = page_get_scan_height (page) - t; + break; + } + + depth = page_get_depth (page); + n_channels = page_get_n_channels (page); + line = page_get_pixels (page) + page_get_rowstride (page) * y; + + /* Optimise for 8 bit images */ + if (depth == 8 && n_channels == 3) { + p = line + x * n_channels; + pixel[0] = p[0]; + pixel[1] = p[1]; + pixel[2] = p[2]; + return; + } + else if (depth == 8 && n_channels == 1) { + p = line + x; + pixel[0] = pixel[1] = pixel[2] = p[0]; + return; + } + + /* Optimise for bitmaps */ + else if (depth == 1 && n_channels == 1) { + p = line + (x / 8); + pixel[0] = pixel[1] = pixel[2] = p[0] & (0x80 >> (x % 8)) ? 0x00 : 0xFF; + return; + } + + /* Optimise for 2 bit images */ + else if (depth == 2 && n_channels == 1) { + gint sample; + gint block_shift[4] = { 6, 4, 2, 0 }; + + p = line + (x / 4); + sample = (p[0] >> block_shift[x % 4]) & 0x3; + sample = sample * 255 / 3; + + pixel[0] = pixel[1] = pixel[2] = sample; + return; + } + + /* Use slow method */ + pixel[0] = get_sample (line, x, depth, n_channels, 0); + pixel[0] = get_sample (line, x, depth, n_channels, 1); + pixel[0] = get_sample (line, x, depth, n_channels, 2); } GdkPixbuf * -page_get_cropped_image (Page *page) +page_get_image (Page *page, gboolean apply_crop) { - GdkPixbuf *image, *cropped_image; - gint x, y, w, h, pw, ph; + GdkPixbuf *image; + gint x, y, l, r, t, b; + + if (apply_crop && page->priv->has_crop) { + l = page->priv->crop_x; + r = l + page->priv->crop_width; + t = page->priv->crop_y; + b = l + page->priv->crop_height; + + if (l < 0) + l = 0; + if (r > page_get_width (page)) + r = page_get_width (page); + if (t < 0) + t = 0; + if (b > page_get_height (page)) + b = page_get_height (page); + } + else { + l = 0; + r = page_get_width (page); + t = 0; + b = page_get_height (page); + } - g_return_val_if_fail (page != NULL, NULL); + image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, r - l, b - t); - image = page_get_image (page); + for (y = t; y < b; y++) { + guchar *line = gdk_pixbuf_get_pixels (image) + gdk_pixbuf_get_rowstride (image) * (y - t); + for (x = l; x < r; x++) { + guchar *pixel; - if (!page->priv->has_crop) - return image; - - x = page->priv->crop_x; - y = page->priv->crop_y; - w = page->priv->crop_width; - h = page->priv->crop_height; - pw = gdk_pixbuf_get_width (image); - ph = gdk_pixbuf_get_height (image); - - /* Trim crop */ - if (x + w >= pw) - w = pw - x; - if (y + h >= ph) - h = ph - y; - - cropped_image = gdk_pixbuf_new_subpixbuf (image, x, y, w, h); - g_object_unref (image); + pixel = line + (x - l) * 3; + get_pixel (page, x, y, pixel); + } + } - return cropped_image; + return image; } @@ -864,7 +799,7 @@ page_save (Page *page, const gchar *type, GFile *file, GError **error) if (!stream) return FALSE; - image = page_get_cropped_image (page); + image = page_get_image (page, TRUE); if (page->priv->color_profile != NULL) icc_profile_data = get_icc_data_encoded (page->priv->color_profile); @@ -910,9 +845,7 @@ static void page_finalize (GObject *object) { Page *page = PAGE (object); - if (page->priv->image) - g_object_unref (page->priv->image); - page->priv->image = NULL; + g_free (page->priv->pixels); G_OBJECT_CLASS (page_parent_class)->finalize (object); } @@ -924,11 +857,11 @@ page_class_init (PageClass *klass) object_class->finalize = page_finalize; - signals[IMAGE_CHANGED] = - g_signal_new ("image-changed", + signals[PIXELS_CHANGED] = + g_signal_new ("pixels-changed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (PageClass, image_changed), + G_STRUCT_OFFSET (PageClass, pixels_changed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); @@ -948,11 +881,11 @@ page_class_init (PageClass *klass) NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - signals[ORIENTATION_CHANGED] = - g_signal_new ("orientation-changed", + signals[SCAN_DIRECTION_CHANGED] = + g_signal_new ("scan-direction-changed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (PageClass, orientation_changed), + G_STRUCT_OFFSET (PageClass, scan_direction_changed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); @@ -973,5 +906,5 @@ static void page_init (Page *page) { page->priv = G_TYPE_INSTANCE_GET_PRIVATE (page, PAGE_TYPE, PagePrivate); - page->priv->orientation = TOP_TO_BOTTOM; + page->priv->scan_direction = TOP_TO_BOTTOM; } @@ -28,7 +28,7 @@ typedef enum LEFT_TO_RIGHT, BOTTOM_TO_TOP, RIGHT_TO_LEFT -} Orientation; +} ScanDirection; typedef struct PagePrivate PagePrivate; @@ -43,31 +43,38 @@ typedef struct { GObjectClass parent_class; - void (*image_changed) (Page *page); + void (*pixels_changed) (Page *page); void (*size_changed) (Page *page); void (*scan_line_changed) (Page *page); - void (*orientation_changed) (Page *page); + void (*scan_direction_changed) (Page *page); void (*crop_changed) (Page *page); } PageClass; GType page_get_type (void); -Page *page_new (void); +Page *page_new (gint width, gint height, gint dpi, ScanDirection scan_direction); -// FIXME: Should be part of page_new -void page_setup (Page *page, gint width, gint height, gint dpi, Orientation orientation); - -void page_set_scan_area (Page *page, gint width, gint rows, gint dpi); +void page_set_page_info (Page *page, ScanPageInfo *info); gint page_get_dpi (Page *page); -gboolean page_is_landscape (Page *page); - gint page_get_width (Page *page); gint page_get_height (Page *page); +gint page_get_depth (Page *page); + +gint page_get_n_channels (Page *page); + +gint page_get_rowstride (Page *page); + +const guchar *page_get_pixels (Page *page); + +guchar *page_get_pixel (Page *page, gint x, gint y); + +gboolean page_is_landscape (Page *page); + gint page_get_scan_width (Page *page); gint page_get_scan_height (Page *page); @@ -84,17 +91,13 @@ gboolean page_has_data (Page *page); gboolean page_is_color (Page *page); -gint page_get_depth (Page *page); - gint page_get_scan_line (Page *page); void page_parse_scan_line (Page *page, ScanLine *line); void page_finish (Page *page); -Orientation page_get_orientation (Page *page); - -void page_set_orientation (Page *page, Orientation orientation); +ScanDirection page_get_scan_direction (Page *page); void page_rotate_left (Page *page); @@ -116,9 +119,7 @@ void page_get_crop (Page *page, gint *x, gint *y, gint *width, gint *height); gchar *page_get_named_crop (Page *page); -GdkPixbuf *page_get_image (Page *page); - -GdkPixbuf *page_get_cropped_image (Page *page); +GdkPixbuf *page_get_image (Page *page, gboolean apply_crop); gboolean page_save (Page *page, const gchar *type, GFile *file, GError **error); diff --git a/src/scanner.c b/src/scanner.c index 8383f9f..f4eb08f 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -1160,7 +1160,7 @@ do_get_option (Scanner *scanner) } else if (strcmp (option->name, "three-pass") == 0) { set_bool_option (scanner->priv->handle, option, option_index, FALSE, NULL); - } + } else if (strcmp (option->name, "test-picture") == 0) { set_string_option (scanner->priv->handle, option, option_index, "Color pattern", NULL); } @@ -1255,6 +1255,11 @@ do_get_parameters (Scanner *scanner) info->width = scanner->priv->parameters.pixels_per_line; info->height = scanner->priv->parameters.lines; info->depth = scanner->priv->parameters.depth; + /* Reduce bit depth if requested lower than received */ + // FIXME: This a hack and only works on 8 bit gray to 2 bit gray + if (scanner->priv->parameters.depth == 8 && scanner->priv->parameters.format == SANE_FRAME_GRAY && job->depth == 2 && job->scan_mode == SCAN_MODE_GRAY) + info->depth = job->depth; + info->n_channels = scanner->priv->parameters.format == SANE_FRAME_GRAY ? 1 : 3; info->dpi = job->dpi; // FIXME: This is the requested DPI, not the actual DPI info->device = g_strdup (scanner->priv->current_device); @@ -1308,10 +1313,13 @@ do_complete_page (Scanner *scanner) static void do_read (Scanner *scanner) { + ScanJob *job; SANE_Status status; SANE_Int n_to_read, n_read; gboolean full_read = FALSE; + job = (ScanJob *) scanner->priv->job_queue->data; + /* Read as many bytes as we expect */ n_to_read = scanner->priv->buffer_size - scanner->priv->n_used; @@ -1351,19 +1359,19 @@ do_read (Scanner *scanner) line = g_malloc(sizeof(ScanLine)); switch (scanner->priv->parameters.format) { case SANE_FRAME_GRAY: - line->format = LINE_GRAY; + line->channel = 0; break; case SANE_FRAME_RGB: - line->format = LINE_RGB; + line->channel = -1; break; case SANE_FRAME_RED: - line->format = LINE_RED; + line->channel = 0; break; case SANE_FRAME_GREEN: - line->format = LINE_GREEN; + line->channel = 1; break; case SANE_FRAME_BLUE: - line->format = LINE_BLUE; + line->channel = 2; break; } line->width = scanner->priv->parameters.pixels_per_line; @@ -1387,6 +1395,56 @@ do_read (Scanner *scanner) scanner->priv->buffer[i] = line->data[i + (line->n_lines * line->data_length)]; scanner->priv->n_used++; } + + /* Reduce bit depth if requested lower than received */ + // FIXME: This a hack and only works on 8 bit gray to 2 bit gray + if (scanner->priv->parameters.depth == 8 && scanner->priv->parameters.format == SANE_FRAME_GRAY && + job->depth == 2 && job->scan_mode == SCAN_MODE_GRAY) { + gint block_shift = 6; + guchar block = 0; + guchar *write_ptr = line->data; + + for (i = 0; i < line->n_lines; i++) { + guchar *in_line = line->data + i * line->data_length; + gint x; + + for (x = 0; x < line->width; x++) { + guchar *p = in_line + x; + guchar sample; + + if (p[0] >= 192) + sample = 3; + else if (p[0] >= 128) + sample = 2; + else if (p[0] >= 64) + sample = 1; + else + sample = 0; + + block |= sample << block_shift; + if (block_shift == 0) { + *write_ptr = block; + write_ptr++; + block = 0; + block_shift = 6; + } + else { + block_shift -= 2; + } + } + + /* Finish each line on a byte boundary */ + if (block_shift != 6) { + *write_ptr = block; + write_ptr++; + block = 0; + block_shift = 6; + } + } + + line->data_length = (line->width * 2 + 7) / 8; + } + emit_signal (scanner, GOT_LINE, line); } } diff --git a/src/scanner.h b/src/scanner.h index 5acdc84..72a4ffd 100644 --- a/src/scanner.h +++ b/src/scanner.h @@ -33,6 +33,9 @@ typedef struct /* Bit depth */ gint depth; + /* Number of colour channels */ + gint n_channels; + /* Resolution */ gdouble dpi; @@ -50,14 +53,9 @@ typedef struct /* Width in pixels and format */ gint width, depth; - enum - { - LINE_GRAY, - LINE_RGB, - LINE_RED, - LINE_GREEN, - LINE_BLUE - } format; + + /* Channel for this line or -1 for all channels */ + gint channel; /* Raw line data */ guchar *data; diff --git a/src/simple-scan.c b/src/simple-scan.c index 54236ae..bb7e036 100644 --- a/src/simple-scan.c +++ b/src/simple-scan.c @@ -86,7 +86,7 @@ static Page * append_page () { Page *page; - Orientation orientation = TOP_TO_BOTTOM; + ScanDirection scan_direction = TOP_TO_BOTTOM; gboolean do_crop = FALSE; gchar *named_crop = NULL; gint width = 100, height = 100, dpi = 100, cx, cy, cw, ch; @@ -101,7 +101,7 @@ append_page () /* Copy info from previous page */ if (page) { - orientation = page_get_orientation (page); + scan_direction = page_get_scan_direction (page); width = page_get_width (page); height = page_get_height (page); dpi = page_get_dpi (page); @@ -113,7 +113,7 @@ append_page () } } - page = book_append_page (book, width, height, dpi, orientation); + page = book_append_page (book, width, height, dpi, scan_direction); if (do_crop) { if (named_crop) { page_set_named_crop (page, named_crop); @@ -205,7 +205,7 @@ scanner_page_info_cb (Scanner *scanner, ScanPageInfo *info) /* Add a new page */ page = append_page (); - page_set_scan_area (page, info->width, info->height, info->dpi); + page_set_page_info (page, info); /* Get ICC color profile */ /* FIXME: The ICC profile could change */ @@ -70,7 +70,7 @@ struct SimpleScanPrivate BookView *book_view; gboolean updating_page_menu; gint default_page_width, default_page_height, default_page_dpi; - Orientation default_page_orientation; + ScanDirection default_page_scan_direction; gchar *document_hint; @@ -86,8 +86,8 @@ G_DEFINE_TYPE (SimpleScan, ui, G_TYPE_OBJECT); static struct { const gchar *key; - Orientation orientation; -} orientation_keys[] = + ScanDirection scan_direction; +} scan_direction_keys[] = { { "top-to-bottom", TOP_TO_BOTTOM }, { "bottom-to-top", BOTTOM_TO_TOP }, @@ -326,7 +326,7 @@ add_default_page (SimpleScan *ui) ui->priv->default_page_width, ui->priv->default_page_height, ui->priv->default_page_dpi, - ui->priv->default_page_orientation); + ui->priv->default_page_scan_direction); book_view_select_page (ui->priv->book_view, page); } @@ -742,11 +742,12 @@ get_scan_options (SimpleScan *ui) struct { const gchar *name; ScanMode mode; + gint depth; } profiles[] = { - { "text", SCAN_MODE_LINEART }, - { "photo", SCAN_MODE_COLOR }, - { NULL, SCAN_MODE_COLOR } + { "text", SCAN_MODE_GRAY, 2 }, + { "photo", SCAN_MODE_COLOR, 8 }, + { NULL, SCAN_MODE_COLOR, 8 } }; gint i; ScanOptions *options; @@ -757,7 +758,7 @@ get_scan_options (SimpleScan *ui) options = g_malloc0 (sizeof (ScanOptions)); options->scan_mode = profiles[i].mode; - options->depth = 8; + options->depth = profiles[i].depth; if (options->scan_mode == SCAN_MODE_COLOR) options->dpi = get_photo_dpi (ui); else @@ -1190,7 +1191,7 @@ draw_page (GtkPrintOperation *operation, gtk_print_context_get_dpi_x (print_context) / page_get_dpi (page), gtk_print_context_get_dpi_y (print_context) / page_get_dpi (page)); - image = page_get_cropped_image (page); + image = page_get_image (page, TRUE); gdk_cairo_set_source_pixbuf (context, image, 0, 0); cairo_paint (context); @@ -1324,9 +1325,9 @@ quit (SimpleScan *ui) gconf_client_set_int(ui->priv->client, GCONF_DIR "/window_height", ui->priv->window_height, NULL); gconf_client_set_bool(ui->priv->client, GCONF_DIR "/window_is_maximized", ui->priv->window_is_maximized, NULL); - for (i = 0; orientation_keys[i].key != NULL && orientation_keys[i].orientation != ui->priv->default_page_orientation; i++); - if (orientation_keys[i].key != NULL) - gconf_client_set_string(ui->priv->client, GCONF_DIR "/scan_direction", orientation_keys[i].key, NULL); + for (i = 0; scan_direction_keys[i].key != NULL && scan_direction_keys[i].scan_direction != ui->priv->default_page_scan_direction; i++); + if (scan_direction_keys[i].key != NULL) + gconf_client_set_string(ui->priv->client, GCONF_DIR "/scan_direction", scan_direction_keys[i].key, NULL); gconf_client_set_int (ui->priv->client, GCONF_DIR "/page_width", ui->priv->default_page_width, NULL); gconf_client_set_int (ui->priv->client, GCONF_DIR "/page_height", ui->priv->default_page_height, NULL); gconf_client_set_int (ui->priv->client, GCONF_DIR "/page_dpi", ui->priv->default_page_dpi, NULL); @@ -1408,9 +1409,9 @@ page_size_changed_cb (Page *page, SimpleScan *ui) static void -page_orientation_changed_cb (Page *page, SimpleScan *ui) +page_scan_direction_changed_cb (Page *page, SimpleScan *ui) { - ui->priv->default_page_orientation = page_get_orientation (page); + ui->priv->default_page_scan_direction = page_get_scan_direction (page); } @@ -1420,9 +1421,9 @@ page_added_cb (Book *book, Page *page, SimpleScan *ui) ui->priv->default_page_width = page_get_width (page); ui->priv->default_page_height = page_get_height (page); ui->priv->default_page_dpi = page_get_dpi (page); - ui->priv->default_page_orientation = page_get_orientation (page); + ui->priv->default_page_scan_direction = page_get_scan_direction (page); g_signal_connect (page, "size-changed", G_CALLBACK (page_size_changed_cb), ui); - g_signal_connect (page, "orientation-changed", G_CALLBACK (page_orientation_changed_cb), ui); + g_signal_connect (page, "scan-direction-changed", G_CALLBACK (page_scan_direction_changed_cb), ui); } @@ -1651,12 +1652,12 @@ ui_load (SimpleScan *ui) /* Find default page details */ scan_direction = gconf_client_get_string(ui->priv->client, GCONF_DIR "/scan_direction", NULL); - ui->priv->default_page_orientation = TOP_TO_BOTTOM; + ui->priv->default_page_scan_direction = TOP_TO_BOTTOM; if (scan_direction) { gint i; - for (i = 0; orientation_keys[i].key != NULL && strcmp (orientation_keys[i].key, scan_direction) != 0; i++); - if (orientation_keys[i].key != NULL) - ui->priv->default_page_orientation = orientation_keys[i].orientation; + for (i = 0; scan_direction_keys[i].key != NULL && strcmp (scan_direction_keys[i].key, scan_direction) != 0; i++); + if (scan_direction_keys[i].key != NULL) + ui->priv->default_page_scan_direction = scan_direction_keys[i].scan_direction; g_free (scan_direction); } ui->priv->default_page_width = gconf_client_get_int (ui->priv->client, GCONF_DIR "/page_width", NULL); |