diff -Nru ufraw-0.18/aclocal.m4 ufraw-0.19.1/aclocal.m4 --- ufraw-0.18/aclocal.m4 2011-02-19 07:51:43.000000000 +0200 +++ ufraw-0.19.1/aclocal.m4 2013-03-08 05:45:38.000000000 +0200 @@ -1,7 +1,8 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- +# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, +# Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -13,8 +14,8 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],, -[m4_warning([this file was generated for autoconf 2.67. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. 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'.])]) @@ -260,6 +261,10 @@ [CATOBJEXT=.mo DATADIRNAME=lib]) ;; + *-*-openbsd*) + CATOBJEXT=.mo + DATADIRNAME=share + ;; *) CATOBJEXT=.mo DATADIRNAME=lib @@ -480,7 +485,8 @@ # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) @@ -526,7 +532,8 @@ pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried @@ -574,9 +581,9 @@ AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD @@ -589,7 +596,7 @@ Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. -_PKG_TEXT])dnl +_PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) @@ -600,7 +607,7 @@ _PKG_TEXT -To get pkg-config, see .])dnl +To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS @@ -610,12 +617,15 @@ fi[]dnl ])# PKG_CHECK_MODULES -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software +# Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been @@ -625,7 +635,7 @@ [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.1], [], +m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -641,19 +651,21 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.1])dnl +[AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. @@ -735,14 +747,14 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 -# Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, +# 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 10 +# serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, @@ -782,6 +794,7 @@ # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -846,7 +859,7 @@ break fi ;; - msvisualcpp | msvcmsys) + msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. @@ -911,10 +924,13 @@ if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' + am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- @@ -997,18 +1013,6 @@ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, @@ -1148,12 +1152,15 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, +# Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. @@ -1285,12 +1292,15 @@ fi ]) -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, +# Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. @@ -1313,13 +1323,14 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software +# Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 +# serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- @@ -1327,13 +1338,13 @@ [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) -# ------------------------------ +# -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- +# ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) @@ -1409,13 +1420,13 @@ fi AC_MSG_RESULT(yes)]) -# Copyright (C) 2009 Free Software Foundation, Inc. +# Copyright (C) 2009, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 +# serial 2 # AM_SILENT_RULES([DEFAULT]) # -------------------------- @@ -1430,18 +1441,50 @@ no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac +dnl +dnl A few `make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using `$V' instead of `$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't @@ -1464,13 +1507,13 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006, 2008 Free Software Foundation, Inc. +# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 +# serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- @@ -1479,13 +1522,13 @@ AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- +# -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1507,10 +1550,11 @@ # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) diff -Nru ufraw-0.18/autogen.sh ufraw-0.19.1/autogen.sh --- ufraw-0.18/autogen.sh 2010-02-14 10:47:19.000000000 +0200 +++ ufraw-0.19.1/autogen.sh 2013-03-05 05:40:55.000000000 +0200 @@ -1,6 +1,6 @@ #!/bin/sh -# $Id: autogen.sh,v 1.4 2009/07/08 03:35:03 nkbj Exp $ +# $Id: autogen.sh,v 1.6 2013/01/08 17:00:08 nkbj Exp $ # Generate all autoconf/automake files, to prepare for running # configure from only the contents of CVS. @@ -15,8 +15,16 @@ # minimum version in Makefile.am and assuming that in 2006 the program # automake will be a modern version. -AUTOMAKE=automake-1.11 -ACLOCAL=aclocal-1.11 +AUTOMAKE=automake-1.13 +ACLOCAL=aclocal-1.13 +($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || { + AUTOMAKE=automake-1.12 + ACLOCAL=aclocal-1.12 +} +($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || { + AUTOMAKE=automake-1.11 + ACLOCAL=aclocal-1.11 +} ($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || { AUTOMAKE=automake-1.10 ACLOCAL=aclocal-1.10 diff -Nru ufraw-0.18/config.guess ufraw-0.19.1/config.guess --- ufraw-0.18/config.guess 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/config.guess 2010-02-14 10:49:10.000000000 +0200 @@ -161,6 +161,7 @@ arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched @@ -796,7 +797,7 @@ i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; - i*:MINGW*:*) + *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) @@ -1256,6 +1257,15 @@ SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; diff -Nru ufraw-0.18/config.h.in ufraw-0.19.1/config.h.in --- ufraw-0.18/config.h.in 2011-02-19 07:51:50.000000000 +0200 +++ ufraw-0.19.1/config.h.in 2013-03-08 05:45:45.000000000 +0200 @@ -42,6 +42,9 @@ /* have Gimp 2.6 or later */ #undef HAVE_GIMP_2_6 +/* have Gimp 2.9 or later */ +#undef HAVE_GIMP_2_9 + /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H @@ -57,6 +60,9 @@ /* have the cfitsio library */ #undef HAVE_LIBCFITSIO +/* Define to 1 if you have the `jasper' library (-ljasper). */ +#undef HAVE_LIBJASPER + /* Define to 1 if you have the `jpeg' library (-ljpeg). */ #undef HAVE_LIBJPEG @@ -132,6 +138,9 @@ /* Debugging with valgrind enabled */ #undef UFRAW_VALGRIND +/* FUJIFILM 'X-Trans' sensor support enabled */ +#undef UFRAW_X_TRANS + /* Version number of package */ #undef VERSION diff -Nru ufraw-0.18/config.sub ufraw-0.19.1/config.sub --- ufraw-0.18/config.sub 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/config.sub 2010-02-14 10:49:10.000000000 +0200 @@ -246,7 +246,7 @@ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ + | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ @@ -329,7 +329,7 @@ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ @@ -977,6 +977,9 @@ basic_machine=sh-hitachi os=-hms ;; + sh5el) + basic_machine=sh5le-unknown + ;; sh64) basic_machine=sh64-unknown ;; @@ -1280,7 +1283,7 @@ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1478,6 +1481,9 @@ m68*-cisco) os=-aout ;; + mep-*) + os=-elf + ;; mips*-cisco) os=-elf ;; diff -Nru ufraw-0.18/configure ufraw-0.19.1/configure --- ufraw-0.18/configure 2011-02-19 07:51:44.000000000 +0200 +++ ufraw-0.19.1/configure 2013-03-08 05:45:40.000000000 +0200 @@ -1,11 +1,9 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.67 for UFRaw 0.18. +# Generated by GNU Autoconf 2.69 for UFRaw 0.19.1. # # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -89,6 +87,7 @@ IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. +as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -133,6 +132,31 @@ # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh @@ -166,7 +190,8 @@ else exitcode=1; echo positional parameters were not saved. fi -test x\$exitcode = x0 || exit 1" +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && @@ -211,14 +236,25 @@ if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi if test x$as_have_required = xno; then : @@ -320,6 +356,14 @@ } # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take @@ -441,6 +485,10 @@ chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -475,16 +523,16 @@ # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' + as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -496,28 +544,8 @@ as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -549,8 +577,8 @@ # Identity of this package. PACKAGE_NAME='UFRaw' PACKAGE_TARNAME='ufraw' -PACKAGE_VERSION='0.18' -PACKAGE_STRING='UFRaw 0.18' +PACKAGE_VERSION='0.19.1' +PACKAGE_STRING='UFRaw 0.19.1' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -644,6 +672,8 @@ MAKE_GTK_TRUE CINEPAINT_LIBS CINEPAINT_CFLAGS +GIMP_2_9_LIBS +GIMP_2_9_CFLAGS GIMP_2_6_LIBS GIMP_2_6_CFLAGS GIMP_LIBS @@ -676,6 +706,7 @@ am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE +am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE @@ -691,6 +722,8 @@ CC AM_BACKSLASH AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V am__untar am__tar AMTAR @@ -775,6 +808,7 @@ enable_extras enable_dst_correction enable_contrast +enable_x_trans enable_interp_none enable_valgrind ' @@ -805,6 +839,8 @@ GIMP_LIBS GIMP_2_6_CFLAGS GIMP_2_6_LIBS +GIMP_2_9_CFLAGS +GIMP_2_9_LIBS CINEPAINT_CFLAGS CINEPAINT_LIBS LIBPNG_CFLAGS @@ -1219,7 +1255,7 @@ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac @@ -1270,8 +1306,6 @@ 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 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1357,7 +1391,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures UFRaw 0.18 to adapt to many kinds of systems. +\`configure' configures UFRaw 0.19.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1427,7 +1461,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of UFRaw 0.18:";; + short | recursive ) echo "Configuration of UFRaw 0.19.1:";; esac cat <<\_ACEOF @@ -1444,6 +1478,7 @@ --enable-extras build extra (dcraw, nikon-curve) executables --enable-dst-correction enable DST correction for file timestamps --enable-contrast enable the contrast setting option + --enable-x-trans enable support for the FUJIFILM 'X-Trans' sensor --enable-interp-none enable 'None' interpolation (mostly for debugging) --enable-valgrind enable debugging with valgrind @@ -1489,6 +1524,10 @@ C compiler flags for GIMP_2_6, overriding pkg-config GIMP_2_6_LIBS linker flags for GIMP_2_6, overriding pkg-config + GIMP_2_9_CFLAGS + C compiler flags for GIMP_2_9, overriding pkg-config + GIMP_2_9_LIBS + linker flags for GIMP_2_9, overriding pkg-config CINEPAINT_CFLAGS C compiler flags for CINEPAINT, overriding pkg-config CINEPAINT_LIBS @@ -1574,10 +1613,10 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -UFRaw configure 0.18 -generated by GNU Autoconf 2.67 +UFRaw configure 0.19.1 +generated by GNU Autoconf 2.69 -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1621,7 +1660,7 @@ ac_retval=1 fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile @@ -1659,7 +1698,7 @@ ac_retval=1 fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile @@ -1696,7 +1735,7 @@ ac_retval=1 fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp @@ -1728,7 +1767,7 @@ test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext + test -x conftest$ac_exeext }; then : ac_retval=0 else @@ -1742,7 +1781,7 @@ # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link @@ -1755,7 +1794,7 @@ 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 eval "test \"\${$3+set}\"" = set; then : +if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -1810,7 +1849,7 @@ eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func @@ -1822,10 +1861,10 @@ ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval "test \"\${$3+set}\"" = set; then : + if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } -if eval "test \"\${$3+set}\"" = set; then : +if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 @@ -1888,7 +1927,7 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } -if eval "test \"\${$3+set}\"" = set; then : +if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" @@ -1897,7 +1936,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel @@ -1938,7 +1977,7 @@ ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run @@ -1952,7 +1991,7 @@ 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 eval "test \"\${$3+set}\"" = set; then : +if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -1970,15 +2009,15 @@ eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by UFRaw $as_me 0.18, which was -generated by GNU Autoconf 2.67. Invocation command line was +It was created by UFRaw $as_me 0.19.1, which was +generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2236,7 +2275,7 @@ || { { $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 ; } +See \`config.log' for more details" "$LINENO" 5; } fi done @@ -2363,7 +2402,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } -if test "${ac_cv_build+set}" = set; then : +if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias @@ -2379,7 +2418,7 @@ $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' @@ -2397,7 +2436,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } -if test "${ac_cv_host+set}" = set; then : +if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then @@ -2412,7 +2451,7 @@ $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' @@ -2448,7 +2487,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then : +if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2468,7 +2507,7 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -2535,11 +2574,11 @@ ' 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 @@ -2625,7 +2664,7 @@ set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then : +if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then @@ -2637,7 +2676,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2665,7 +2704,7 @@ set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then @@ -2677,7 +2716,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2718,7 +2757,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if test "${ac_cv_path_mkdir+set}" = set; then : + if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2728,7 +2767,7 @@ test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ @@ -2769,7 +2808,7 @@ set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then : +if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then @@ -2781,7 +2820,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2809,7 +2848,7 @@ $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 eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then : +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF @@ -2867,7 +2906,7 @@ # Define the identity of the package. PACKAGE='ufraw' - VERSION='0.18' + VERSION='0.19.1' cat >>confdefs.h <<_ACEOF @@ -2897,11 +2936,11 @@ # We need awk for the "check" target. The system "awk" is bad on # some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' @@ -2917,6 +2956,33 @@ no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi AM_BACKSLASH='\' ac_config_headers="$ac_config_headers config.h" @@ -2931,7 +2997,7 @@ set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : +if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then @@ -2943,7 +3009,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2971,7 +3037,7 @@ set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : +if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then @@ -2983,7 +3049,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3024,7 +3090,7 @@ set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : +if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then @@ -3036,7 +3102,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3064,7 +3130,7 @@ set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : +if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then @@ -3077,7 +3143,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -3123,7 +3189,7 @@ set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : +if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then @@ -3135,7 +3201,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3167,7 +3233,7 @@ set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : +if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then @@ -3179,7 +3245,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3222,7 +3288,7 @@ 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 ; } +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 @@ -3337,7 +3403,7 @@ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -3380,7 +3446,7 @@ { { $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 ; } +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 @@ -3439,7 +3505,7 @@ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 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 @@ -3450,7 +3516,7 @@ ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } -if test "${ac_cv_objext+set}" = set; then : +if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -3491,7 +3557,7 @@ { { $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 ; } +See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi @@ -3501,7 +3567,7 @@ ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then : +if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -3538,7 +3604,7 @@ ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then : +if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag @@ -3616,7 +3682,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then : +if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no @@ -3625,8 +3691,7 @@ /* end confdefs.h. */ #include #include -#include -#include +struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -3762,6 +3827,7 @@ if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' + am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= @@ -3777,7 +3843,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : +if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then @@ -3786,6 +3852,7 @@ # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -3845,7 +3912,7 @@ break fi ;; - msvisualcpp | msvcmsys) + msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. @@ -3916,7 +3983,7 @@ set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CXX+set}" = set; then : +if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then @@ -3928,7 +3995,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3960,7 +4027,7 @@ set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : +if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then @@ -3972,7 +4039,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4038,7 +4105,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : +if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4075,7 +4142,7 @@ ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } -if test "${ac_cv_prog_cxx_g+set}" = set; then : +if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag @@ -4161,7 +4228,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } -if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then : +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then @@ -4170,6 +4237,7 @@ # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -4229,7 +4297,7 @@ break fi ;; - msvisualcpp | msvcmsys) + msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. @@ -4296,7 +4364,7 @@ CPP= fi if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then : + if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded @@ -4412,7 +4480,7 @@ { { $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 ; } +See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c @@ -4427,7 +4495,7 @@ set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then : +if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then @@ -4439,7 +4507,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4467,7 +4535,7 @@ set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then @@ -4479,7 +4547,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4521,7 +4589,7 @@ set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_POD2MAN+set}" = set; then : +if ${ac_cv_prog_POD2MAN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$POD2MAN"; then @@ -4533,7 +4601,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_POD2MAN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4563,7 +4631,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } -if test "${ac_cv_sys_largefile_source+set}" = set; then : +if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 else while :; do @@ -4643,10 +4711,10 @@ # default CFLAGS, CXXFLAGS for GCC in case they were not set by the user. if test "$GCC" = "yes"; then if test "$ac_test_CFLAGS" != "set"; then - CFLAGS="-W -Wall -g -O3 -ffast-math -fomit-frame-pointer -D_FORTIFY_SOURCE=2 $UFRAW_MARCH" + CFLAGS="-W -Wall -g -O3 -fomit-frame-pointer -D_FORTIFY_SOURCE=2 $UFRAW_MARCH" fi if test "$ac_test_CXXFLAGS" != "set"; then - CXXFLAGS="-W -Wall -g -O3 -ffast-math -fomit-frame-pointer -D_FORTIFY_SOURCE=2 $UFRAW_MARCH" + CXXFLAGS="-W -Wall -g -O3 -fomit-frame-pointer -D_FORTIFY_SOURCE=2 $UFRAW_MARCH" fi fi @@ -4661,7 +4729,7 @@ if test "$enable_openmp" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to support OpenMP" >&5 $as_echo_n "checking for $CC option to support OpenMP... " >&6; } -if test "${ac_cv_prog_c_openmp+set}" = set; then : +if ${ac_cv_prog_c_openmp+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4678,7 +4746,8 @@ ac_cv_prog_c_openmp='none needed' else ac_cv_prog_c_openmp='unsupported' - for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp; do + for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ + -Popenmp --openmp; do ac_save_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $ac_option" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4809,13 +4878,14 @@ + if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : +if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in @@ -4829,7 +4899,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4858,7 +4928,7 @@ set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in @@ -4872,7 +4942,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4937,6 +5007,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.12 gthread-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -4953,6 +5024,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.12 gthread-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -4972,9 +5044,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-2.0 >= 2.12 gthread-2.0" 2>&1` + GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.12 gthread-2.0" 2>&1` else - GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-2.0 >= 2.12 gthread-2.0" 2>&1` + GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.12 gthread-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 @@ -5003,7 +5075,7 @@ See the pkg-config man page for more details. To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } else GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS GLIB_LIBS=$pkg_cv_GLIB_LIBS @@ -5026,6 +5098,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LCMS_CFLAGS=`$PKG_CONFIG --cflags "lcms >= 1.14" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5042,6 +5115,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LCMS_LIBS=`$PKG_CONFIG --libs "lcms >= 1.14" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5061,9 +5135,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LCMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "lcms >= 1.14" 2>&1` + LCMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lcms >= 1.14" 2>&1` else - LCMS_PKG_ERRORS=`$PKG_CONFIG --print-errors "lcms >= 1.14" 2>&1` + LCMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lcms >= 1.14" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LCMS_PKG_ERRORS" >&5 @@ -5092,7 +5166,7 @@ See the pkg-config man page for more details. To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } else LCMS_CFLAGS=$pkg_cv_LCMS_CFLAGS LCMS_LIBS=$pkg_cv_LCMS_LIBS @@ -5127,6 +5201,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKBASE_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.12" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5143,6 +5218,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKBASE_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.12" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5162,9 +5238,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GTKBASE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.12" 2>&1` + GTKBASE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0 >= 2.12" 2>&1` else - GTKBASE_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.12" 2>&1` + GTKBASE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0 >= 2.12" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKBASE_PKG_ERRORS" >&5 @@ -5174,7 +5250,7 @@ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-gtk was given, but test for gtk failed -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi elif test $pkg_failed = untried; then @@ -5185,7 +5261,7 @@ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-gtk was given, but test for gtk failed -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi else @@ -5215,6 +5291,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtkimageview >= 1.6" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5231,6 +5308,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtkimageview >= 1.6" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5250,9 +5328,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtkimageview >= 1.6" 2>&1` + GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtkimageview >= 1.6" 2>&1` else - GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtkimageview >= 1.6" 2>&1` + GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtkimageview >= 1.6" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK_PKG_ERRORS" >&5 @@ -5281,7 +5359,7 @@ See the pkg-config man page for more details. To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } else GTK_CFLAGS=$pkg_cv_GTK_CFLAGS GTK_LIBS=$pkg_cv_GTK_LIBS @@ -5324,6 +5402,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GIMP_CFLAGS=`$PKG_CONFIG --cflags "gimpui-2.0 >= 2.2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5340,6 +5419,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GIMP_LIBS=`$PKG_CONFIG --libs "gimpui-2.0 >= 2.2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5359,9 +5439,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GIMP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gimpui-2.0 >= 2.2.0" 2>&1` + GIMP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gimpui-2.0 >= 2.2.0" 2>&1` else - GIMP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gimpui-2.0 >= 2.2.0" 2>&1` + GIMP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gimpui-2.0 >= 2.2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GIMP_PKG_ERRORS" >&5 @@ -5372,7 +5452,7 @@ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-gimp was given, but test for gimp failed -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi elif test $pkg_failed = untried; then @@ -5384,7 +5464,7 @@ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-gimp was given, but test for gimp failed -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi else @@ -5412,6 +5492,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GIMP_2_6_CFLAGS=`$PKG_CONFIG --cflags "gimpui-2.0 >= 2.6.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5428,6 +5509,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GIMP_2_6_LIBS=`$PKG_CONFIG --libs "gimpui-2.0 >= 2.6.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5447,9 +5529,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GIMP_2_6_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gimpui-2.0 >= 2.6.0" 2>&1` + GIMP_2_6_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gimpui-2.0 >= 2.6.0" 2>&1` else - GIMP_2_6_PKG_ERRORS=`$PKG_CONFIG --print-errors "gimpui-2.0 >= 2.6.0" 2>&1` + GIMP_2_6_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gimpui-2.0 >= 2.6.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GIMP_2_6_PKG_ERRORS" >&5 @@ -5478,6 +5560,89 @@ _ACEOF fi + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIMP_2_9" >&5 +$as_echo_n "checking for GIMP_2_9... " >&6; } + +if test -n "$GIMP_2_9_CFLAGS"; then + pkg_cv_GIMP_2_9_CFLAGS="$GIMP_2_9_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gimpui-2.0 >= 2.9.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gimpui-2.0 >= 2.9.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GIMP_2_9_CFLAGS=`$PKG_CONFIG --cflags "gimpui-2.0 >= 2.9.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GIMP_2_9_LIBS"; then + pkg_cv_GIMP_2_9_LIBS="$GIMP_2_9_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gimpui-2.0 >= 2.9.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gimpui-2.0 >= 2.9.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GIMP_2_9_LIBS=`$PKG_CONFIG --libs "gimpui-2.0 >= 2.9.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GIMP_2_9_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gimpui-2.0 >= 2.9.0" 2>&1` + else + GIMP_2_9_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gimpui-2.0 >= 2.9.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GIMP_2_9_PKG_ERRORS" >&5 + + +cat >>confdefs.h <<_ACEOF +#define HAVE_GIMP_2_9 0 +_ACEOF + +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +cat >>confdefs.h <<_ACEOF +#define HAVE_GIMP_2_9 0 +_ACEOF + +else + GIMP_2_9_CFLAGS=$pkg_cv_GIMP_2_9_CFLAGS + GIMP_2_9_LIBS=$pkg_cv_GIMP_2_9_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +cat >>confdefs.h <<_ACEOF +#define HAVE_GIMP_2_9 1 +_ACEOF + +fi fi @@ -5505,6 +5670,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CINEPAINT_CFLAGS=`$PKG_CONFIG --cflags "cinepaint-gtk >= 0.22" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5521,6 +5687,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CINEPAINT_LIBS=`$PKG_CONFIG --libs "cinepaint-gtk >= 0.22" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -5540,9 +5707,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - CINEPAINT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "cinepaint-gtk >= 0.22" 2>&1` + CINEPAINT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cinepaint-gtk >= 0.22" 2>&1` else - CINEPAINT_PKG_ERRORS=`$PKG_CONFIG --print-errors "cinepaint-gtk >= 0.22" 2>&1` + CINEPAINT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cinepaint-gtk >= 0.22" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$CINEPAINT_PKG_ERRORS" >&5 @@ -5554,7 +5721,7 @@ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-cinepaint was given, but test for cinepaint failed -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi elif test $pkg_failed = untried; then @@ -5567,7 +5734,7 @@ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--with-cinepaint was given, but test for cinepaint failed -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi else @@ -5641,7 +5808,7 @@ # in at least most BSD libcs. If not found, search for it in libgnugetopt. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getopt_long" >&5 $as_echo_n "checking for library containing getopt_long... " >&6; } -if test "${ac_cv_search_getopt_long+set}" = set; then : +if ${ac_cv_search_getopt_long+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS @@ -5675,11 +5842,11 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test "${ac_cv_search_getopt_long+set}" = set; then : + if ${ac_cv_search_getopt_long+:} false; then : break fi done -if test "${ac_cv_search_getopt_long+set}" = set; then : +if ${ac_cv_search_getopt_long+:} false; then : else ac_cv_search_getopt_long=no @@ -5706,7 +5873,7 @@ # Make sure that pow is available, trying libm if necessary. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pow" >&5 $as_echo_n "checking for library containing pow... " >&6; } -if test "${ac_cv_search_pow+set}" = set; then : +if ${ac_cv_search_pow+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS @@ -5740,11 +5907,11 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if test "${ac_cv_search_pow+set}" = set; then : + if ${ac_cv_search_pow+:} false; then : break fi done -if test "${ac_cv_search_pow+set}" = set; then : +if ${ac_cv_search_pow+:} false; then : else ac_cv_search_pow=no @@ -5763,7 +5930,7 @@ for ac_func in canonicalize_file_name do : ac_fn_c_check_func "$LINENO" "canonicalize_file_name" "ac_cv_func_canonicalize_file_name" -if test "x$ac_cv_func_canonicalize_file_name" = x""yes; then : +if test "x$ac_cv_func_canonicalize_file_name" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_CANONICALIZE_FILE_NAME 1 _ACEOF @@ -5774,7 +5941,7 @@ for ac_func in memmem do : ac_fn_c_check_func "$LINENO" "memmem" "ac_cv_func_memmem" -if test "x$ac_cv_func_memmem" = x""yes; then : +if test "x$ac_cv_func_memmem" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MEMMEM 1 _ACEOF @@ -5786,7 +5953,7 @@ # Check for zlib. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5 $as_echo_n "checking for deflate in -lz... " >&6; } -if test "${ac_cv_lib_z_deflate+set}" = set; then : +if ${ac_cv_lib_z_deflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -5820,7 +5987,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5 $as_echo "$ac_cv_lib_z_deflate" >&6; } -if test "x$ac_cv_lib_z_deflate" = x""yes; then : +if test "x$ac_cv_lib_z_deflate" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF @@ -5834,7 +6001,7 @@ # Check for libbz2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzReadOpen in -lbz2" >&5 $as_echo_n "checking for BZ2_bzReadOpen in -lbz2... " >&6; } -if test "${ac_cv_lib_bz2_BZ2_bzReadOpen+set}" = set; then : +if ${ac_cv_lib_bz2_BZ2_bzReadOpen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -5868,7 +6035,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzReadOpen" >&5 $as_echo "$ac_cv_lib_bz2_BZ2_bzReadOpen" >&6; } -if test "x$ac_cv_lib_bz2_BZ2_bzReadOpen" = x""yes; then : +if test "x$ac_cv_lib_bz2_BZ2_bzReadOpen" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBBZ2 1 _ACEOF @@ -5882,7 +6049,7 @@ # Check for jpeg headers and library. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if test "${ac_cv_path_GREP+set}" = set; then : +if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then @@ -5896,7 +6063,7 @@ for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -5945,7 +6112,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then : +if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 @@ -5962,7 +6129,7 @@ for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -6012,7 +6179,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } -if test "${ac_cv_header_stdc+set}" = set; then : +if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6140,10 +6307,10 @@ ac_fn_c_check_header_mongrel "$LINENO" "jpeglib.h" "ac_cv_header_jpeglib_h" "$ac_includes_default" -if test "x$ac_cv_header_jpeglib_h" = x""yes; then : +if test "x$ac_cv_header_jpeglib_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_CreateCompress in -ljpeg" >&5 $as_echo_n "checking for jpeg_CreateCompress in -ljpeg... " >&6; } -if test "${ac_cv_lib_jpeg_jpeg_CreateCompress+set}" = set; then : +if ${ac_cv_lib_jpeg_jpeg_CreateCompress+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -6177,7 +6344,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_CreateCompress" >&5 $as_echo "$ac_cv_lib_jpeg_jpeg_CreateCompress" >&6; } -if test "x$ac_cv_lib_jpeg_jpeg_CreateCompress" = x""yes; then : +if test "x$ac_cv_lib_jpeg_jpeg_CreateCompress" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBJPEG 1 _ACEOF @@ -6191,12 +6358,60 @@ have_jpeg=${ac_cv_lib_jpeg_jpeg_CreateCompress:-no} +# Check for libjasper. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jas_image_decode in -ljasper" >&5 +$as_echo_n "checking for jas_image_decode in -ljasper... " >&6; } +if ${ac_cv_lib_jasper_jas_image_decode+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ljasper $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char jas_image_decode (); +int +main () +{ +return jas_image_decode (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_jasper_jas_image_decode=yes +else + ac_cv_lib_jasper_jas_image_decode=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jasper_jas_image_decode" >&5 +$as_echo "$ac_cv_lib_jasper_jas_image_decode" >&6; } +if test "x$ac_cv_lib_jasper_jas_image_decode" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBJASPER 1 +_ACEOF + + LIBS="-ljasper $LIBS" + +fi + +have_jasper=${ac_cv_lib_jasper_jas_image_decode:-no} + # Check for tiff headers and library. ac_fn_c_check_header_mongrel "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default" -if test "x$ac_cv_header_tiffio_h" = x""yes; then : +if test "x$ac_cv_header_tiffio_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFSetErrorHandler in -ltiff" >&5 $as_echo_n "checking for TIFFSetErrorHandler in -ltiff... " >&6; } -if test "${ac_cv_lib_tiff_TIFFSetErrorHandler+set}" = set; then : +if ${ac_cv_lib_tiff_TIFFSetErrorHandler+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -6230,7 +6445,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFSetErrorHandler" >&5 $as_echo "$ac_cv_lib_tiff_TIFFSetErrorHandler" >&6; } -if test "x$ac_cv_lib_tiff_TIFFSetErrorHandler" = x""yes; then : +if test "x$ac_cv_lib_tiff_TIFFSetErrorHandler" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBTIFF 1 _ACEOF @@ -6259,6 +6474,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBPNG_CFLAGS=`$PKG_CONFIG --cflags "libpng" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -6275,6 +6491,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBPNG_LIBS=`$PKG_CONFIG --libs "libpng" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -6294,9 +6511,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LIBPNG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libpng" 2>&1` + LIBPNG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpng" 2>&1` else - LIBPNG_PKG_ERRORS=`$PKG_CONFIG --print-errors "libpng" 2>&1` + LIBPNG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpng" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBPNG_PKG_ERRORS" >&5 @@ -6336,6 +6553,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CFITSIO_CFLAGS=`$PKG_CONFIG --cflags "cfitsio" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -6352,6 +6570,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CFITSIO_LIBS=`$PKG_CONFIG --libs "cfitsio" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -6371,9 +6590,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - CFITSIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "cfitsio" 2>&1` + CFITSIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cfitsio" 2>&1` else - CFITSIO_PKG_ERRORS=`$PKG_CONFIG --print-errors "cfitsio" 2>&1` + CFITSIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cfitsio" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$CFITSIO_PKG_ERRORS" >&5 @@ -6407,12 +6626,13 @@ pkg_cv_EXIV2_CFLAGS="$EXIV2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"exiv2 >= 0.18.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "exiv2 >= 0.18.1") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"exiv2 >= 0.20\""; } >&5 + ($PKG_CONFIG --exists --print-errors "exiv2 >= 0.20") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_EXIV2_CFLAGS=`$PKG_CONFIG --cflags "exiv2 >= 0.18.1" 2>/dev/null` + pkg_cv_EXIV2_CFLAGS=`$PKG_CONFIG --cflags "exiv2 >= 0.20" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -6423,12 +6643,13 @@ pkg_cv_EXIV2_LIBS="$EXIV2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"exiv2 >= 0.18.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "exiv2 >= 0.18.1") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"exiv2 >= 0.20\""; } >&5 + ($PKG_CONFIG --exists --print-errors "exiv2 >= 0.20") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_EXIV2_LIBS=`$PKG_CONFIG --libs "exiv2 >= 0.18.1" 2>/dev/null` + pkg_cv_EXIV2_LIBS=`$PKG_CONFIG --libs "exiv2 >= 0.20" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -6448,9 +6669,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - EXIV2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "exiv2 >= 0.18.1" 2>&1` + EXIV2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "exiv2 >= 0.20" 2>&1` else - EXIV2_PKG_ERRORS=`$PKG_CONFIG --print-errors "exiv2 >= 0.18.1" 2>&1` + EXIV2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "exiv2 >= 0.20" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$EXIV2_PKG_ERRORS" >&5 @@ -6490,6 +6711,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LENSFUN_CFLAGS=`$PKG_CONFIG --cflags "lensfun >= 0.2.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -6506,6 +6728,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LENSFUN_LIBS=`$PKG_CONFIG --libs "lensfun >= 0.2.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -6525,9 +6748,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LENSFUN_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "lensfun >= 0.2.5" 2>&1` + LENSFUN_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lensfun >= 0.2.5" 2>&1` else - LENSFUN_PKG_ERRORS=`$PKG_CONFIG --print-errors "lensfun >= 0.2.5" 2>&1` + LENSFUN_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lensfun >= 0.2.5" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LENSFUN_PKG_ERRORS" >&5 @@ -6567,7 +6790,7 @@ set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_WINDRES+set}" = set; then : +if ${ac_cv_prog_WINDRES+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$WINDRES"; then @@ -6579,7 +6802,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_WINDRES="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6635,7 +6858,7 @@ for ac_header in locale.h do : ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" -if test "x$ac_cv_header_locale_h" = x""yes; then : +if test "x$ac_cv_header_locale_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LOCALE_H 1 _ACEOF @@ -6647,7 +6870,7 @@ if test $ac_cv_header_locale_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } -if test "${am_cv_val_LC_MESSAGES+set}" = set; then : +if ${am_cv_val_LC_MESSAGES+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6687,7 +6910,7 @@ INTLLIBS= ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" -if test "x$ac_cv_header_libintl_h" = x""yes; then : +if test "x$ac_cv_header_libintl_h" = xyes; then : gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" @@ -6696,7 +6919,7 @@ # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 $as_echo_n "checking for ngettext in libc... " >&6; } -if test "${gt_cv_func_ngettext_libc+set}" = set; then : +if ${gt_cv_func_ngettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6727,7 +6950,7 @@ if test "$gt_cv_func_ngettext_libc" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 $as_echo_n "checking for dgettext in libc... " >&6; } -if test "${gt_cv_func_dgettext_libc+set}" = set; then : +if ${gt_cv_func_dgettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6760,7 +6983,7 @@ for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" -if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then : +if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF @@ -6779,7 +7002,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } -if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then : +if ${ac_cv_lib_intl_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -6813,10 +7036,10 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } -if test "x$ac_cv_lib_intl_bindtextdomain" = x""yes; then : +if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } -if test "${ac_cv_lib_intl_ngettext+set}" = set; then : +if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -6850,10 +7073,10 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } -if test "x$ac_cv_lib_intl_ngettext" = x""yes; then : +if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 $as_echo_n "checking for dgettext in -lintl... " >&6; } -if test "${ac_cv_lib_intl_dgettext+set}" = set; then : +if ${ac_cv_lib_intl_dgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -6887,7 +7110,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 $as_echo "$ac_cv_lib_intl_dgettext" >&6; } -if test "x$ac_cv_lib_intl_dgettext" = x""yes; then : +if test "x$ac_cv_lib_intl_dgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes fi @@ -6903,7 +7126,7 @@ $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } -if test "${ac_cv_lib_intl_ngettext+set}" = set; then : +if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -6937,10 +7160,10 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } -if test "x$ac_cv_lib_intl_ngettext" = x""yes; then : +if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 $as_echo_n "checking for dcgettext in -lintl... " >&6; } -if test "${ac_cv_lib_intl_dcgettext+set}" = set; then : +if ${ac_cv_lib_intl_dcgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -6974,7 +7197,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; } -if test "x$ac_cv_lib_intl_dcgettext" = x""yes; then : +if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else @@ -6999,7 +7222,7 @@ for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" -if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then : +if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF @@ -7037,7 +7260,7 @@ set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_MSGFMT+set}" = set; then : +if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in @@ -7074,7 +7297,7 @@ for ac_func in dcgettext do : ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" -if test "x$ac_cv_func_dcgettext" = x""yes; then : +if test "x$ac_cv_func_dcgettext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF @@ -7115,7 +7338,7 @@ set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_GMSGFMT+set}" = set; then : +if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in @@ -7129,7 +7352,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7156,7 +7379,7 @@ set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_XGETTEXT+set}" = set; then : +if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in @@ -7207,7 +7430,7 @@ case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" -if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then : +if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : CATOBJEXT=.gmo DATADIRNAME=share else @@ -7216,6 +7439,10 @@ fi ;; + *-*-openbsd*) + CATOBJEXT=.mo + DATADIRNAME=share + ;; *) CATOBJEXT=.mo DATADIRNAME=lib @@ -7411,6 +7638,20 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_contrast" >&5 $as_echo "$enable_contrast" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable support for the FUJIFILM 'X-Trans' sensor" >&5 +$as_echo_n "checking whether to enable support for the FUJIFILM 'X-Trans' sensor... " >&6; } +# Check whether --enable-x_trans was given. +if test "${enable_x_trans+set}" = set; then : + enableval=$enable_x_trans; +$as_echo "#define UFRAW_X_TRANS 1" >>confdefs.h + +else + enable_x_trans=no +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_x_trans" >&5 +$as_echo "$enable_x_trans" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable 'None' interpolation" >&5 $as_echo_n "checking whether to enable 'None' interpolation... " >&6; } # Check whether --enable-interp_none was given. @@ -7511,10 +7752,21 @@ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && + if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} @@ -7590,7 +7842,7 @@ Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -: ${CONFIG_STATUS=./config.status} +: "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" @@ -7691,6 +7943,7 @@ IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. +as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -7886,16 +8139,16 @@ # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' + as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -7955,28 +8208,16 @@ as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -7997,8 +8238,8 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by UFRaw $as_me 0.18, which was -generated by GNU Autoconf 2.67. Invocation command line was +This file was extended by UFRaw $as_me 0.19.1, which was +generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -8063,11 +8304,11 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -UFRaw config.status 0.18 -configured by $0, generated by GNU Autoconf 2.67, +UFRaw config.status 0.19.1 +configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -8158,7 +8399,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' @@ -8201,7 +8442,7 @@ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "ufraw-setup.iss") CONFIG_FILES="$CONFIG_FILES ufraw-setup.iss" ;; - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -8224,9 +8465,10 @@ # after its creation but before its name has been assigned to `$tmp'. $debug || { - tmp= + tmp= ac_tmp= trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } @@ -8234,12 +8476,13 @@ { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" + test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. @@ -8261,7 +8504,7 @@ ac_cs_awk_cr=$ac_cr fi -echo 'BEGIN {' >"$tmp/subs1.awk" && +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF @@ -8289,7 +8532,7 @@ rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h @@ -8337,7 +8580,7 @@ rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK -cat >>"\$tmp/subs1.awk" <<_ACAWK && +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" @@ -8369,7 +8612,7 @@ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat -fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF @@ -8403,7 +8646,7 @@ # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then -cat >"$tmp/defines.awk" <<\_ACAWK || +cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF @@ -8415,8 +8658,8 @@ # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do - ac_t=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_t"; then + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 @@ -8517,7 +8760,7 @@ 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 @@ -8536,7 +8779,7 @@ for ac_f do case $ac_f in - -) ac_f="$tmp/stdin";; + -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. @@ -8545,7 +8788,7 @@ [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "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'" @@ -8571,8 +8814,8 @@ esac case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac @@ -8708,21 +8951,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 +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || 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"; } && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_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 $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;} - rm -f "$tmp/stdin" + rm -f "$ac_tmp/stdin" case $ac_file in - -) cat "$tmp/out" && rm -f "$tmp/out";; - *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; @@ -8733,20 +8977,20 @@ if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" - } >"$tmp/config.h" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" - mv "$tmp/config.h" "$ac_file" \ + mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. @@ -8941,6 +9185,8 @@ $as_echo "$as_me: EXIF support using exiv2: $have_exiv2" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: JPEG support: $have_jpeg" >&5 $as_echo "$as_me: JPEG support: $have_jpeg" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: JPEG2000 (libjasper) support: $have_jasper" >&5 +$as_echo "$as_me: JPEG2000 (libjasper) support: $have_jasper" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: TIFF support: $have_tiff" >&5 $as_echo "$as_me: TIFF support: $have_tiff" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: PNG support: $have_png" >&5 diff -Nru ufraw-0.18/configure.ac ufraw-0.19.1/configure.ac --- ufraw-0.18/configure.ac 2010-11-21 04:52:25.000000000 +0200 +++ ufraw-0.19.1/configure.ac 2013-03-08 05:44:06.000000000 +0200 @@ -1,5 +1,5 @@ -dnl $Id: configure.ac,v 1.158 2010/11/15 01:04:15 udifuchs Exp $ -AC_INIT(UFRaw, 0.18) +dnl $Id: configure.ac,v 1.166 2013/03/06 05:03:33 udifuchs Exp $ +AC_INIT(UFRaw, 0.19.1) AC_PREREQ(2.57) # Create host_os, host_cpu variables @@ -7,7 +7,7 @@ AM_INIT_AUTOMAKE m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) -AM_CONFIG_HEADER(config.h) +AC_CONFIG_HEADERS(config.h) AC_PROG_CC AC_PROG_CXX AC_PROG_CPP @@ -33,10 +33,10 @@ # default CFLAGS, CXXFLAGS for GCC in case they were not set by the user. if test "$GCC" = "yes"; then if test "$ac_test_CFLAGS" != "set"; then - CFLAGS="-W -Wall -g -O3 -ffast-math -fomit-frame-pointer -D_FORTIFY_SOURCE=2 $UFRAW_MARCH" + CFLAGS="-W -Wall -g -O3 -fomit-frame-pointer -D_FORTIFY_SOURCE=2 $UFRAW_MARCH" fi if test "$ac_test_CXXFLAGS" != "set"; then - CXXFLAGS="-W -Wall -g -O3 -ffast-math -fomit-frame-pointer -D_FORTIFY_SOURCE=2 $UFRAW_MARCH" + CXXFLAGS="-W -Wall -g -O3 -fomit-frame-pointer -D_FORTIFY_SOURCE=2 $UFRAW_MARCH" fi fi @@ -160,6 +160,9 @@ PKG_CHECK_MODULES(GIMP_2_6, gimpui-2.0 >= 2.6.0, [ AC_DEFINE_UNQUOTED(HAVE_GIMP_2_6, 1, have Gimp 2.6 or later) ], [ AC_DEFINE_UNQUOTED(HAVE_GIMP_2_6, 0, have Gimp 2.6 or later) ]) + PKG_CHECK_MODULES(GIMP_2_9, gimpui-2.0 >= 2.9.0, + [ AC_DEFINE_UNQUOTED(HAVE_GIMP_2_9, 1, have Gimp 2.9 or later) ], + [ AC_DEFINE_UNQUOTED(HAVE_GIMP_2_9, 0, have Gimp 2.9 or later) ]) fi AC_ARG_WITH([cinepaint], @@ -235,6 +238,10 @@ AC_CHECK_LIB(jpeg, jpeg_CreateCompress)) have_jpeg=${ac_cv_lib_jpeg_jpeg_CreateCompress:-no} +# Check for libjasper. +AC_CHECK_LIB(jasper, jas_image_decode) +have_jasper=${ac_cv_lib_jasper_jas_image_decode:-no} + # Check for tiff headers and library. AC_CHECK_HEADER(tiffio.h, AC_CHECK_LIB(tiff, TIFFSetErrorHandler)) @@ -252,7 +259,7 @@ [ have_cfitsio=no AC_MSG_RESULT($CFITSIO_PKG_ERRORS) ] ) -PKG_CHECK_MODULES(EXIV2, exiv2 >= 0.18.1, +PKG_CHECK_MODULES(EXIV2, exiv2 >= 0.20, [ have_exiv2=yes AC_DEFINE(HAVE_EXIV2, 1, have the exiv2 library) ], [ have_exiv2=no @@ -339,6 +346,13 @@ enable_contrast=no) AC_MSG_RESULT($enable_contrast) +AC_MSG_CHECKING(whether to enable support for the FUJIFILM 'X-Trans' sensor) +AC_ARG_ENABLE(x_trans, + [ --enable-x-trans enable support for the FUJIFILM 'X-Trans' sensor], + AC_DEFINE(UFRAW_X_TRANS, 1, FUJIFILM 'X-Trans' sensor support enabled), + enable_x_trans=no) +AC_MSG_RESULT($enable_x_trans) + AC_MSG_CHECKING(whether to enable 'None' interpolation) AC_ARG_ENABLE(interp_none, [ --enable-interp-none enable 'None' interpolation (mostly for debugging)], @@ -365,6 +379,7 @@ AC_MSG_NOTICE(build CinePaint plug-in: $have_cinepaint) AC_MSG_NOTICE(EXIF support using exiv2: $have_exiv2) AC_MSG_NOTICE(JPEG support: $have_jpeg) +AC_MSG_NOTICE(JPEG2000 (libjasper) support: $have_jasper) AC_MSG_NOTICE(TIFF support: $have_tiff) AC_MSG_NOTICE(PNG support: $have_png) AC_MSG_NOTICE(FITS support: $have_cfitsio) diff -Nru ufraw-0.18/curveeditor_widget.c ufraw-0.19.1/curveeditor_widget.c --- ufraw-0.18/curveeditor_widget.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/curveeditor_widget.c 2013-03-05 05:40:55.000000000 +0200 @@ -1,6 +1,6 @@ /*************************************************** * curveeditor_widget.c - a curve editor widget for GTK+ - * Copyright 2004-2011 by Shawn Freeman, Udi Fuchs + * Copyright 2004-2013 by Shawn Freeman, Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -245,8 +245,8 @@ data->selectedPoint = -1; for (i = 0; i < curve->m_numAnchors; i++) { - if (abs(event->x - curve->m_anchors[i].x*(w - 1)) < 7 && - abs(event->y - (1 - pow(curve->m_anchors[i].y, g))*(h - 1)) < 7) { + if (abs(event->x - curve->m_anchors[i].x * (w - 1)) < 7 && + abs(event->y - (1 - pow(curve->m_anchors[i].y, g)) * (h - 1)) < 7) { data->selectedPoint = i; break; } @@ -259,7 +259,7 @@ if (data->selectedPoint == -1 && !curveeditor_point_exists(curve, -1, x) && x > curve->m_anchors[0].x && - x < curve->m_anchors[curve->m_numAnchors-1].x) { + x < curve->m_anchors[curve->m_numAnchors - 1].x) { //add point int num = curve->m_numAnchors; @@ -352,7 +352,7 @@ if (!curveeditor_point_exists(curve, data->selectedPoint, x) && (data->selectedPoint == 0 || x > curve->m_anchors[0].x) && (data->selectedPoint == curve->m_numAnchors - 1 || - x < curve->m_anchors[curve->m_numAnchors-1].x)) { + x < curve->m_anchors[curve->m_numAnchors - 1].x)) { CurveDataSetPoint(curve, data->selectedPoint, x, y); curveeditor_widget_draw(data); @@ -380,7 +380,7 @@ if (event->keyval == GDK_Insert) { if (data->selectedPoint >= curve->m_numAnchors - 1) return TRUE; if (curve->m_numAnchors >= NIKON_MAX_ANCHORS) return TRUE; - if ((curve->m_anchors[data->selectedPoint+1].x - + if ((curve->m_anchors[data->selectedPoint + 1].x - curve->m_anchors[data->selectedPoint].x) < 2.0 / (w - 1)) return TRUE; @@ -393,7 +393,7 @@ //Add the point at the end - it will be sorted later anyway curve->m_anchors[curve->m_numAnchors].x = (curve->m_anchors[data->selectedPoint].x + - curve->m_anchors[data->selectedPoint+1].x) / 2; + curve->m_anchors[data->selectedPoint + 1].x) / 2; curve->m_anchors[curve->m_numAnchors].y = (double)sample->m_Samples[(int)(curve->m_anchors[ curve->m_numAnchors].x * (w))] / (h - 1); @@ -487,7 +487,7 @@ if (x > 1.0) x = 1.0; // Update point only if it does not override the next one if (data->selectedPoint == curve->m_numAnchors - 1 || - x < curve->m_anchors[data->selectedPoint+1].x - 0.5 / (w - 1)) { + x < curve->m_anchors[data->selectedPoint + 1].x - 0.5 / (w - 1)) { CurveDataSetPoint(curve, data->selectedPoint, x, y); } } @@ -497,7 +497,7 @@ if (x < 0.0) x = 0.0; // Update point only if it does not override the previous one if (data->selectedPoint == 0 || - x > curve->m_anchors[data->selectedPoint-1].x + 0.5 / (w - 1)) { + x > curve->m_anchors[data->selectedPoint - 1].x + 0.5 / (w - 1)) { CurveDataSetPoint(curve, data->selectedPoint, x, y); } } diff -Nru ufraw-0.18/curveeditor_widget.h ufraw-0.19.1/curveeditor_widget.h --- ufraw-0.18/curveeditor_widget.h 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/curveeditor_widget.h 2013-03-05 05:40:55.000000000 +0200 @@ -1,6 +1,6 @@ /*************************************************** * curveeditor_widget.h - a curve editor widget for GTK+ - * Copyright 2004-2011 by Shawn Freeman, Udi Fuchs + * Copyright 2004-2013 by Shawn Freeman, Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -Nru ufraw-0.18/dcraw_api.cc ufraw-0.19.1/dcraw_api.cc --- ufraw-0.18/dcraw_api.cc 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/dcraw_api.cc 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * dcraw_api.cc - API for DCRaw - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * based on dcraw by Dave Coffin * http://www.cybercom.net/~dcoffin/ @@ -34,10 +34,8 @@ #define FORC3 FORC(3) #define FORC4 FORC(4) #define FORCC FORC(colors) -#define FC(filters,row,col) \ - (filters >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3) extern "C" { - int fc_INDI(const unsigned filters, const int row, const int col); + int fcol_INDI(const unsigned filters, const int row, const int col); void wavelet_denoise_INDI(gushort(*image)[4], const int black, const int iheight, const int iwidth, const int height, const int width, const int colors, const int shrink, const float pre_mul[4], @@ -93,6 +91,9 @@ return DCRAW_OPEN_ERROR; } d->identify(); +#ifndef UFRAW_X_TRANS + if (d->filters == 2) d->is_raw = 0; +#endif /* We first check if dcraw recognizes the file, this is equivalent * to 'dcraw -i' succeeding */ if (!d->make[0]) { @@ -205,6 +206,7 @@ g_free(d->messageBuffer); d->messageBuffer = NULL; d->lastStatus = DCRAW_SUCCESS; + d->raw_image = 0; if (setjmp(d->failure)) { d->dcraw_message(DCRAW_ERROR, _("Fatal internal error\n")); h->message = d->messageBuffer; @@ -213,8 +215,6 @@ } h->raw.height = d->iheight = (h->height + h->shrink) >> h->shrink; h->raw.width = d->iwidth = (h->width + h->shrink) >> h->shrink; - h->raw.image = d->image = g_new0(dcraw_image_type, d->iheight * d->iwidth - + d->meta_length); d->meta_data = (char *)(d->image + d->iheight * d->iwidth); /* copied from the end of dcraw's identify() */ if (d->filters && d->colors == 3) { @@ -223,17 +223,34 @@ } h->raw.colors = d->colors; h->fourColorFilters = d->filters; + if (d->filters) { + d->raw_image = (ushort *) g_malloc((d->raw_height + 7) * d->raw_width * 2); + } else { + h->raw.image = d->image = g_new0(dcraw_image_type, d->iheight * d->iwidth + + d->meta_length); + } d->dcraw_message(DCRAW_VERBOSE, _("Loading %s %s image from %s ...\n"), d->make, d->model, d->ifname_display); fseek(d->ifp, 0, SEEK_END); d->ifpSize = ftell(d->ifp); fseek(d->ifp, d->data_offset, SEEK_SET); (d->*d->load_raw)(); + h->raw.height = d->iheight = (h->height + h->shrink) >> h->shrink; + h->raw.width = d->iwidth = (h->width + h->shrink) >> h->shrink; + if (d->raw_image) { + h->raw.image = d->image = g_new0(dcraw_image_type, d->iheight * d->iwidth + + d->meta_length); + d->crop_masked_pixels(); + g_free(d->raw_image); + } if (!--d->data_error) d->lastStatus = DCRAW_ERROR; if (d->zero_is_bad) d->remove_zeroes(); d->bad_pixels(NULL); if (d->is_foveon) { - d->foveon_interpolate(); + if (d->load_raw == &DCRaw::foveon_dp_load_raw) { + for (i = 0; i < d->height * d->width * 4; i++) + if ((short) d->image[0][i] < 0) d->image[0][i] = 0; + } else d->foveon_interpolate(); h->raw.width = h->width = d->width; h->raw.height = h->height = d->height; } @@ -335,21 +352,21 @@ } /* - * fc_INDI() optimizing wrapper. - * fc_sequence() cooks up the filter color sequence for a row knowing that + * fcol_INDI() optimizing wrapper. + * fcol_sequence() cooks up the filter color sequence for a row knowing that * it doesn't have to store more than 16 values. The result can be indexed - * by the column using fc_color() and that part must of course be inlined + * by the column using fcol_color() and that part must of course be inlined * for maximum performance. The inner loop for image processing should * always try to index the column and not the row in order to reduce the * data cache footprint. */ - static unsigned fc_sequence(int filters, int row) + static unsigned fcol_sequence(int filters, int row) { unsigned sequence = 0; int c; for (c = 15; c >= 0; --c) - sequence = (sequence << 2) | fc_INDI(filters, row, c); + sequence = (sequence << 2) | fcol_INDI(filters, row, c); return sequence; } @@ -357,7 +374,7 @@ * Note: smart compilers will inline anyway in most cases: the "inline" * below is a comment reminding not to make it an external function. */ - static inline int fc_color(unsigned sequence, int col) + static inline int fcol_color(unsigned sequence, int col) { return (sequence >> ((col << 1) & 0x1f)) & 3; } @@ -409,7 +426,7 @@ for (ri = 0; ri < scale; ++ri) { ibase = hh->raw.image + ((row * scale + ri) / 2) * hh->raw.width; for (ci = 0; ci < scale; ++ci) { - cl = fc_color(fseq[ri], col * scale + ci); + cl = fcol_color(fseq[ri], col * scale + ci); sum[cl] += ibase[(col * scale + ci) / 2][cl]; ++count[cl]; } @@ -422,7 +439,7 @@ int scale) { DCRaw *d = (DCRaw *)hh->dcraw; - int h, w, fujiWidth, r, c, ri, recombine, pixels, f4; + int h, w, fujiWidth, r, c, ri, recombine, f4; dcraw_image_type *ibase, *obase; unsigned *fseq; unsigned short *pixp; @@ -430,7 +447,6 @@ g_free(d->messageBuffer); d->messageBuffer = NULL; d->lastStatus = DCRAW_SUCCESS; - pixels = hh->raw.width * hh->raw.height; recombine = (hh->colors == 3 && hh->raw.colors == 4); /* the last row/column will be skipped if input is incomplete */ @@ -448,12 +464,12 @@ f4 = hh->fourColorFilters; #ifdef _OPENMP -#pragma omp parallel for schedule(static) private(r,ri,fseq,c,pixp) + #pragma omp parallel for schedule(static) private(r,ri,fseq,c,pixp) #endif for (r = 0; r < h; ++r) { fseq = (unsigned*) g_malloc(scale * sizeof(unsigned)); for (ri = 0; ri < scale; ++ri) - fseq[ri] = fc_sequence(f4, r + ri); + fseq[ri] = fcol_sequence(f4, r + ri); for (c = 0; c < w; ++c) { pixp = f->image[r * w + c]; shrink_pixel(pixp, r, c, hh, fseq, scale); @@ -468,7 +484,7 @@ f->image = (dcraw_image_type *)g_realloc( f->image, h * w * sizeof(dcraw_image_type)); #ifdef _OPENMP -#pragma omp parallel for schedule(static) private(r,ibase,obase,c) + #pragma omp parallel for schedule(static) private(r,ibase,obase,c) #endif for (r = 0; r < h; ++r) { ibase = hh->raw.image + r * hh->raw.width * scale; @@ -535,10 +551,10 @@ ciw = 0; } for (cl = 0; cl < image->colors; cl++) { - iBuf[ri *w+ci ][cl] += image->image[r*wid+c][cl] * riw * ciw ; - iBuf[ri *w+cii][cl] += image->image[r*wid+c][cl] * riw * ciiw; - iBuf[rii*w+ci ][cl] += image->image[r*wid+c][cl] * riiw * ciw ; - iBuf[rii*w+cii][cl] += image->image[r*wid+c][cl] * riiw * ciiw; + iBuf[ri * w + ci ][cl] += image->image[r * wid + c][cl] * riw * ciw ; + iBuf[ri * w + cii][cl] += image->image[r * wid + c][cl] * riw * ciiw; + iBuf[rii * w + ci ][cl] += image->image[r * wid + c][cl] * riiw * ciw ; + iBuf[rii * w + cii][cl] += image->image[r * wid + c][cl] * riiw * ciiw; } } } @@ -564,10 +580,10 @@ iBuf = g_new(dcraw_image_type, image->width * newdim); for (rc = row = 0; row < newdim; row++, rc += pixel_aspect) { frac = rc - (c = (int)rc); - pix0 = pix1 = image->image[c*image->width]; + pix0 = pix1 = image->image[c * image->width]; if (c + 1 < image->height) pix1 += image->width * 4; for (col = 0; col < image->width; col++, pix0 += 4, pix1 += 4) - FORCC iBuf[row*image->width+col][c] = + FORCC iBuf[row * image->width + col][c] = (guint16)(pix0[c] * (1 - frac) + pix1[c] * frac + 0.5); } image->height = newdim; @@ -580,7 +596,7 @@ if (c + 1 < image->width) pix1 += 4; for (row = 0; row < image->height; row++, pix0 += image->width * 4, pix1 += image->width * 4) - FORCC iBuf[row*newdim+col][c] = + FORCC iBuf[row * newdim + col][c] = (guint16)(pix0[c] * (1 - frac) + pix1[c] * frac + 0.5); } image->width = newdim; @@ -609,8 +625,8 @@ for (int c = 0; c < 4; c++) h->post_mul[c] = 1.0; } else { - scale_colors_INDI(h->rgbMax - h->black, h->black, useCameraWB, - h->cam_mul, h->raw.colors, h->post_mul, h->filters, d->white, + scale_colors_INDI(h->rgbMax, h->black, useCameraWB, h->cam_mul, + h->colors, h->post_mul, h->filters, d->white, d->ifname_display, d); } h->message = d->messageBuffer; @@ -647,8 +663,8 @@ rgbWB[3] = rgbWB[1]; if (dark) { #ifdef _OPENMP -#pragma omp parallel for schedule(static) default(none) \ - shared(h,dark,rgbWB) + #pragma omp parallel for schedule(static) default(none) \ + shared(h,dark,rgbWB) #endif for (int i = 0; i < pixels; i++) { int cc; @@ -660,8 +676,8 @@ } } else { #ifdef _OPENMP -#pragma omp parallel for schedule(static) default(none) \ - shared(h,dark,rgbWB) + #pragma omp parallel for schedule(static) default(none) \ + shared(h,dark,rgbWB) #endif for (int i = 0; i < pixels; i++) { int cc; @@ -677,13 +693,12 @@ int interpolation, int smoothing) { DCRaw *d = (DCRaw *)h->dcraw; - int fujiWidth, i, r, c, cl, pixels; + int fujiWidth, i, r, c, cl; unsigned ff, f4; g_free(d->messageBuffer); d->messageBuffer = NULL; d->lastStatus = DCRAW_SUCCESS; - pixels = h->raw.width * h->raw.height; f->width = h->width; f->height = h->height; @@ -707,16 +722,16 @@ /* It might be better to report an error here: */ /* (dcraw also forbids AHD for Fuji rotated images) */ - if (interpolation == dcraw_ahd_interpolation && h->colors > 3) + if (interpolation == dcraw_ahd_interpolation && (h->colors > 3 || h->filters < 1000)) interpolation = dcraw_vng_interpolation; - if (interpolation == dcraw_ppg_interpolation && h->colors > 3) + if (interpolation == dcraw_ppg_interpolation && (h->colors > 3 || h->filters < 1000)) interpolation = dcraw_vng_interpolation; f4 = h->fourColorFilters; for (r = 0; r < h->height; r++) for (c = 0; c < h->width; c++) { - int cc = fc_INDI(f4, r, c); - f->image[r*f->width+c][fc_INDI(ff, r, c)] = - h->raw.image[r/2 * h->raw.width + c/2][cc]; + int cc = fcol_INDI(f4, r, c); + f->image[r * f->width + c][fcol_INDI(ff, r, c)] = + h->raw.image[r / 2 * h->raw.width + c / 2][cc]; } int smoothPasses = 1; if (interpolation == dcraw_bilinear_interpolation) diff -Nru ufraw-0.18/dcraw_api.h ufraw-0.19.1/dcraw_api.h --- ufraw-0.18/dcraw_api.h 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/dcraw_api.h 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * dcraw_api.h - API for DCRaw - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * based on dcraw by Dave Coffin * http://www.cybercom.net/~dcoffin/ diff -Nru ufraw-0.18/dcraw.cc ufraw-0.19.1/dcraw.cc --- ufraw-0.18/dcraw.cc 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/dcraw.cc 2013-03-08 05:57:35.000000000 +0200 @@ -1,7 +1,7 @@ /* dcraw.cc - Dave Coffin's raw photo decoder - C++ adaptation - Copyright 1997-2010 by Dave Coffin, dcoffin a cybercom o net - Copyright 2004-2011 by Udi Fuchs, udifuchs a gmail o com + Copyright 1997-2012 by Dave Coffin, dcoffin a cybercom o net + Copyright 2004-2013 by Udi Fuchs, udifuchs a gmail o com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -11,8 +11,8 @@ This is a adaptation of Dave Coffin's original dcraw.c to C++. It can work as either a command-line tool or called by other programs. - $Revision: 1.441 $ - $Date: 2011/02/19 04:26:53 $ + $Revision: 1.454 $ + $Date: 2012/12/23 19:25:36 $ */ #ifdef HAVE_CONFIG_H /*For UFRaw config system - NKBJ*/ @@ -22,7 +22,7 @@ #include "uf_progress.h" } -#define DCRAW_VERSION "9.06" +#define DCRAW_VERSION "9.17" #ifndef _GNU_SOURCE #define _GNU_SOURCE @@ -40,16 +40,22 @@ #include #include #include + +#ifdef NODEPS +#define NO_JASPER +#define NO_JPEG +#define NO_LCMS +#endif +#ifdef HAVE_LIBJASPER +#include /* Decode RED camera movies */ +#endif #ifdef HAVE_LIBJPEG extern "C" { -#include +#include /* Decode compressed Kodak DC120 photos */ } -#endif -/* - NO_LCMS disables the "-p" option. - */ +#endif /* and Adobe Lossy DNGs */ #ifndef NO_LCMS -#include +#include /* Support color profiles */ #endif #ifndef DCRAW_NOMAIN #ifdef LOCALEDIR @@ -61,6 +67,7 @@ #else #include /*For _(String) definition - NKBJ*/ #endif + #ifndef HAVE_CONFIG_H /*fseeko() is handled by the UFRaw config system - NKBJ*/ #if defined(DJGPP) || defined(__MINGW32__) #define fseeko fseek @@ -106,6 +113,47 @@ #ifdef DCRAW_NOMAIN extern #endif +#if !defined(ushort) +#define ushort unsigned short +#endif + +/* + All global variables are defined here, and all functions that + access them are prefixed with "CLASS". Note that a thread-safe + C++ class cannot have non-const static local variables. + */ +FILE *ifp, *ofp; +short order; +const char *ifname; +char *meta_data; +char cdesc[5], desc[512], make[64], model[64], model2[64], artist[64]; +float flash_used, canon_ev, iso_speed, shutter, aperture, focal_len; +time_t timestamp; +unsigned shot_order, kodak_cbpp, filters, exif_cfa, unique_id; +off_t strip_offset, data_offset; +off_t thumb_offset, meta_offset, profile_offset; +unsigned thumb_length, meta_length, profile_length; +unsigned thumb_misc, *oprof, fuji_layout, shot_select=0, multi_out=0; +unsigned tiff_nifds, tiff_samples, tiff_bps, tiff_compress; +unsigned black, cblack[4], maximum, mix_green, raw_color, zero_is_bad; +unsigned zero_after_ff, is_raw, dng_version, is_foveon, data_error; +unsigned tile_width, tile_length, gpsdata[32], load_flags; +ushort raw_height, raw_width, height, width, top_margin, left_margin; +ushort shrink, iheight, iwidth, fuji_width, thumb_width, thumb_height; +ushort *raw_image, (*image)[4]; +ushort white[8][8], curve[0x10000], cr2_slice[3], sraw_mul[4]; +int mask[8][4], flip, tiff_flip, colors; +double pixel_aspect, aber[4]={1,1,1,1}, gamm[6]={ 0.45,4.5,0,0,0,0 }; +float bright=1, user_mul[4]={0,0,0,0}, threshold=0; +int half_size=0, four_color_rgb=0, document_mode=0, highlight=0; +int verbose=0, use_auto_wb=0, use_camera_wb=0, use_camera_matrix=-1; +int output_color=1, output_bps=8, output_tiff=0, med_passes=0; +int no_auto_bright=0; +unsigned greybox[4] = { 0, 0, UINT_MAX, UINT_MAX }; +float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4]; +#ifdef DCRAW_NOMAIN +extern +#endif const double xyz_rgb[3][3] = { /* XYZ from RGB */ { 0.412453, 0.357580, 0.180423 }, { 0.212671, 0.715160, 0.072169 }, @@ -114,6 +162,25 @@ extern #endif const float d65_white[3] = { 0.950456, 1, 1.088754 }; +int histogram[4][0x2000]; +void (*write_thumb)(), (*write_fun)(); +void (*load_raw)(), (*thumb_load_raw)(); +jmp_buf failure; + +struct decode { + struct decode *branch[2]; + int leaf; +} first_decode[2048], *second_decode, *free_decode; + +struct tiff_ifd { + int width, height, bps, comp, phint, offset, flip, samples, bytes; + int tile_width, tile_length; +} tiff_ifd[10]; + +struct ph1 { + int format, key_off, black, black_off, split_col, tag_21a; + float tag_210; +} ph1; #define DCRAW_SUCCESS 0 /* Centralize the error handling - UF*/ #define DCRAW_ERROR 1 @@ -143,6 +210,7 @@ ifpReadCount = 0; ifpSize = 0; ifpStepProgress = 0; +eofCount = 0; } CLASS ~DCRaw() @@ -168,10 +236,16 @@ size_t CLASS fread(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t num = ::fread(ptr, size, nmemb, stream); - if ( num != nmemb ) -// Maybe this should be a DCRAW_WARNING - dcraw_message(DCRAW_VERBOSE, "%s: fread %d != %d\n", - ifname_display, num, nmemb); + if ( num != nmemb ) { + if (eofCount < 10) + // Maybe this should be a DCRAW_WARNING + dcraw_message(DCRAW_VERBOSE, "%s: fread %d != %d\n", + ifname_display, num, nmemb); + if (eofCount == 10) + dcraw_message(DCRAW_VERBOSE, "%s: fread eof reached 10 times\n", + ifname_display); + eofCount++; + } if (stream==ifp) ifpProgress(size*nmemb); return num; } @@ -186,10 +260,16 @@ char *CLASS fgets(char *s, int size, FILE *stream) { char *str = ::fgets(s, size, stream); - if ( str==NULL ) -// Maybe this should be a DCRAW_WARNING - dcraw_message(DCRAW_VERBOSE, "%s: fgets returned NULL\n", - ifname_display); + if (str == NULL) { + if (eofCount < 10) + // Maybe this should be a DCRAW_WARNING + dcraw_message(DCRAW_VERBOSE, "%s: fgets returned NULL\n", + ifname_display); + if (eofCount == 10) + dcraw_message(DCRAW_VERBOSE, "%s: fgets eof reached 10 times\n", + ifname_display); + eofCount++; + } if (stream==ifp) ifpProgress(strlen(s)); return str; } @@ -263,6 +343,9 @@ 3 G R G R G R 3 B G B G B G 3 R G R G R G 3 G B G B G B */ +#define RAW(row,col) \ + raw_image[(row)*raw_width+(col)] + #define FC(row,col) \ (filters >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3) @@ -270,9 +353,9 @@ image[((row) >> shrink)*iwidth + ((col) >> shrink)][FC(row,col)] #define BAYER2(row,col) \ - image[((row) >> shrink)*iwidth + ((col) >> shrink)][fc(row,col)] + image[((row) >> shrink)*iwidth + ((col) >> shrink)][fcol(row,col)] -int CLASS fc (int row, int col) +int CLASS fcol (int row, int col) { static const char filter[16][16] = { { 2,1,1,3,2,3,2,0,3,2,3,0,1,2,1,0 }, @@ -291,9 +374,17 @@ { 0,2,0,3,1,0,0,1,1,3,3,2,3,2,2,1 }, { 2,1,3,2,3,1,2,1,0,3,0,2,0,2,0,2 }, { 0,3,1,0,0,2,0,3,2,1,3,1,1,3,1,3 } }; - - if (filters != 1) return FC(row,col); - return filter[(row+top_margin) & 15][(col+left_margin) & 15]; + static const char filter2[6][6] = + { { 1,1,0,1,1,2 }, + { 1,1,2,1,1,0 }, + { 2,0,1,0,2,1 }, + { 1,1,2,1,1,0 }, + { 1,1,0,1,1,2 }, + { 0,2,1,2,0,1 } }; + + if (filters == 1) return filter[(row+top_margin)&15][(col+left_margin)&15]; + if (filters == 2) return filter2[(row+6) % 6][(col+6) % 6]; + return FC(row,col); } #ifndef HAVE_MEMMEM @@ -537,14 +628,13 @@ void CLASS canon_600_load_raw() { uchar data[1120], *dp; - ushort pixel[896], *pix; - int irow, row, col, val; - static const short mul[4][2] = - { { 1141,1145 }, { 1128,1109 }, { 1178,1149 }, { 1128,1109 } }; + ushort *pix; + int irow, row; for (irow=row=0; irow < height; irow++) { - if ((int)fread (data, 1, raw_width*5/4, ifp) < raw_width*5/4) derror(); - for (dp=data, pix=pixel; dp < data+1120; dp+=10, pix+=8) { + if (fread (data, 1, 1120, ifp) < 1120) derror(); + pix = raw_image + row*raw_width; + for (dp=data; dp < data+1120; dp+=10, pix+=8) { pix[0] = (dp[0] << 2) + (dp[1] >> 6 ); pix[1] = (dp[2] << 2) + (dp[1] >> 4 & 3); pix[2] = (dp[3] << 2) + (dp[1] >> 2 & 3); @@ -554,14 +644,16 @@ pix[6] = (dp[7] << 2) + (dp[9] >> 4 & 3); pix[7] = (dp[8] << 2) + (dp[9] >> 6 ); } - for (col=0; col < width; col++) - BAYER(row,col) = pixel[col]; - for (col=width; col < raw_width; col++) - black += pixel[col]; if ((row+=2) > height) row = 1; } - if (raw_width > width) - black = black / ((raw_width - width) * height) - 4; +} + +void CLASS canon_600_correct() +{ + int row, col, val; + static const short mul[4][2] = + { { 1141,1145 }, { 1128,1109 }, { 1178,1149 }, { 1128,1109 } }; + for (row=0; row < height; row++) for (col=0; col < width; col++) { if ((val = BAYER(row,col) - black) < 0) val = 0; @@ -575,23 +667,6 @@ black = 0; } -void CLASS remove_zeroes() -{ - unsigned row, col, tot, n, r, c; - - for (row=0; row < height; row++) - for (col=0; col < width; col++) - if (BAYER(row,col) == 0) { - tot = n = 0; - for (r = row-2; r <= row+2; r++) - for (c = col-2; c <= col+2; c++) - if (r < height && c < width && - FC(r,c) == FC(row,col) && BAYER(r,c)) - tot += (n++,BAYER(r,c)); - if (n) BAYER(row,col) = tot/n; - } -} - int CLASS canon_s2is() { unsigned row; @@ -768,22 +843,20 @@ return ret; } -void CLASS canon_compressed_load_raw() +void CLASS canon_load_raw() { ushort *pixel, *prow, *huff[2]; - int nblocks, lowbits, i, c, row, r, col, save, val; - unsigned irow, icol; + int nblocks, lowbits, i, c, row, r, save, val; int block, diffbuf[64], leaf, len, diff, carry=0, pnum=0, base[2]; crw_init_tables (tiff_compress, huff); - pixel = (ushort *) calloc (raw_width*8, sizeof *pixel); - merror (pixel, "canon_compressed_load_raw()"); lowbits = canon_has_lowbits(); if (!lowbits) maximum = 0x3ff; fseek (ifp, 540 + lowbits*raw_height*raw_width/4, SEEK_SET); zero_after_ff = 1; getbits(-1); for (row=0; row < raw_height; row+=8) { + pixel = raw_image + row*raw_width; nblocks = MIN (8, raw_height-row) * raw_width >> 6; for (block=0; block < nblocks; block++) { memset (diffbuf, 0, sizeof diffbuf); @@ -821,23 +894,8 @@ } fseek (ifp, save, SEEK_SET); } - for (r=0; r < 8; r++) { - irow = row - top_margin + r; - if (irow >= height) continue; - for (col=0; col < raw_width; col++) { - icol = col - left_margin; - c = FC(irow,icol); - if (icol < width) - BAYER(irow,icol) = pixel[r*raw_width+col]; - else if (col > 1 && (unsigned) (col-left_margin+2) > - (unsigned) (width+3)) - cblack[c] += (cblack[4+c]++,pixel[r*raw_width+col]); - } - } } - free (pixel); FORC(2) free (huff[c]); - FORC4 if (cblack[4+c]) cblack[c] /= cblack[4+c]; } /* @@ -960,9 +1018,8 @@ void CLASS lossless_jpeg_load_raw() { - int jwide, jrow, jcol, val, jidx, c, i, j, row=0, col=0; + int jwide, jrow, jcol, val, jidx, i, j, row=0, col=0; struct jhead jh; - int min=INT_MAX; ushort *rp; if (!ljpeg_start (&jh, 0)) return; @@ -970,10 +1027,10 @@ for (jrow=0; jrow < jh.high; jrow++) { rp = ljpeg_row (jrow, &jh); + if (load_flags & 1) + row = jrow & 1 ? height-1-jrow/2 : jrow/2; for (jcol=0; jcol < jwide; jcol++) { - val = *rp++; - if (jh.bits <= 12) - val = curve[val & 0xfff]; + val = curve[*rp++]; if (cr2_slice[0]) { jidx = jrow*jwide + jcol; i = jidx / (cr2_slice[1]*jh.high); @@ -985,23 +1042,12 @@ } if (raw_width == 3984 && (col -= 2) < 0) col += (row--,raw_width); - if ((unsigned) (row-top_margin) < height) { - c = FC(row-top_margin,col-left_margin); - if ((unsigned) (col-left_margin) < width) { - BAYER(row-top_margin,col-left_margin) = val; - if (min > val) min = val; - } else if (col > 1 && (unsigned) (col-left_margin+2) > - (unsigned) (width+3)) - cblack[c] += (cblack[4+c]++,val); - } + if (row >= 0) RAW(row,col) = val; if (++col >= raw_width) col = (row++,0); } } ljpeg_end (&jh); - FORC4 if (cblack[4+c]) cblack[c] /= cblack[4+c]; - if (!strcasecmp(make,"KODAK")) - black = min; } void CLASS canon_sraw_load_raw() @@ -1036,7 +1082,7 @@ sscanf (cp, "%d.%d.%d", v, v+1, v+2); ver = (v[0]*1000 + v[1])*1000 + v[2]; hue = (jh.sraw+1) << 2; - if (unique_id == 0x80000218 && ver > 1000006 && ver < 3000000) + if (unique_id >= 0x80000281 || (unique_id == 0x80000218 && ver > 1000006)) hue = jh.sraw << 1; ip = (short (*)[4]) image; rp = ip[0]; @@ -1054,16 +1100,21 @@ else ip[col][c] = (ip[col-1][c] + ip[col+1][c] + 1) >> 1; } for ( ; rp < ip[0]; rp+=4) { - if (unique_id < 0x80000218) { - pix[0] = rp[0] + rp[2] - 512; - pix[2] = rp[0] + rp[1] - 512; - pix[1] = rp[0] + ((-778*rp[1] - (rp[2] << 11)) >> 12) - 512; - } else { + if (unique_id == 0x80000218 || + unique_id == 0x80000250 || + unique_id == 0x80000261 || + unique_id == 0x80000281 || + unique_id == 0x80000287) { rp[1] = (rp[1] << 2) + hue; rp[2] = (rp[2] << 2) + hue; - pix[0] = rp[0] + (( 200*rp[1] + 22929*rp[2]) >> 14); + pix[0] = rp[0] + (( 50*rp[1] + 22929*rp[2]) >> 14); pix[1] = rp[0] + ((-5640*rp[1] - 11751*rp[2]) >> 14); pix[2] = rp[0] + ((29040*rp[1] - 101*rp[2]) >> 14); + } else { + if (unique_id < 0x80000218) rp[0] -= 512; + pix[0] = rp[0] + rp[2]; + pix[2] = rp[0] + rp[1]; + pix[1] = rp[0] + ((-778*rp[1] - (rp[2] << 11)) >> 12); } FORC3 rp[c] = CLIP(pix[c] * sraw_mul[c] >> 10); } @@ -1071,31 +1122,25 @@ maximum = 0x3fff; } -void CLASS adobe_copy_pixel (int row, int col, ushort **rp) +void CLASS adobe_copy_pixel (unsigned row, unsigned col, ushort **rp) { - unsigned r, c; + unsigned c; - r = row -= top_margin; - c = col -= left_margin; if (is_raw == 2 && shot_select) (*rp)++; - if (filters) { - if (fuji_width) { - r = row + fuji_width - 1 - (col >> 1); - c = row + ((col+1) >> 1); - } - if (r < height && c < width) - BAYER(r,c) = **rp < 0x1000 ? curve[**rp] : **rp; + if (raw_image) { + if (row < raw_height && col < raw_width) + RAW(row,col) = curve[**rp]; *rp += is_raw; } else { - if (r < height && c < width) + if (row < height && col < width) FORC(tiff_samples) - image[row*width+col][c] = (*rp)[c] < 0x1000 ? curve[(*rp)[c]]:(*rp)[c]; + image[row*width+col][c] = curve[(*rp)[c]]; *rp += tiff_samples; } if (is_raw == 2 && shot_select) (*rp)--; } -void CLASS adobe_dng_load_raw_lj() +void CLASS lossless_dng_load_raw() { unsigned save, trow=0, tcol=0, jwide, jrow, jcol, row, col; struct jhead jh; @@ -1124,13 +1169,13 @@ } } -void CLASS adobe_dng_load_raw_nc() +void CLASS packed_dng_load_raw() { ushort *pixel, *rp; unsigned row, col; pixel = (ushort *) calloc (raw_width * tiff_samples, sizeof *pixel); - merror (pixel, "adobe_dng_load_raw_nc()"); + merror (pixel, "packed_dng_load_raw()"); for (row=0; row < raw_height; row++) { if (tiff_bps == 16) read_shorts (pixel, raw_width * tiff_samples); @@ -1167,14 +1212,12 @@ diff = ljpeg_diff (huff); if (col < 2) hpred[col] = vpred[row & 1][col] += diff; else hpred[col & 1] += diff; - if ((unsigned) (row-top_margin) < height && - (unsigned) (col-left_margin) < width) - BAYER(row-top_margin,col-left_margin) = hpred[col & 1]; + RAW(row,col) = hpred[col & 1]; if (hpred[col & 1] >> tiff_bps) derror(); } } -void CLASS nikon_compressed_load_raw() +void CLASS nikon_load_raw() { static const uchar nikon_tree[][32] = { { 0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0, /* 12-bit lossy */ @@ -1233,31 +1276,13 @@ if (col < 2) hpred[col] = vpred[row & 1][col] += diff; else hpred[col & 1] += diff; if ((ushort)(hpred[col & 1] + min) >= max) derror(); - if ((unsigned) (col-left_margin) < width) - BAYER(row,col-left_margin) = curve[LIM((short)hpred[col & 1],0,0x3fff)]; + RAW(row,col) = curve[LIM((short)hpred[col & 1],0,0x3fff)]; } } free (huff); } /* - Figure out if a NEF file is compressed. These fancy heuristics - are only needed for the D100, thanks to a bug in some cameras - that tags all images as "compressed". - */ -int CLASS nikon_is_compressed() -{ - uchar test[256]; - int i; - - fseek (ifp, data_offset, SEEK_SET); - fread (test, 1, 256, ifp); - for (i=15; i < 256; i+=16) - if (test[i]) return 1; - return 0; -} - -/* Returns 1 for a Coolpix 995, 0 for anything else. */ int CLASS nikon_e995() @@ -1331,35 +1356,6 @@ return nz > 20; } -/* - The Fuji Super CCD is just a Bayer grid rotated 45 degrees. - */ -void CLASS fuji_load_raw() -{ - ushort *pixel; - int wide, row, col, r, c; - - fseek (ifp, (top_margin*raw_width + left_margin) * 2, SEEK_CUR); - wide = fuji_width << !fuji_layout; - pixel = (ushort *) calloc (wide, sizeof *pixel); - merror (pixel, "fuji_load_raw()"); - for (row=0; row < raw_height; row++) { - read_shorts (pixel, wide); - fseek (ifp, 2*(raw_width - wide), SEEK_CUR); - for (col=0; col < wide; col++) { - if (fuji_layout) { - r = fuji_width - 1 - col + (row >> 1); - c = col + ((row+1) >> 1); - } else { - r = fuji_width - 1 + row - (col >> 1); - c = row + ((col+1) >> 1); - } - BAYER(r,c) = pixel[col]; - } - } - free (pixel); -} - //void CLASS jpeg_thumb(); void CLASS ppm_thumb() @@ -1374,6 +1370,21 @@ free (thumb); } +void CLASS ppm16_thumb() +{ + unsigned i; + char *thumb; + thumb_length = thumb_width*thumb_height*3; + thumb = (char *) calloc (thumb_length,2); + merror (thumb, "ppm16_thumb()"); + read_shorts ((ushort *) thumb, thumb_length); + for (i=0; i < thumb_length; i++) + thumb[i] = ((ushort *) thumb)[i] >> 8; + fprintf (ofp, "P6\n%d %d\n255\n", thumb_width, thumb_height); + fwrite (thumb, 1, thumb_length, ofp); + free (thumb); +} + void CLASS layer_thumb() { unsigned i; @@ -1413,7 +1424,7 @@ void CLASS rollei_load_raw() { uchar pixel[10]; - unsigned iten=0, isix, i, buffer=0, row, col, todo[16]; + unsigned iten=0, isix, i, buffer=0, todo[16]; isix = raw_width * raw_height * 5 / 8; while (fread (pixel, 1, 10, ifp) == 10) { @@ -1426,19 +1437,15 @@ todo[i] = isix++; todo[i+1] = buffer >> (14-i)*5; } - for (i=0; i < 16; i+=2) { - row = todo[i] / raw_width - top_margin; - col = todo[i] % raw_width - left_margin; - if (row < height && col < width) - BAYER(row,col) = (todo[i+1] & 0x3ff); - } + for (i=0; i < 16; i+=2) + raw_image[todo[i]] = (todo[i+1] & 0x3ff); } maximum = 0x3ff; } -int CLASS bayer (unsigned row, unsigned col) +int CLASS raw (unsigned row, unsigned col) { - return (row < height && col < width) ? BAYER(row,col) : 0; + return (row < raw_height && col < raw_width) ? RAW(row,col) : 0; } void CLASS phase_one_flat_field (int is_float, int nc) @@ -1452,7 +1459,7 @@ wide = head[2] / head[4]; mrow = (float *) calloc (nc*wide, sizeof *mrow); merror (mrow, "phase_one_flat_field()"); - for (y=0; y < head[3] / head[5]; y++) { + for (y=0; y < (unsigned)(head[3] / head[5]); y++) { for (x=0; x < wide; x++) for (c=0; c < nc; c+=2) { num = is_float ? getreal(11) : get2()/32768.0; @@ -1460,19 +1467,19 @@ else mrow[(c+1)*wide+x] = (num - mrow[c*wide+x]) / head[5]; } if (y==0) continue; - rend = head[1]-top_margin + y*head[5]; - for (row = rend-head[5]; row < height && row < rend; row++) { + rend = head[1] + y*head[5]; + for (row = rend-head[5]; row < raw_height && row < rend; row++) { for (x=1; x < wide; x++) { for (c=0; c < nc; c+=2) { mult[c] = mrow[c*wide+x-1]; mult[c+1] = (mrow[c*wide+x] - mult[c]) / head[4]; } - cend = head[0]-left_margin + x*head[4]; - for (col = cend-head[4]; col < width && col < cend; col++) { - c = nc > 2 ? FC(row,col) : 0; + cend = head[0] + x*head[4]; + for (col = cend-head[4]; col < raw_width && col < cend; col++) { + c = nc > 2 ? FC(row-top_margin,col-left_margin) : 0; if (!(c & 1)) { - c = BAYER(row,col) * mult[c]; - BAYER(row,col) = LIM(c,0,65535); + c = RAW(row,col) * mult[c]; + RAW(row,col) = LIM(c,0,65535); } for (c=0; c < nc; c+=2) mult[c] += mult[c+1]; @@ -1526,37 +1533,37 @@ num = num * i + poly[j]; curve[i] = LIM(num+i,0,65535); } apply: /* apply to whole image */ - for (row=0; row < height; row++) - for (col = (tag & 1)*ph1.split_col; col < width; col++) - BAYER(row,col) = curve[BAYER(row,col)]; + for (row=0; row < raw_height; row++) + for (col = (tag & 1)*ph1.split_col; col < raw_width; col++) + RAW(row,col) = curve[RAW(row,col)]; } else if (tag == 0x400) { /* Sensor defects */ while ((len -= 8) >= 0) { - col = get2() - left_margin; - row = get2() - top_margin; + col = get2(); + row = get2(); type = get2(); get2(); - if (col >= width) continue; + if (col >= raw_width) continue; if (type == 131) /* Bad column */ - for (row=0; row < height; row++) - if (FC(row,col) == 1) { + for (row=0; row < raw_height; row++) + if (FC(row-top_margin,col-left_margin) == 1) { for (sum=i=0; i < 4; i++) - sum += val[i] = bayer (row+dir[i][0], col+dir[i][1]); + sum += val[i] = raw (row+dir[i][0], col+dir[i][1]); for (max=i=0; i < 4; i++) { dev[i] = abs((val[i] << 2) - sum); if (dev[max] < dev[i]) max = i; } - BAYER(row,col) = (sum - val[max])/3.0 + 0.5; + RAW(row,col) = (sum - val[max])/3.0 + 0.5; } else { for (sum=0, i=8; i < 12; i++) - sum += bayer (row+dir[i][0], col+dir[i][1]); - BAYER(row,col) = 0.5 + sum * 0.0732233 + - (bayer(row,col-2) + bayer(row,col+2)) * 0.3535534; + sum += raw (row+dir[i][0], col+dir[i][1]); + RAW(row,col) = 0.5 + sum * 0.0732233 + + (raw(row,col-2) + raw(row,col+2)) * 0.3535534; } else if (type == 129) { /* Bad pixel */ - if (row >= height) continue; - j = (FC(row,col) != 1) * 4; + if (row >= raw_height) continue; + j = (FC(row-top_margin,col-left_margin) != 1) * 4; for (sum=0, i=j; i < j+8; i++) - sum += bayer (row+dir[i][0], col+dir[i][1]); - BAYER(row,col) = (sum + 4) >> 3; + sum += raw (row+dir[i][0], col+dir[i][1]); + RAW(row,col) = (sum + 4) >> 3; } } } else if (tag == 0x401) { /* All-color flat fields */ @@ -1590,11 +1597,11 @@ for (i=0; i < 2; i++) for (j=0; j < head[i+1]*head[i+3]; j++) xval[i][j] = get2(); - for (row=0; row < height; row++) - for (col=0; col < width; col++) { + for (row=0; row < raw_height; row++) + for (col=0; col < raw_width; col++) { cfrac = (float) col * head[3] / raw_width; cfrac -= cip = cfrac; - num = BAYER(row,col) * 0.5; + num = RAW(row,col) * 0.5; for (i=cip; i < cip+2; i++) { for (k=j=0; j < head[1]; j++) if (num < xval[0][k = head[1]*i+j]) break; @@ -1602,9 +1609,8 @@ (xval[0][k] - num) / (xval[0][k] - xval[0][k-1]); mult[i-cip] = yval[0][k-1] * frac + yval[0][k] * (1-frac); } - i = ((mult[0] * (1-cfrac) + mult[1] * cfrac) - * (row + top_margin) + num) * 2; - BAYER(row,col) = LIM(i,0,65535); + i = ((mult[0] * (1-cfrac) + mult[1] * cfrac) * row + num) * 2; + RAW(row,col) = LIM(i,0,65535); } free (yval[0]); } @@ -1612,30 +1618,22 @@ void CLASS phase_one_load_raw() { - int row, col, a, b; - ushort *pixel, akey, bkey, mask; + int a, b, i; + ushort akey, bkey, mask; fseek (ifp, ph1.key_off, SEEK_SET); akey = get2(); bkey = get2(); mask = ph1.format == 1 ? 0x5555:0x1354; - fseek (ifp, data_offset + top_margin*raw_width*2, SEEK_SET); - pixel = (ushort *) calloc (raw_width, sizeof *pixel); - merror (pixel, "phase_one_load_raw()"); - for (row=0; row < height; row++) { - read_shorts (pixel, raw_width); - if (ph1.format) - for (col=0; col < raw_width; col+=2) { - a = pixel[col+0] ^ akey; - b = pixel[col+1] ^ bkey; - pixel[col+0] = (a & mask) | (b & ~mask); - pixel[col+1] = (b & mask) | (a & ~mask); - } - for (col=0; col < width; col++) - BAYER(row,col) = pixel[col+left_margin]; - } - free (pixel); - phase_one_correct(); + fseek (ifp, data_offset, SEEK_SET); + read_shorts (raw_image, raw_width*raw_height); + if (ph1.format) + for (i=0; i < raw_width*raw_height; i+=2) { + a = raw_image[i+0] ^ akey; + b = raw_image[i+1] ^ bkey; + raw_image[i+0] = (a & mask) | (b & ~mask); + raw_image[i+1] = (b & mask) | (a & ~mask); + } } unsigned CLASS ph1_bithuff (int nbits, ushort *huff) @@ -1702,15 +1700,12 @@ if (ph1.format == 5 && pixel[col] < 256) pixel[col] = curve[pixel[col]]; } - if ((unsigned) (row-top_margin) < height) - for (col=0; col < width; col++) { - i = (pixel[col+left_margin] << 2) - - ph1.black + black[row][col >= ph1.split_col]; - if (i > 0) BAYER(row-top_margin,col) = i; - } + for (col=0; col < raw_width; col++) { + i = (pixel[col] << 2) - ph1.black + black[row][col >= ph1.split_col]; + if (i > 0) RAW(row,col) = i; + } } free (pixel); - phase_one_correct(); maximum = 0xfffc - ph1.black; } @@ -1722,18 +1717,16 @@ if (!ljpeg_start (&jh, 0)) return; order = 0x4949; ph1_bits(-1); - for (row=-top_margin; row < height; row++) { - pred[0] = pred[1] = 0x8000; - for (col=-left_margin; col < raw_width-left_margin; col+=2) { + for (row=0; row < raw_height; row++) { + pred[0] = pred[1] = 0x8000 + load_flags; + for (col=0; col < raw_width; col+=2) { FORC(2) len[c] = ph1_huff(jh.huff[0]); FORC(2) { diff = ph1_bits(len[c]); if ((diff & (1 << (len[c]-1))) == 0) diff -= (1 << len[c]) - 1; if (diff == 65535) diff = -32768; - pred[c] += diff; - if (row >= 0 && (unsigned)(col+c) < width) - BAYER(row,col+c) = pred[c]; + RAW(row,col+c) = pred[c] += diff; } } } @@ -1743,32 +1736,45 @@ void CLASS leaf_hdr_load_raw() { - ushort *pixel; + ushort *pixel=0; unsigned tile=0, r, c, row, col; - pixel = (ushort *) calloc (raw_width, sizeof *pixel); - merror (pixel, "leaf_hdr_load_raw()"); + if (!filters) { + pixel = (ushort *) calloc (raw_width, sizeof *pixel); + merror (pixel, "leaf_hdr_load_raw()"); + } FORC(tiff_samples) for (r=0; r < raw_height; r++) { if (r % tile_length == 0) { fseek (ifp, data_offset + 4*tile++, SEEK_SET); - fseek (ifp, get4() + 2*left_margin, SEEK_SET); + fseek (ifp, get4(), SEEK_SET); } if (filters && c != shot_select) continue; + if (filters) pixel = raw_image + r*raw_width; read_shorts (pixel, raw_width); - if ((row = r - top_margin) >= height) continue; - for (col=0; col < width; col++) - if (filters) BAYER(row,col) = pixel[col]; - else image[row*width+col][c] = pixel[col]; + if (!filters && (row = r - top_margin) < height) + for (col=0; col < width; col++) + image[row*width+col][c] = pixel[col+left_margin]; } - free (pixel); if (!filters) { maximum = 0xffff; raw_color = 1; + free (pixel); } } -//void CLASS unpacked_load_raw(); +void CLASS unpacked_load_raw() +{ + int row, col, bits=0; + + while (1 << ++bits < (int) maximum); + read_shorts (raw_image, raw_width*raw_height); + for (row=0; row < raw_height; row++) + for (col=0; col < raw_width; col++) + if ((RAW(row,col) >>= load_flags) >> bits + && (unsigned) (row-top_margin) < height + && (unsigned) (col-left_margin) < width) derror(); +} void CLASS sinar_4shot_load_raw() { @@ -1783,6 +1789,8 @@ unpacked_load_raw(); return; } + free (raw_image); + raw_image = 0; free (image); image = (ushort (*)[4]) calloc ((iheight=height)*(iwidth=width), sizeof *image); @@ -1797,7 +1805,7 @@ if ((r = row-top_margin - (shot >> 1 & 1)) >= height) continue; for (col=0; col < raw_width; col++) { if ((c = col-left_margin - (shot & 1)) >= width) continue; - image[r*width+c][FC(row,col)] = pixel[col]; + image[r*width+c][FC(row,col)] = pixel[col]; } } } @@ -1817,7 +1825,6 @@ void CLASS packed_load_raw() { int vbits=0, bwide, pwide, rbits, bite, half, irow, row, col, val, i; - int zero=0; UINT64 bitbuf=0; if ((ushort)(raw_width * 8) >= width * tiff_bps) /* Is raw_width in bytes? */ @@ -1825,10 +1832,9 @@ else bwide = (pwide = raw_width) * tiff_bps / 8; rbits = bwide * 8 - pwide * tiff_bps; if (load_flags & 1) bwide = bwide * 16 / 15; - fseek (ifp, top_margin*bwide, SEEK_CUR); bite = 8 + (load_flags & 24); - half = (height+1) >> 1; - for (irow=0; irow < height; irow++) { + half = (raw_height+1) >> 1; + for (irow=0; irow < raw_height; irow++) { row = irow; if (load_flags & 2 && (row = irow % half * 2 + irow / half) == 1 && @@ -1847,65 +1853,30 @@ bitbuf |= (unsigned) (fgetc(ifp) << i); } val = bitbuf << (64-tiff_bps-vbits) >> (64-tiff_bps); - i = (col ^ (bite == 24)) - left_margin; - if ((unsigned) i < width) - BAYER(row,i) = val; - else if (load_flags & 32) { - black += val; - zero += !val; - } + RAW(row,col ^ (load_flags >> 6)) = val; if (load_flags & 1 && (col % 10) == 9 && fgetc(ifp) && col < width+left_margin) derror(); } vbits -= rbits; } - if (load_flags & 32 && pwide > width) - black /= (pwide - width) * height; - if (zero*4 > (pwide - width) * height) - black = 0; -} - -void CLASS unpacked_load_raw() -{ - ushort *pixel; - int row, col, bits=0; - - while (1 << ++bits < (int) maximum); - fseek (ifp, (top_margin*raw_width + left_margin) * 2, SEEK_CUR); - pixel = (ushort *) calloc (width, sizeof *pixel); - merror (pixel, "unpacked_load_raw()"); - for (row=0; row < height; row++) { - read_shorts (pixel, width); - fseek (ifp, 2*(raw_width - width), SEEK_CUR); - for (col=0; col < width; col++) - if ((BAYER2(row,col) = pixel[col] >> load_flags) >> bits) derror(); - } - free (pixel); } void CLASS nokia_load_raw() { uchar *data, *dp; - ushort *pixel, *pix; - int rev, dwide, row, c; + int rev, dwide, row, col, c; rev = 3 * (order == 0x4949); dwide = raw_width * 5 / 4; - data = (uchar *) malloc (dwide + raw_width*2); + data = (uchar *) malloc (dwide*2); merror (data, "nokia_load_raw()"); - pixel = (ushort *) (data + dwide); for (row=0; row < raw_height; row++) { if ((int) fread (data+dwide, 1, dwide, ifp) < dwide) derror(); FORC(dwide) data[c] = data[dwide+(c ^ rev)]; - for (dp=data, pix=pixel; pix < pixel+raw_width; dp+=5, pix+=4) - FORC4 pix[c] = (dp[c] << 2) | (dp[4] >> (c << 1) & 3); - if (row < top_margin) - FORC(width) black += pixel[c]; - else - FORC(width) BAYER(row-top_margin,c) = pixel[c]; + for (dp=data, col=0; col < raw_width; dp+=5, col+=4) + FORC4 RAW(row,col+c) = (dp[c] << 2) | (dp[4] >> (c << 1) & 3); } free (data); - if (top_margin) black /= top_margin * width; maximum = 0x3ff; } @@ -1943,8 +1914,7 @@ } } else if ((nonz[i & 1] = pana_bits(8)) || i > 11) pred[i & 1] = nonz[i & 1] << 4 | pana_bits(4); - if (col < width) - if ((BAYER(row,col) = pred[col & 1]) > 4098) derror(); + if ((RAW(row,col) = pred[col & 1]) > 4098 && col < width) derror(); } } @@ -1975,19 +1945,19 @@ carry[2] = carry[0] > 16 ? 0 : carry[2]+1; if (col >= width) continue; if (row < 2 && col < 2) pred = 0; - else if (row < 2) pred = BAYER(row,col-2); - else if (col < 2) pred = BAYER(row-2,col); + else if (row < 2) pred = RAW(row,col-2); + else if (col < 2) pred = RAW(row-2,col); else { - w = BAYER(row,col-2); - n = BAYER(row-2,col); - nw = BAYER(row-2,col-2); + w = RAW(row,col-2); + n = RAW(row-2,col); + nw = RAW(row-2,col-2); if ((w < nw && nw < n) || (n < nw && nw < w)) { if (ABS(w-nw) > 32 || ABS(n-nw) > 32) pred = w + n - nw; else pred = (w + n) >> 1; } else pred = ABS(w-nw) > ABS(n-nw) ? w : n; } - if ((BAYER(row,col) = pred + ((diff << 2) | low)) >> 12) derror(); + if ((RAW(row,col) = pred + ((diff << 2) | low)) >> 12) derror(); } } } @@ -2009,13 +1979,13 @@ } if ((box < 12) && (box & 1)) { for (col=0; col < 1533; col++, row ^= 1) - if (col != 1) BAYER(row,col) = (col+1) & 2 ? + if (col != 1) RAW(row,col) = (col+1) & 2 ? pixel[col/2-1] + pixel[col/2+1] : pixel[col/2] << 1; - BAYER(row,1) = pixel[1] << 1; - BAYER(row,1533) = pixel[765] << 1; + RAW(row,1) = pixel[1] << 1; + RAW(row,1533) = pixel[765] << 1; } else for (col=row & 1; col < 1534; col+=2) - BAYER(row,col) = pixel[col/2] << 1; + RAW(row,col) = pixel[col/2] << 1; } maximum = 0xff << 1; } @@ -2083,7 +2053,7 @@ } for (row=0; row < height; row++) for (col=0; col < width; col++) - BAYER(row,col) = curve[pixel[row+2][col+2]]; + RAW(row,col) = curve[pixel[row+2][col+2]]; maximum = 0x3ff; } @@ -2117,7 +2087,7 @@ 2,-26, 2,-13, 2,1, 3,-39, 4,16, 5,-55, 6,-76, 6,37 }; ushort huff[19][256]; - int row, col, tree, nreps, rep, step, i, c, s, r, x, y, val; + int row, col, tree, nreps, rep, step, i, j, k, c, s, r, x, y, val; short last[3] = { 16,16,16 }, mul[3], buf[3][3][386]; static const ushort pt[] = { 0,0, 1280,1344, 2320,3616, 3328,8000, 4095,16383, 65535,16383 }; @@ -2132,8 +2102,10 @@ s = kodak_cbpp == 243 ? 2 : 3; FORC(256) huff[18][c] = (8-s) << 8 | c >> s << s | 1 << (s-1); getbits(-1); - for (i=0; i < (int) sizeof(buf)/(int) sizeof(short); i++) - buf[0][0][i] = 2048; + for (i=0; i < 3; i++) + for (j=0; j < 3; j++) + for (k=0; k < 386; k++) + buf[i][j][k] = 2048; for (row=0; row < height; row+=4) { FORC3 mul[c] = getbits(6); FORC3 { @@ -2170,8 +2142,8 @@ for (x=0; x < width/2; x++) { val = (buf[c][y+1][x] << 4) / mul[c]; if (val < 0) val = 0; - if (c) BAYER(row+y*2+c-1,x*2+2-c) = val; - else BAYER(row+r*2+y,x*2+y) = val; + if (c) RAW(row+y*2+c-1,x*2+2-c) = val; + else RAW(row+r*2+y,x*2+y) = val; } memcpy (buf[c][0]+!c, buf[c][2], sizeof buf[c][0]-2*!c); } @@ -2181,13 +2153,13 @@ if ((x+y) & 1) { r = x ? x-1 : x+1; s = x+1 < width ? x+1 : x-1; - val = (BAYER(y,x)-2048)*2 + (BAYER(y,r)+BAYER(y,s))/2; + val = (RAW(y,x)-2048)*2 + (RAW(y,r)+RAW(y,s))/2; if (val < 0) val = 0; - BAYER(y,x) = val; + RAW(y,x) = val; } } - for (i=0; i < iheight*iwidth*4; i++) - image[0][i] = curve[image[0][i]]; + for (i=0; i < height*width; i++) + raw_image[i] = curve[raw_image[i]]; maximum = 0x3fff; } @@ -2196,6 +2168,7 @@ #ifndef HAVE_LIBJPEG void CLASS kodak_jpeg_load_raw() {} +void CLASS lossy_dng_load_raw() {} #else METHODDEF(boolean) @@ -2243,16 +2216,74 @@ jpeg_read_scanlines (&cinfo, buf, 1); pixel = (JSAMPLE (*)[3]) buf[0]; for (col=0; col < width; col+=2) { - BAYER(row+0,col+0) = pixel[col+0][1] << 1; - BAYER(row+1,col+1) = pixel[col+1][1] << 1; - BAYER(row+0,col+1) = pixel[col][0] + pixel[col+1][0]; - BAYER(row+1,col+0) = pixel[col][2] + pixel[col+1][2]; + RAW(row+0,col+0) = pixel[col+0][1] << 1; + RAW(row+1,col+1) = pixel[col+1][1] << 1; + RAW(row+0,col+1) = pixel[col][0] + pixel[col+1][0]; + RAW(row+1,col+0) = pixel[col][2] + pixel[col+1][2]; } } jpeg_finish_decompress (&cinfo); jpeg_destroy_decompress (&cinfo); maximum = 0xff << 1; } + +void CLASS lossy_dng_load_raw() +{ + struct jpeg_decompress_struct cinfo; + struct jpeg_error_mgr jerr; + JSAMPARRAY buf; + JSAMPLE (*pixel)[3]; + unsigned sorder=order, ntags, opcode, deg, i, j, c; + unsigned save=data_offset-4, trow=0, tcol=0, row, col; + ushort curve[3][256]; + double coeff[9], tot; + + fseek (ifp, meta_offset, SEEK_SET); + order = 0x4d4d; + ntags = get4(); + while (ntags--) { + opcode = get4(); get4(); get4(); + if (opcode != 8) + { fseek (ifp, get4(), SEEK_CUR); continue; } + fseek (ifp, 20, SEEK_CUR); + if ((c = get4()) > 2) break; + fseek (ifp, 12, SEEK_CUR); + if ((deg = get4()) > 8) break; + for (i=0; i <= deg && i < 9; i++) + coeff[i] = getreal(12); + for (i=0; i < 256; i++) { + for (tot=j=0; j <= deg; j++) + tot += coeff[j] * pow(i/255.0, j); + curve[c][i] = tot*0xffff; + } + } + order = sorder; + cinfo.err = jpeg_std_error (&jerr); + jpeg_create_decompress (&cinfo); + while (trow < raw_height) { + fseek (ifp, save+=4, SEEK_SET); + if (tile_length < INT_MAX) + fseek (ifp, get4(), SEEK_SET); + jpeg_stdio_src (&cinfo, ifp); + jpeg_read_header (&cinfo, TRUE); + jpeg_start_decompress (&cinfo); + buf = (*cinfo.mem->alloc_sarray) + ((j_common_ptr) &cinfo, JPOOL_IMAGE, cinfo.output_width*3, 1); + while (cinfo.output_scanline < cinfo.output_height && + (row = trow + cinfo.output_scanline) < height) { + jpeg_read_scanlines (&cinfo, buf, 1); + pixel = (JSAMPLE (*)[3]) buf[0]; + for (col=0; col < cinfo.output_width && tcol+col < width; col++) { + FORC3 image[row*width+tcol+col][c] = curve[c][pixel[col][c]]; + } + } + jpeg_abort_decompress (&cinfo); + if ((tcol += tile_width) >= raw_width) + trow += tile_length + (tcol = 0); + } + jpeg_destroy_decompress (&cinfo); + maximum = 0xffff; +} #endif void CLASS kodak_dc120_load_raw() @@ -2266,7 +2297,7 @@ if (fread (pixel, 1, 848, ifp) < 848) derror(); shift = row * mul[row & 3] + add[row & 3]; for (col=0; col < width; col++) - BAYER(row,col) = (ushort) pixel[(col + shift) % 848]; + RAW(row,col) = (ushort) pixel[(col + shift) % 848]; } maximum = 0xff; } @@ -2274,25 +2305,16 @@ void CLASS eight_bit_load_raw() { uchar *pixel; - unsigned row, col, val, lblack=0; + unsigned row, col; pixel = (uchar *) calloc (raw_width, sizeof *pixel); merror (pixel, "eight_bit_load_raw()"); - fseek (ifp, top_margin*raw_width, SEEK_CUR); - for (row=0; row < height; row++) { + for (row=0; row < raw_height; row++) { if (fread (pixel, 1, raw_width, ifp) < raw_width) derror(); - for (col=0; col < raw_width; col++) { - val = curve[pixel[col]]; - if ((unsigned) (col-left_margin) < width) - BAYER(row,col-left_margin) = val; - else lblack += val; - } + for (col=0; col < raw_width; col++) + RAW(row,col) = curve[pixel[col]]; } free (pixel); - if (raw_width > width+1) - black = lblack / ((raw_width - width) * height); - if (!strncmp(model,"DC2",3)) - black = 0; maximum = curve[0xff]; } @@ -2354,15 +2376,11 @@ pixel[pi] = val = pred + ljpeg_diff (huff[chess]); if (val >> 8) derror(); val = curve[pixel[pi++]]; - if ((unsigned) (col-left_margin) < width) - BAYER(row,col-left_margin) = val; - else black += val; + RAW(row,col) = val; } } free (pixel); FORC(2) free (huff[c]); - if (raw_width > width) - black /= (raw_width - width) * height; } int CLASS kodak_65000_decode (short *out, int bsize) @@ -2422,7 +2440,7 @@ len = MIN (256, width-col); ret = kodak_65000_decode (buf, len); for (i=0; i < len; i++) - if ((BAYER(row,col+i) = curve[ret ? buf[i] : + if ((RAW(row,col+i) = curve[ret ? buf[i] : (pred[i & 1] += buf[i])]) >> 12) derror(); } } @@ -2460,6 +2478,8 @@ int row, col, len, c, i, rgb[3]; ushort *ip=image[0]; + if (raw_image) free (raw_image); + raw_image = 0; for (row=0; row < height; row++) for (col=0; col < width; col+=256) { len = MIN (256, width-col); @@ -2514,20 +2534,13 @@ for (i=26; i-- > 22; ) key = key << 8 | head[i]; fseek (ifp, data_offset, SEEK_SET); - pixel = (ushort *) calloc (raw_width, sizeof *pixel); - merror (pixel, "sony_load_raw()"); - for (row=0; row < height; row++) { + for (row=0; row < raw_height; row++) { + pixel = raw_image + row*raw_width; if (fread (pixel, 2, raw_width, ifp) < raw_width) derror(); sony_decrypt ((unsigned int *) pixel, raw_width/2, !row, key); - for (col=9; col < left_margin; col++) - black += ntohs(pixel[col]); - for (col=0; col < width; col++) - if ((BAYER(row,col) = ntohs(pixel[col+left_margin])) >> 14) - derror(); + for (col=0; col < raw_width; col++) + if ((pixel[col] = ntohs(pixel[col])) >> 14) derror(); } - free (pixel); - if (left_margin > 9) - black /= (left_margin-9) * height; maximum = 0x3ff0; } @@ -2550,7 +2563,7 @@ if ((diff & (1 << (len-1))) == 0) diff -= (1 << len) - 1; if ((sum += diff) >> 12) derror(); - if (row < height) BAYER(row,col) = sum; + if (row < height) RAW(row,col) = sum; } } @@ -2564,7 +2577,7 @@ merror (data, "sony_arw2_load_raw()"); for (row=0; row < height; row++) { fread (data, 1, raw_width, ifp); - for (dp=data, col=0; col < width-30; dp+=16) { + for (dp=data, col=0; col < raw_width-30; dp+=16) { max = 0x7ff & (val = sget4(dp)); min = 0x7ff & val >> 11; imax = 0x0f & val >> 22; @@ -2579,7 +2592,7 @@ bit += 7; } for (i=0; i < 16; i++, col+=2) - BAYER(row,col) = curve[pix[i] << 1] >> 2; + RAW(row,col) = curve[pix[i] << 1] >> 2; col -= col & 1 ? 1:31; } } @@ -2599,7 +2612,7 @@ int s, count, bin, next, i, sym[3]; uchar diff, pred[]={0,0}; ushort data=0, range=0; - unsigned pix, row, col; + unsigned pix; fseek (ifp, seg[0][1]+1, SEEK_SET); getbits(-1); @@ -2645,12 +2658,8 @@ diff = diff ? -diff : 0x80; if ((unsigned) ftell(ifp) + 12 >= seg[1][1]) diff = 0; - pred[pix & 1] += diff; - row = pix / raw_width - top_margin; - col = pix % raw_width - left_margin; - if (row < height && col < width) - BAYER(row,col) = pred[pix & 1]; - if (!(pix & 1) && HOLE(row)) pix += 2; + raw_image[pix] = pred[pix & 1] += diff; + if (!(pix & 1) && HOLE(pix / raw_width)) pix += 2; } maximum = 0xff; } @@ -2687,21 +2696,21 @@ for (row=2; row < height-2; row++) { if (!HOLE(row)) continue; for (col=1; col < width-1; col+=4) { - val[0] = BAYER(row-1,col-1); - val[1] = BAYER(row-1,col+1); - val[2] = BAYER(row+1,col-1); - val[3] = BAYER(row+1,col+1); - BAYER(row,col) = median4(val); + val[0] = RAW(row-1,col-1); + val[1] = RAW(row-1,col+1); + val[2] = RAW(row+1,col-1); + val[3] = RAW(row+1,col+1); + RAW(row,col) = median4(val); } for (col=2; col < width-2; col+=4) if (HOLE(row-2) || HOLE(row+2)) - BAYER(row,col) = (BAYER(row,col-2) + BAYER(row,col+2)) >> 1; + RAW(row,col) = (RAW(row,col-2) + RAW(row,col+2)) >> 1; else { - val[0] = BAYER(row,col-2); - val[1] = BAYER(row,col+2); - val[2] = BAYER(row-2,col); - val[3] = BAYER(row+2,col); - BAYER(row,col) = median4(val); + val[0] = RAW(row,col-2); + val[1] = RAW(row,col+2); + val[2] = RAW(row-2,col); + val[3] = RAW(row+2,col); + RAW(row,col) = median4(val); } } } @@ -2726,6 +2735,58 @@ if (holes) fill_holes (holes); } +void CLASS redcine_load_raw() +{ +#ifdef HAVE_LIBJASPER + int c, row, col; + jas_stream_t *in; + jas_image_t *jimg; + jas_matrix_t *jmat; + jas_seqent_t *data; + ushort *img, *pix; + + jas_init(); + in = jas_stream_fopen (ifname, "rb"); + jas_stream_seek (in, data_offset+20, SEEK_SET); + jimg = jas_image_decode (in, -1, 0); + if (!jimg) longjmp (failure, 3); + jmat = jas_matrix_create (height/2, width/2); + merror (jmat, "redcine_load_raw()"); + img = (ushort *) calloc ((height+2)*(width+2), 2); + merror (img, "redcine_load_raw()"); + FORC4 { + jas_image_readcmpt (jimg, c, 0, 0, width/2, height/2, jmat); + data = jas_matrix_getref (jmat, 0, 0); + for (row = c >> 1; row < height; row+=2) + for (col = c & 1; col < width; col+=2) + img[(row+1)*(width+2)+col+1] = data[(row/2)*(width/2)+col/2]; + } + for (col=1; col <= width; col++) { + img[col] = img[2*(width+2)+col]; + img[(height+1)*(width+2)+col] = img[(height-1)*(width+2)+col]; + } + for (row=0; row < height+2; row++) { + img[row*(width+2)] = img[row*(width+2)+2]; + img[(row+1)*(width+2)-1] = img[(row+1)*(width+2)-3]; + } + for (row=1; row <= height; row++) { + pix = img + row*(width+2) + (col = 1 + (FC(row,1) & 1)); + for ( ; col <= width; col+=2, pix+=2) { + c = (((pix[0] - 0x800) << 3) + + pix[-(width+2)] + pix[width+2] + pix[-1] + pix[1]) >> 2; + pix[0] = LIM(c,0,4095); + } + } + for (row=0; row < height; row++) + for (col=0; col < width; col++) + RAW(row,col) = curve[img[(row+1)*(width+2)+col+1]]; + free (img); + jas_matrix_destroy (jmat); + jas_image_destroy (jimg); + jas_stream_close (in); +#endif +} + /* RESTRICTED code starts here */ void CLASS foveon_decoder (unsigned size, unsigned code) @@ -2801,36 +2862,21 @@ } } -void CLASS foveon_load_camf() -{ - unsigned key, i, val; - - fseek (ifp, meta_offset, SEEK_SET); - key = get4(); - fread (meta_data, 1, meta_length, ifp); - for (i=0; i < meta_length; i++) { - key = (key * 1597 + 51749) % 244944; - val = key * (INT64) 301593171 >> 24; - meta_data[i] ^= ((((key << 8) - val) >> 1) + val) >> 17; - } -} - -void CLASS foveon_load_raw() +void CLASS foveon_sd_load_raw() { struct decode *dindex; short diff[1024]; unsigned bitbuf=0; - int pred[3], fixed, row, col, bit=-1, c, i; + int pred[3], row, col, bit=-1, c, i; - fixed = get4(); read_shorts ((ushort *) diff, 1024); - if (!fixed) foveon_decoder (1024, 0); + if (!load_flags) foveon_decoder (1024, 0); for (row=0; row < height; row++) { memset (pred, 0, sizeof pred); - if (!bit && !fixed && atoi(model+2) < 14) get4(); + if (!bit && !load_flags && atoi(model+2) < 14) get4(); for (col=bit=0; col < width; col++) { - if (fixed) { + if (load_flags) { bitbuf = get4(); FORC3 pred[2-c] += diff[bitbuf >> c*10 & 0x3ff]; } @@ -2847,10 +2893,83 @@ FORC3 image[row*width+col][c] = pred[c]; } } - if (document_mode) - for (i=0; i < height*width*4; i++) - if ((short) image[0][i] < 0) image[0][i] = 0; - foveon_load_camf(); +} + +void CLASS foveon_huff (ushort *huff) +{ + int i, j, clen, code; + + huff[0] = 8; + for (i=0; i < 13; i++) { + clen = getc(ifp); + code = getc(ifp); + for (j=0; j < 256 >> clen; ) + huff[code+ ++j] = clen << 8 | i; + } + get2(); +} + +void CLASS foveon_dp_load_raw() +{ + unsigned c, roff[4], row, col, diff; + ushort huff[258], vpred[2][2], hpred[2]; + + fseek (ifp, 8, SEEK_CUR); + foveon_huff (huff); + roff[0] = 48; + FORC3 roff[c+1] = -(-(roff[c] + get4()) & -16); + FORC3 { + fseek (ifp, data_offset+roff[c], SEEK_SET); + getbits(-1); + vpred[0][0] = vpred[0][1] = vpred[1][0] = vpred[1][1] = 512; + for (row=0; row < height; row++) { + for (col=0; col < width; col++) { + diff = ljpeg_diff(huff); + if (col < 2) hpred[col] = vpred[row & 1][col] += diff; + else hpred[col & 1] += diff; + image[row*width+col][c] = hpred[col & 1]; + } + } + } +} + +void CLASS foveon_load_camf() +{ + unsigned type, wide, high, i, j, row, col, diff; + ushort huff[258], vpred[2][2] = {{512,512},{512,512}}, hpred[2]; + + fseek (ifp, meta_offset, SEEK_SET); + type = get4(); get4(); get4(); + wide = get4(); + high = get4(); + if (type == 2) { + fread (meta_data, 1, meta_length, ifp); + for (i=0; i < meta_length; i++) { + high = (high * 1597 + 51749) % 244944; + wide = high * (INT64) 301593171 >> 24; + meta_data[i] ^= ((((high << 8) - wide) >> 1) + wide) >> 17; + } + } else if (type == 4) { + free (meta_data); + meta_data = (char *) malloc (meta_length = wide*high*3/2); + merror (meta_data, "foveon_load_camf()"); + foveon_huff (huff); + get4(); + getbits(-1); + for (j=row=0; row < high; row++) { + for (col=0; col < wide; col++) { + diff = ljpeg_diff(huff); + if (col < 2) hpred[col] = vpred[row & 1][col] += diff; + else hpred[col & 1] += diff; + if (col & 1) { + meta_data[j++] = hpred[0] >> 4; + meta_data[j++] = hpred[0] << 4 | hpred[1] >> 8; + meta_data[j++] = hpred[1]; + } + } + } + } else + dcraw_message (DCRAW_ERROR,_("%s has unknown CAMF type %d.\n"), ifname_display, type); } const char * CLASS foveon_camf_param (const char *block, const char *param) @@ -2914,6 +3033,7 @@ void *dp; unsigned dim[3]; + if (!name) return 0; dp = foveon_camf_matrix (dim, name); if (!dp) return 0; memcpy (ptr, dp, size*4); @@ -2993,6 +3113,7 @@ dcraw_message (DCRAW_VERBOSE,_("Foveon interpolation...\n")); + foveon_load_camf(); foveon_fixed (dscr, 4, "DarkShieldColRange"); foveon_fixed (ppm[0][0], 27, "PostPolyMatrix"); foveon_fixed (satlev, 3, "SaturationLevel"); @@ -3066,9 +3187,10 @@ black = (float (*)[3]) calloc (height, sizeof *black); for (row=0; row < height; row++) { - for (i=0; i < 6; i++) - ddft[0][0][i] = ddft[1][0][i] + - row / (height-1.0) * (ddft[2][0][i] - ddft[1][0][i]); + for (i=0; i < 3; i++) + for (j=0; j < 2; j++) + ddft[0][i][j] = ddft[1][i][j] + + row / (height-1.0) * (ddft[2][i][j] - ddft[1][i][j]); FORC3 black[row][c] = ( foveon_avg (image[row*width]+c, dscr[0], cfilt) + foveon_avg (image[row*width]+c, dscr[1], cfilt) * 3 @@ -3112,9 +3234,10 @@ FORC3 black[row][c] += fsum[c]/2 + total[c]/(total[3]*100.0); for (row=0; row < height; row++) { - for (i=0; i < 6; i++) - ddft[0][0][i] = ddft[1][0][i] + - row / (height-1.0) * (ddft[2][0][i] - ddft[1][0][i]); + for (i=0; i < 3; i++) + for (j=0; j < 2; j++) + ddft[0][i][j] = ddft[1][i][j] + + row / (height-1.0) * (ddft[2][i][j] - ddft[1][i][j]); pix = image[row*width]; memcpy (prev, pix, sizeof prev); frow = row / (height-1.0) * (dim[2]-1); @@ -3371,6 +3494,91 @@ /* RESTRICTED code ends here */ +void CLASS crop_masked_pixels() +{ + int row, col; + unsigned r, c, m, mblack[8], zero, val; + + if (load_raw == &CLASS phase_one_load_raw || + load_raw == &CLASS phase_one_load_raw_c) + phase_one_correct(); + if (fuji_width) { + for (row=0; row < raw_height-top_margin*2; row++) { + for (col=0; col < fuji_width << !fuji_layout; col++) { + if (fuji_layout) { + r = fuji_width - 1 - col + (row >> 1); + c = col + ((row+1) >> 1); + } else { + r = fuji_width - 1 + row - (col >> 1); + c = row + ((col+1) >> 1); + } + if (r < height && c < width) + BAYER(r,c) = RAW(row+top_margin,col+left_margin); + } + } + } else { + for (row=0; row < height; row++) + for (col=0; col < width; col++) + BAYER2(row,col) = RAW(row+top_margin,col+left_margin); + } + if (mask[0][3]) goto mask_set; + if (load_raw == &CLASS canon_load_raw || + load_raw == &CLASS lossless_jpeg_load_raw) { + mask[0][1] = mask[1][1] = 2; + mask[0][3] = -2; + goto sides; + } + if (load_raw == &CLASS canon_600_load_raw || + load_raw == &CLASS sony_load_raw || + (load_raw == &CLASS eight_bit_load_raw && strncmp(model,"DC2",3)) || + load_raw == &CLASS kodak_262_load_raw || + (load_raw == &CLASS packed_load_raw && (load_flags & 32))) { +sides: + mask[0][0] = mask[1][0] = top_margin; + mask[0][2] = mask[1][2] = top_margin+height; + mask[0][3] += left_margin; + mask[1][1] += left_margin+width; + mask[1][3] += raw_width; + } + if (load_raw == &CLASS nokia_load_raw) { + mask[0][2] = top_margin; + mask[0][3] = width; + } +mask_set: + memset (mblack, 0, sizeof mblack); + for (zero=m=0; m < 8; m++) + for (row=mask[m][0]; row < mask[m][2]; row++) + for (col=mask[m][1]; col < mask[m][3]; col++) { + c = FC(row-top_margin,col-left_margin); + mblack[c] += val = RAW(row,col); + mblack[4+c]++; + zero += !val; + } + if (load_raw == &CLASS canon_600_load_raw && width < raw_width) { + black = (mblack[0]+mblack[1]+mblack[2]+mblack[3]) / + (mblack[4]+mblack[5]+mblack[6]+mblack[7]) - 4; + canon_600_correct(); + } else if (zero < mblack[4] && mblack[5] && mblack[6] && mblack[7]) + FORC4 cblack[c] = mblack[c] / mblack[4+c]; +} + +void CLASS remove_zeroes() +{ + unsigned row, col, tot, n, r, c; + + for (row=0; row < height; row++) + for (col=0; col < width; col++) + if (BAYER(row,col) == 0) { + tot = n = 0; + for (r = row-2; r <= row+2; r++) + for (c = col-2; c <= col+2; c++) + if (r < height && c < width && + FC(r,c) == FC(row,col) && BAYER(r,c)) + tot += (n++,BAYER(r,c)); + if (n) BAYER(row,col) = tot/n; + } +} + /* Seach from the current directory up to the root looking for a ".badpixels" file, and fix those pixels now. @@ -3419,7 +3627,7 @@ for (r = row-rad; r <= row+rad; r++) for (c = col-rad; c <= col+rad; c++) if ((unsigned) r < height && (unsigned) c < width && - (r != row || c != col) && fc(r,c) == fc(row,col)) { + (r != row || c != col) && fcol(r,c) == fcol(row,col)) { tot += BAYER2(r,c); n++; } @@ -3668,7 +3876,7 @@ lpass = size*((lev & 1)+1); for (row=0; row < iheight; row++) { hat_transform (temp, fimg+hpass+row*iwidth, 1, iwidth, 1 << lev); - for (col=0; col < iwidth; col++) + for (col=0; col < iwidth; col++) fimg[lpass + row*iwidth + col] = temp[col] * 0.25; } for (col=0; col < iwidth; col++) { @@ -3728,7 +3936,6 @@ float scale_mul[4], fr, fc; ushort *img=0, *pix; - FORC4 cblack[c] += black; if (user_mul[0]) memcpy (pre_mul, user_mul, sizeof pre_mul); if (use_auto_wb || (use_camera_wb && cam_mul[0] == -1)) { @@ -3742,8 +3949,8 @@ for (x=col; x < col+8 && x < right; x++) FORC4 { if (filters) { - c = FC(y,x); - val = BAYER(y,x); + c = fcol(y,x); + val = BAYER2(y,x); } else val = image[y*width+x][c]; if (val > (int)(maximum-25)) goto skip_block; @@ -3840,7 +4047,7 @@ merror (img, "pre_interpolate()"); for (row=0; row < height; row++) for (col=0; col < width; col++) { - c = fc(row,col); + c = fcol(row,col); img[row*width+col][c] = image[(row >> 1)*iwidth+(col >> 1)][c]; } free (image); @@ -3848,8 +4055,9 @@ shrink = 0; } } - if (filters && colors == 3) { - if ((mix_green = four_color_rgb)) colors++; + if (filters > 1000 && colors == 3) { + if (four_color_rgb && colors++) + mix_green = !half_size; else { for (row = FC(1,0) >> 1; row < height; row+=2) for (col = FC(row,1) & 1; col < width; col+=2) @@ -3873,11 +4081,11 @@ for (y=row-1; y != row+2; y++) for (x=col-1; x != col+2; x++) if (y >= 0 && y < height && x >= 0 && x < width) { - f = fc(y,x); + f = fcol(y,x); sum[f] += image[y*width+x][f]; sum[f+4]++; } - f = fc(row,col); + f = fcol(row,col); FORCC if (c != f && sum[c+4]) image[row*width+col][c] = sum[c] / sum[c+4]; } @@ -3885,29 +4093,31 @@ void CLASS lin_interpolate() { - int code[16][16][32], *ip, sum[4]; - int c, i, x, y, row, col, shift, color; + int code[16][16][32], size=16, *ip, sum[4]; + int f, c, i, x, y, row, col, shift, color; ushort *pix; dcraw_message (DCRAW_VERBOSE,_("Bilinear interpolation...\n")); - + if (filters == 2) size = 6; border_interpolate(1); - for (row=0; row < 16; row++) - for (col=0; col < 16; col++) { - ip = code[row][col]; + for (row=0; row < size; row++) + for (col=0; col < size; col++) { + ip = code[row][col]+1; + f = fcol(row,col); memset (sum, 0, sizeof sum); for (y=-1; y <= 1; y++) for (x=-1; x <= 1; x++) { shift = (y==0) + (x==0); - if (shift == 2) continue; - color = fc(row+y,col+x); + color = fcol(row+y,col+x); + if (color == f) continue; *ip++ = (width*y + x)*4 + color; *ip++ = shift; *ip++ = color; sum[color] += 1 << shift; } + code[row][col][0] = (ip - code[row][col]) / 3; FORCC - if (c != fc(row,col)) { + if (c != f) { *ip++ = c; *ip++ = 256 / sum[c]; } @@ -3915,9 +4125,9 @@ for (row=1; row < height-1; row++) for (col=1; col < width-1; col++) { pix = image[row*width+col]; - ip = code[row & 15][col & 15]; + ip = code[row % size][col % size]; memset (sum, 0, sizeof sum); - for (i=8; i--; ip+=3) + for (i=*ip++; i--; ip+=3) sum[ip[2]] += pix[ip[0]] << ip[1]; for (i=colors; --i; ip+=2) pix[ip[0]] = sum[ip[0]] * ip[1] >> 8; @@ -3961,27 +4171,28 @@ +1,+0,+2,+1,0,0x10 }, chood[] = { -1,-1, -1,0, -1,+1, 0,+1, +1,+1, +1,0, +1,-1, 0,-1 }; ushort (*brow[5])[4], *pix; - int prow=7, pcol=1, *ip, *code[16][16], gval[8], gmin, gmax, sum[4]; + int prow=8, pcol=2, *ip, *code[16][16], gval[8], gmin, gmax, sum[4]; int row, col, x, y, x1, x2, y1, y2, t, weight, grads, color, diag; int g, diff, thold, num, c; lin_interpolate(); dcraw_message (DCRAW_VERBOSE,_("VNG interpolation...\n")); - if (filters == 1) prow = pcol = 15; - ip = (int *) calloc ((prow+1)*(pcol+1), 1280); + if (filters == 1) prow = pcol = 16; + if (filters == 2) prow = pcol = 6; + ip = (int *) calloc (prow*pcol, 1280); merror (ip, "vng_interpolate()"); - for (row=0; row <= prow; row++) /* Precalculate for VNG */ - for (col=0; col <= pcol; col++) { + for (row=0; row < prow; row++) /* Precalculate for VNG */ + for (col=0; col < pcol; col++) { code[row][col] = ip; for (cp=terms, t=0; t < 64; t++) { y1 = *cp++; x1 = *cp++; y2 = *cp++; x2 = *cp++; weight = *cp++; grads = *cp++; - color = fc(row+y1,col+x1); - if (fc(row+y2,col+x2) != color) continue; - diag = (fc(row,col+1) == color && fc(row+1,col) == color) ? 2:1; + color = fcol(row+y1,col+x1); + if (fcol(row+y2,col+x2) != color) continue; + diag = (fcol(row,col+1) == color && fcol(row+1,col) == color) ? 2:1; if (abs(y1-y2) == diag && abs(x1-x2) == diag) continue; *ip++ = (y1*width + x1)*4 + color; *ip++ = (y2*width + x2)*4 + color; @@ -3994,8 +4205,8 @@ for (cp=chood, g=0; g < 8; g++) { y = *cp++; x = *cp++; *ip++ = (y*width + x) * 4; - color = fc(row,col); - if (fc(row+y,col+x) != color && fc(row+y*2,col+x*2) == color) + color = fcol(row,col); + if (fcol(row+y,col+x) != color && fcol(row+y*2,col+x*2) == color) *ip++ = (y*width + x) * 8 + color; else *ip++ = 0; @@ -4008,7 +4219,7 @@ for (row=2; row < height-2; row++) { /* Do VNG interpolation */ for (col=2; col < width-2; col++) { pix = image[row*width+col]; - ip = code[row & prow][col & pcol]; + ip = code[row % prow][col % pcol]; memset (gval, 0, sizeof gval); while ((g = ip[0]) != INT_MAX) { /* Calculate gradients */ diff = ABS(pix[g] - pix[ip[1]]) << ip[2]; @@ -4031,7 +4242,7 @@ } thold = gmin + (gmax >> 1); memset (sum, 0, sizeof sum); - color = fc(row,col); + color = fcol(row,col); for (num=g=0; g < 8; g++,ip+=2) { /* Average the neighbors */ if (gval[g] <= thold) { FORCC @@ -4453,12 +4664,13 @@ unsigned offset=0, entries, tag, type, len, save; unsigned ver97=0, serial=0, wbi=0, wb[4]={0,0,0,0}; uchar buf97[324], ci, cj, ck; - short sorder=order; + short morder, sorder=order; char buf[10]; /* The MakerNote might have its own TIFF header (possibly with its own byte-order!), or it might just be a table. */ + if (!strcmp(make,"Nokia")) return; fread (buf, 1, 10, ifp); if (!strncmp (buf,"KDK" ,3) || /* these aren't TIFF tables */ !strncmp (buf,"VER" ,3) || @@ -4486,10 +4698,12 @@ base = ftell(ifp)-10; fseek (ifp, -2, SEEK_CUR); order = get2(); get2(); - } else if (!strncmp (buf,"FUJIFILM",8) || - !strncmp (buf,"SONY",4) || + } else if (!strncmp (buf,"SONY",4) || !strcmp (buf,"Panasonic")) { - order = 0x4949; + goto nf; + } else if (!strncmp (buf,"FUJIFILM",8)) { + base = ftell(ifp)-10; +nf: order = 0x4949; fseek (ifp, 2, SEEK_CUR); } else if (!strcmp (buf,"OLYMP") || !strcmp (buf,"LEICA") || @@ -4506,10 +4720,12 @@ } entries = get2(); if (entries > 1000) return; + morder = order; while (entries--) { + order = morder; tiff_get (base, &tag, &type, &len, &save); tag |= uptag << 16; - if (tag == 2 && strstr(make,"NIKON")) + if (tag == 2 && strstr(make,"NIKON") && !iso_speed) iso_speed = (get2(),get2()); if (tag == 4 && len > 26 && len < 35) { if ((i=(get4(),get2())) != 0x7fff && !iso_speed) @@ -4540,11 +4756,11 @@ cam_mul[2] = getreal(type); } if (tag == 0xd && type == 7 && get2() == 0xaaaa) { - fread (buf97, 1, sizeof buf97, ifp); - i = (uchar *) memmem ((const char *)buf97, sizeof buf97, "\xbb\xbb", 2) - - buf97 + 10; /* Fix build error on MacOSX - NKBJ */ - if (i < 70 && buf97[i] < 3) - flip = "065"[buf97[i]]-'0'; + for (c=i=2; (ushort) c != 0xbbbb && (unsigned) i < len; i++) + c = c << 8 | fgetc(ifp); + while ((unsigned)(i+=4) < len-5) + if (get4() == 257 && (i=len) && (c = (get4(),fgetc(ifp))) < 3) + flip = "065"[c]-'0'; } if (tag == 0x10 && type == 4) unique_id = get4(); @@ -4627,23 +4843,21 @@ } } if (tag == 0xa1 && type == 7) { - type = order; order = 0x4949; fseek (ifp, 140, SEEK_CUR); FORC3 cam_mul[c] = get4(); - order = type; } if (tag == 0xa4 && type == 3) { fseek (ifp, wbi*48, SEEK_CUR); FORC3 cam_mul[c] = get2(); } - if (tag == 0xa7 && (unsigned) (ver97-200) < 12 && !cam_mul[0]) { + if (tag == 0xa7 && (unsigned) (ver97-200) < 17) { ci = xlat[0][serial & 0xff]; cj = xlat[1][fgetc(ifp)^fgetc(ifp)^fgetc(ifp)^fgetc(ifp)]; ck = 0x60; for (i=0; i < 324; i++) buf97[i] ^= (cj += ci * ck++); - i = "66666>666;6A"[ver97-200] - '0'; + i = "66666>666;6A;:;55"[ver97-200] - '0'; FORC4 cam_mul[c ^ (c >> 1) ^ (i & 1)] = sget2 (buf97 + (i & -2) + c*2); } @@ -4658,7 +4872,6 @@ if (tag == 0x401 && type == 4 && len == 4) FORC4 cblack[c ^ c >> 1] = get4(); if (tag == 0xe01) { /* Nikon Capture Note */ - type = order; order = 0x4949; fseek (ifp, 22, SEEK_CUR); for (offset=22; offset+22 < len; offset += 22+i) { @@ -4668,7 +4881,6 @@ if (tag == 0x76a43207) flip = get2(); else fseek (ifp, i, SEEK_CUR); } - order = type; } if (tag == 0xe80 && len == 256 && type == 7) { fseek (ifp, 48, SEEK_CUR); @@ -4715,7 +4927,8 @@ fseek (ifp, i, SEEK_CUR); get2_rggb: FORC4 cam_mul[c ^ (c >> 1)] = get2(); - fseek (ifp, 22, SEEK_CUR); + i = len >> 3 == 164 ? 112:22; + fseek (ifp, i, SEEK_CUR); FORC4 sraw_mul[c ^ (c >> 1)] = get2(); } if (tag == 0xa021) @@ -4828,7 +5041,8 @@ static const char *mod[] = { "","DCB2","Volare","Cantare","CMost","Valeo 6","Valeo 11","Valeo 22", "Valeo 11p","Valeo 17","","Aptus 17","Aptus 22","Aptus 75","Aptus 65", - "Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7" }; + "Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7", + "","","","","","","","","","","","","","","","","","AFi-II 12" }; float romm_cam[3][3]; fseek (ifp, offset, SEEK_SET); @@ -4878,6 +5092,8 @@ FORC4 fscanf (ifp, "%d", neut+c); FORC3 cam_mul[c] = (float) neut[0] / neut[c+1]; } + if (!strcmp(data,"Rows_data")) + load_flags = get4(); parse_mos (from); fseek (ifp, skip+from, SEEK_SET); } @@ -4999,8 +5215,13 @@ tiff_ifd[ifd].samples = len & 7; tiff_ifd[ifd].bps = getint(type); break; + case 61446: + raw_height = 0; + load_raw = &CLASS packed_load_raw; + load_flags = get4() && (filters=0x16161616) ? 24:80; + break; case 259: /* Compression */ - tiff_ifd[ifd].comp = get2(); + tiff_ifd[ifd].comp = getint(type); break; case 262: /* PhotometricInterpretation */ tiff_ifd[ifd].phint = get2(); @@ -5069,10 +5290,10 @@ fread (artist, 64, 1, ifp); break; case 322: /* TileWidth */ - tile_width = getint(type); + tiff_ifd[ifd].tile_width = getint(type); break; case 323: /* TileLength */ - tile_length = getint(type); + tiff_ifd[ifd].tile_length = getint(type); break; case 324: /* TileOffsets */ tiff_ifd[ifd].offset = len > 1 ? ftell(ifp) : get4(); @@ -5199,7 +5420,9 @@ break; case 46279: if (!ima_len) break; - fseek (ifp, 78, SEEK_CUR); + fseek (ifp, 38, SEEK_CUR); + case 46274: + fseek (ifp, 40, SEEK_CUR); raw_width = get4(); raw_height = get4(); left_margin = get4() & 7; @@ -5217,7 +5440,9 @@ flip = (get2() >> 7) * 90; if (width * height * 6 == ima_len) { if (flip % 180 == 90) SWAP(width,height); - filters = flip = 0; + raw_width = width; + raw_height = height; + left_margin = top_margin = filters = flip = 0; } sprintf (model, "Ixpress %d-Mp", height*width/1000000); load_raw = &CLASS imacon_full_load_raw; @@ -5346,6 +5571,14 @@ height = getint(type) - top_margin; width = getint(type) - left_margin; break; + case 50830: /* MaskedAreas */ + for (i=0; i < (int) len && i < 32; i++) + mask[0][i] = getint(type); + black = 0; + break; + case 51009: /* OpcodeList2 */ + meta_offset = ftell(ifp); + break; case 64772: /* Kodak P-series */ if (len < 13) break; fseek (ifp, 16, SEEK_CUR); @@ -5433,33 +5666,17 @@ data_offset = tiff_ifd[i].offset; tiff_flip = tiff_ifd[i].flip; tiff_samples = tiff_ifd[i].samples; + tile_width = tiff_ifd[i].tile_width; + tile_length = tiff_ifd[i].tile_length; raw = i; } } + if (!tile_width ) tile_width = INT_MAX; + if (!tile_length) tile_length = INT_MAX; for (i=tiff_nifds; i--; ) if (tiff_ifd[i].flip) tiff_flip = tiff_ifd[i].flip; if (raw >= 0 && !load_raw) switch (tiff_compress) { - case 0: case 1: - switch (tiff_bps) { - case 8: load_raw = &CLASS eight_bit_load_raw; break; - case 12: load_raw = &CLASS packed_load_raw; - if (tiff_ifd[raw].phint == 2) - load_flags = 6; - if (strncmp(make,"PENTAX",6)) break; - case 14: - case 16: load_raw = &CLASS unpacked_load_raw; break; - } - if (tiff_ifd[raw].bytes*5 == raw_width*raw_height*8) { - tiff_bps = 12; - load_raw = &CLASS packed_load_raw; - load_flags = 17; - } - break; - case 6: case 7: case 99: - load_raw = &CLASS lossless_jpeg_load_raw; break; - case 262: - load_raw = &CLASS kodak_262_load_raw; break; case 32767: if (tiff_ifd[raw].bytes == raw_width*raw_height) { tiff_bps = 12; @@ -5469,14 +5686,41 @@ raw_height += 8; load_raw = &CLASS sony_arw_load_raw; break; } - load_flags = 15; + load_flags = 79; case 32769: load_flags++; case 32770: - case 32773: - load_raw = &CLASS packed_load_raw; break; + case 32773: goto slr; + case 0: case 1: + if (tiff_ifd[raw].bytes*5 == raw_width*raw_height*8) { + load_flags = 81; + tiff_bps = 12; + } slr: + switch (tiff_bps) { + case 8: load_raw = &CLASS eight_bit_load_raw; break; + case 12: if (tiff_ifd[raw].phint == 2) + load_flags = 6; + load_raw = &CLASS packed_load_raw; break; + case 14: load_flags = 0; + case 16: load_raw = &CLASS unpacked_load_raw; break; + } + break; + case 6: case 7: case 99: + load_raw = &CLASS lossless_jpeg_load_raw; break; + case 262: + load_raw = &CLASS kodak_262_load_raw; break; case 34713: - load_raw = &CLASS nikon_compressed_load_raw; break; + if ((raw_width+9)/10*16*raw_height == tiff_ifd[raw].bytes) { + load_raw = &CLASS packed_load_raw; + load_flags = 1; + } else if (raw_width*raw_height*2 == tiff_ifd[raw].bytes) { + load_raw = &CLASS unpacked_load_raw; + load_flags = 4; + order = 0x4d4d; + } else + load_raw = &CLASS nikon_load_raw; break; + case 34892: + load_raw = &CLASS lossy_dng_load_raw; break; case 65535: load_raw = &CLASS pentax_load_raw; break; case 65000: @@ -5490,14 +5734,16 @@ } if (!dng_version) if ( (tiff_samples == 3 && tiff_ifd[raw].bytes && - tiff_bps != 14 && tiff_bps != 2048) + tiff_bps != 14 && tiff_bps != 2048 && + tiff_compress != 32769 && tiff_compress != 32770) || (tiff_bps == 8 && !strstr(make,"KODAK") && !strstr(make,"Kodak") && !strstr(model2,"DEBUG RAW"))) is_raw = 0; for (i=0; i < (int) tiff_nifds; i++) if (i != raw && tiff_ifd[i].samples == max_samp && tiff_ifd[i].width * tiff_ifd[i].height / SQR(tiff_ifd[i].bps+1) > - (int)(thumb_width * thumb_height / SQR(thumb_misc+1))) { + (int)(thumb_width * thumb_height / SQR(thumb_misc+1)) + && tiff_ifd[i].comp != 34892) { thumb_width = tiff_ifd[i].width; thumb_height = tiff_ifd[i].height; thumb_offset = tiff_ifd[i].offset; @@ -5512,10 +5758,12 @@ write_thumb = &CLASS layer_thumb; break; case 1: - if (tiff_ifd[thm].bps > 8) - thumb_load_raw = &CLASS kodak_thumb_load_raw; - else + if (tiff_ifd[thm].bps <= 8) write_thumb = &CLASS ppm_thumb; + else if (!strcmp(make,"Imacon")) + write_thumb = &CLASS ppm16_thumb; + else + thumb_load_raw = &CLASS kodak_thumb_load_raw; break; case 65000: thumb_load_raw = tiff_ifd[thm].phint == 6 ? @@ -5590,7 +5838,7 @@ } else while (isdigit(*--jext)) { if (*jext != '9') { - (*jext)++; + (*jext)++; break; } *jext = '0'; @@ -5814,7 +6062,7 @@ void CLASS parse_phase_one (int base) { - unsigned entries, tag, type, len, data, save, i, j, c; + unsigned entries, tag, len, data, save, i, j, c; float romm_cam[3][3]; char *cp; @@ -5827,7 +6075,7 @@ get4(); while (entries--) { tag = get4(); - type = get4(); + fseek (ifp, 4, SEEK_CUR); len = get4(); data = get4(); save = ftell(ifp); @@ -5858,7 +6106,7 @@ case 0x21a: ph1.tag_21a = data; break; case 0x21c: strip_offset = data+base; break; case 0x21d: ph1.black = data; break; - case 0x222: ph1.split_col = data - left_margin; break; + case 0x222: ph1.split_col = data; break; case 0x223: ph1.black_off = data+base; break; case 0x301: model[63] = 0; @@ -5899,18 +6147,18 @@ if ((width = get2()) == 4284) width += 3; } else if (tag == 0x130) { fuji_layout = fgetc(ifp) >> 7; - load_raw = fgetc(ifp) & 8 ? - &CLASS unpacked_load_raw : &CLASS fuji_load_raw; - } - if (tag == 0x2ff0) + fuji_width = !(fgetc(ifp) & 8); + } else if (tag == 0x2ff0) { FORC4 cam_mul[c ^ 1] = get2(); + } else if (tag == 0xc000) { + c = order; + order = 0x4949; + if ((width = get4()) > 10000) width = get4(); + height = get4(); + order = c; + } fseek (ifp, save+len, SEEK_SET); } - if (!raw_height) { - filters = 0x16161616; - load_raw = &CLASS packed_load_raw; - load_flags = 24; - } height <<= fuji_layout; width >>= fuji_layout; } @@ -6049,6 +6297,37 @@ data_offset += (INT64) get4() << 32; } +void CLASS parse_redcine() +{ + int len; + unsigned i, rdvo; + + order = 0x4d4d; + is_raw = 0; + fseek (ifp, 52, SEEK_SET); + width = get4(); + height = get4(); + fseek (ifp, 0, SEEK_END); + fseek (ifp, -(i = ftello(ifp) & 511), SEEK_CUR); + if (get4() != i || get4() != 0x52454f42) { + dcraw_message (DCRAW_WARNING, + _("%s: Tail is missing, parsing from head...\n"), ifname_display); + fseek (ifp, 0, SEEK_SET); + while ((len = get4()) != EOF) { + if (get4() == 0x52454456) + if (is_raw++ == shot_select) + data_offset = ftello(ifp) - 8; + fseek (ifp, len-8, SEEK_CUR); + } + } else { + rdvo = get4(); + fseek (ifp, 12, SEEK_CUR); + is_raw = get4(); + fseeko (ifp, rdvo+8 + shot_select*4, SEEK_SET); + data_offset = get4(); + } +} + char * CLASS foveon_gets (int offset, char *str, int len) { int i; @@ -6082,16 +6361,19 @@ case 0x47414d49: /* IMAG */ case 0x32414d49: /* IMA2 */ fseek (ifp, 8, SEEK_CUR); - if (get4() == 30) { /* SIGMA DP* and SD15 are unsupported */ - is_foveon = 0; - return; - } + pent = get4(); wide = get4(); high = get4(); if (wide > raw_width && high > raw_height) { + switch (pent) { + case 5: load_flags = 1; + case 6: load_raw = &CLASS foveon_sd_load_raw; break; + case 30: load_raw = &CLASS foveon_dp_load_raw; break; + default: load_raw = 0; + } raw_width = wide; raw_height = high; - data_offset = off+24; + data_offset = off+28; } fseek (ifp, off+28, SEEK_SET); if (fgetc(ifp) == 0xff && fgetc(ifp) == 0xd8 @@ -6108,10 +6390,8 @@ } break; case 0x464d4143: /* CAMF */ - meta_offset = off+24; + meta_offset = off+8; meta_length = len-28; - if (meta_length > 0x20000) - meta_length = 0x20000; break; case 0x504f5250: /* PROP */ pent = (get4(),get4()); @@ -6170,10 +6450,14 @@ { 9805,-2689,-1312,-5803,13064,3068,-2438,3075,8775 } }, { "Canon EOS D60", 0, 0xfa0, { 6188,-1341,-890,-7168,14489,2937,-2640,3228,8483 } }, + { "Canon EOS 5D Mark III", 0, 0x3c80, + { 6722,-635,-963,-4287,12460,2028,-908,2162,5668 } }, { "Canon EOS 5D Mark II", 0, 0x3cf0, { 4716,603,-830,-7798,15474,2480,-1496,1937,6651 } }, { "Canon EOS 5D", 0, 0xe6c, { 6347,-479,-972,-8297,15954,2480,-1968,2131,7649 } }, + { "Canon EOS 6D", 0, 0x3c82, + { 7034,-804,-1014,-4420,12564,2058,-851,1994,5758 } }, { "Canon EOS 7D", 0, 0x3510, { 6844,-996,-856,-3876,11761,2396,-593,1772,6198 } }, { "Canon EOS 10D", 0, 0xfa0, @@ -6202,8 +6486,16 @@ { 4763,712,-646,-6821,14399,2640,-1921,3276,6561 } }, { "Canon EOS 550D", 0, 0x3dd7, { 6941,-1164,-857,-3825,11597,2534,-416,1540,6039 } }, + { "Canon EOS 600D", 0, 0x3510, + { 6461,-907,-882,-4300,12184,2378,-819,1944,5931 } }, + { "Canon EOS 650D", 0, 0x354d, + { 6602,-841,-939,-4472,12458,2247,-975,2039,6148 } }, { "Canon EOS 1000D", 0, 0xe43, { 6771,-1139,-977,-7818,15123,2928,-1244,1437,7533 } }, + { "Canon EOS 1100D", 0, 0x3510, + { 6444,-904,-893,-4563,12308,2535,-903,2016,6728 } }, + { "Canon EOS M", 0, 0, + { 6602,-841,-939,-4472,12458,2247,-975,2039,6148 } }, { "Canon EOS-1Ds Mark III", 0, 0x3bb0, { 5859,-211,-930,-8255,16017,2353,-1732,1887,7448 } }, { "Canon EOS-1Ds Mark II", 0, 0xe80, @@ -6218,6 +6510,8 @@ { 6264,-582,-724,-8312,15948,2504,-1744,1919,8664 } }, { "Canon EOS-1DS", 0, 0xe20, { 4374,3631,-1743,-7520,15212,2472,-2892,3632,8161 } }, + { "Canon EOS-1D X", 0, 0x3c4e, + { 6847,-614,-1014,-4669,12737,2139,-1197,2488,6846 } }, { "Canon EOS-1D", 0, 0xe20, { 6806,-179,-1020,-8097,16415,1687,-3267,4236,7690 } }, { "Canon EOS", 0, 0, @@ -6234,6 +6528,10 @@ { 12177,-4817,-1069,-1612,9864,2049,-98,850,4471 } }, { "Canon PowerShot G12", 0, 0, { 13244,-5501,-1248,-1508,9858,1935,-270,1083,4366 } }, + { "Canon PowerShot G15", 0, 0, + { 7474,-2301,-567,-4056,11456,2975,-222,716,4181 } }, + { "Canon PowerShot G1 X", 0, 0, + { 7378,-1255,-1043,-4088,12251,2048,-876,1946,5805 } }, { "Canon PowerShot G1", 0, 0, { -4778,9467,2172,4743,-1141,4344,-5146,9908,6077,-1566,11051,557 } }, { "Canon PowerShot G2", 0, 0, @@ -6268,6 +6566,14 @@ { 12374,-5016,-1049,-1677,9902,2078,-83,852,4683 } }, { "Canon PowerShot S95", 0, 0, { 13440,-5896,-1279,-1236,9598,1931,-180,1001,4651 } }, + { "Canon PowerShot S100", 0, 0, + { 7968,-2565,-636,-2873,10697,2513,180,667,4211 } }, + { "Canon PowerShot S110", 0, 0, + { 8039,-2643,-654,-3783,11230,2930,-206,690,4194 } }, + { "Canon PowerShot SX1 IS", 0, 0, + { 6578,-259,-502,-5974,13030,3309,-308,1058,4970 } }, + { "Canon PowerShot SX50 HS", 0, 0, + { 12432,-4753,-1247,-2110,10691,1629,-412,1623,4926 } }, { "Canon PowerShot A470", 0, 0, /* DJC */ { 12513,-4407,-1242,-2680,10276,2405,-878,2215,4734 } }, { "Canon PowerShot A610", 0, 0, /* DJC */ @@ -6284,10 +6590,10 @@ { 14573,-5482,-1546,-1266,9799,1468,-1040,1912,3810 } }, { "Canon PowerShot S3 IS", 0, 0, /* DJC */ { 14062,-5199,-1446,-4712,12470,2243,-1286,2028,4836 } }, - { "Canon PowerShot SX1 IS", 0, 0, - { 6578,-259,-502,-5974,13030,3309,-308,1058,4970 } }, { "Canon PowerShot SX110 IS", 0, 0, /* DJC */ - { 14134,-5576,-1527,-1991,10719,1273,-1158,1929,3581 } }, + { 14134,-5576,-1527,-1991,10719,1273,-1158,1929,3581 } }, + { "Canon PowerShot SX220", 0, 0, /* DJC */ + { 13898,-5076,-1447,-1405,10109,1297,-244,1860,3687 } }, { "CASIO EX-S20", 0, 0, /* DJC */ { 11634,-3924,-1128,-4968,12954,2015,-1588,2648,7206 } }, { "CASIO EX-Z750", 0, 0, /* DJC */ @@ -6304,54 +6610,76 @@ { 7777,1285,-1053,-9280,16543,2916,-3677,5679,7060 } }, { "EPSON R-D1", 0, 0, { 6827,-1878,-732,-8429,16012,2564,-704,592,7145 } }, - { "FUJIFILM FinePix E550", 0, 0, + { "FUJIFILM E550", 0, 0, { 11044,-3888,-1120,-7248,15168,2208,-1531,2277,8069 } }, - { "FUJIFILM FinePix E900", 0, 0, + { "FUJIFILM E900", 0, 0, { 9183,-2526,-1078,-7461,15071,2574,-2022,2440,8639 } }, - { "FUJIFILM FinePix F8", 0, 0, - { 11044,-3888,-1120,-7248,15168,2208,-1531,2277,8069 } }, - { "FUJIFILM FinePix F7", 0, 0, + { "FUJIFILM F5", 0, 0, + { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, + { "FUJIFILM F6", 0, 0, + { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, + { "FUJIFILM F77", 0, 0xfe9, + { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, + { "FUJIFILM F7", 0, 0, { 10004,-3219,-1201,-7036,15047,2107,-1863,2565,7736 } }, - { "FUJIFILM FinePix S100FS", 514, 0, + { "FUJIFILM F8", 0, 0, + { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, + { "FUJIFILM S100FS", 514, 0, { 11521,-4355,-1065,-6524,13767,3058,-1466,1984,6045 } }, - { "FUJIFILM FinePix S200EXR", 512, 0x3fff, - { 0 } }, - { "FUJIFILM FinePix S20Pro", 0, 0, + { "FUJIFILM S200EXR", 512, 0x3fff, + { 11401,-4498,-1312,-5088,12751,2613,-838,1568,5941 } }, + { "FUJIFILM S20Pro", 0, 0, { 10004,-3219,-1201,-7036,15047,2107,-1863,2565,7736 } }, - { "FUJIFILM FinePix S2Pro", 128, 0, + { "FUJIFILM S2Pro", 128, 0, { 12492,-4690,-1402,-7033,15423,1647,-1507,2111,7697 } }, - { "FUJIFILM FinePix S3Pro", 0, 0, + { "FUJIFILM S3Pro", 0, 0, { 11807,-4612,-1294,-8927,16968,1988,-2120,2741,8006 } }, - { "FUJIFILM FinePix S5Pro", 0, 0, + { "FUJIFILM S5Pro", 0, 0, { 12300,-5110,-1304,-9117,17143,1998,-1947,2448,8100 } }, - { "FUJIFILM FinePix S5000", 0, 0, + { "FUJIFILM S5000", 0, 0, { 8754,-2732,-1019,-7204,15069,2276,-1702,2334,6982 } }, - { "FUJIFILM FinePix S5100", 0, 0, + { "FUJIFILM S5100", 0, 0, { 11940,-4431,-1255,-6766,14428,2542,-993,1165,7421 } }, - { "FUJIFILM FinePix S5500", 0, 0, + { "FUJIFILM S5500", 0, 0, { 11940,-4431,-1255,-6766,14428,2542,-993,1165,7421 } }, - { "FUJIFILM FinePix S5200", 0, 0, + { "FUJIFILM S5200", 0, 0, { 9636,-2804,-988,-7442,15040,2589,-1803,2311,8621 } }, - { "FUJIFILM FinePix S5600", 0, 0, + { "FUJIFILM S5600", 0, 0, { 9636,-2804,-988,-7442,15040,2589,-1803,2311,8621 } }, - { "FUJIFILM FinePix S6", 0, 0, + { "FUJIFILM S6", 0, 0, { 12628,-4887,-1401,-6861,14996,1962,-2198,2782,7091 } }, - { "FUJIFILM FinePix S7000", 0, 0, + { "FUJIFILM S7000", 0, 0, { 10190,-3506,-1312,-7153,15051,2238,-2003,2399,7505 } }, - { "FUJIFILM FinePix S9000", 0, 0, + { "FUJIFILM S9000", 0, 0, { 10491,-3423,-1145,-7385,15027,2538,-1809,2275,8692 } }, - { "FUJIFILM FinePix S9500", 0, 0, + { "FUJIFILM S9500", 0, 0, { 10491,-3423,-1145,-7385,15027,2538,-1809,2275,8692 } }, - { "FUJIFILM FinePix S9100", 0, 0, + { "FUJIFILM S9100", 0, 0, { 12343,-4515,-1285,-7165,14899,2435,-1895,2496,8800 } }, - { "FUJIFILM FinePix S9600", 0, 0, + { "FUJIFILM S9600", 0, 0, { 12343,-4515,-1285,-7165,14899,2435,-1895,2496,8800 } }, { "FUJIFILM IS-1", 0, 0, { 21461,-10807,-1441,-2332,10599,1999,289,875,7703 } }, { "FUJIFILM IS Pro", 0, 0, { 12300,-5110,-1304,-9117,17143,1998,-1947,2448,8100 } }, - { "FUJIFILM FinePix HS10 HS11", 0, 0xf68, + { "FUJIFILM HS10 HS11", 0, 0xf68, { 12440,-3954,-1183,-1123,9674,1708,-83,1614,4086 } }, + { "FUJIFILM HS20EXR", 0, 0, + { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, + { "FUJIFILM HS3", 0, 0, + { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, + { "FUJIFILM X100", 0, 0, + { 12161,-4457,-1069,-5034,12874,2400,-795,1724,6904 } }, + { "FUJIFILM X10", 0, 0, + { 13509,-6199,-1254,-4430,12733,1865,-331,1441,5022 } }, + { "FUJIFILM X-Pro1", 0, 0, + { 10413,-3996,-993,-3721,11640,2361,-733,1540,6011 } }, + { "FUJIFILM X-E1", 0, 0, + { 10413,-3996,-993,-3721,11640,2361,-733,1540,6011 } }, + { "FUJIFILM XF1", 0, 0, + { 13509,-6199,-1254,-4430,12733,1865,-331,1441,5022 } }, + { "FUJIFILM X-S1", 0, 0, + { 13509,-6199,-1254,-4430,12733,1865,-331,1441,5022 } }, { "Imacon Ixpress", 0, 0, /* DJC */ { 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } }, { "KODAK NC2000", 0, 0, @@ -6368,15 +6696,15 @@ { 10592,-2206,-967,-1944,11685,230,2206,670,1273 } }, { "KODAK EOSDCS3B", 0, 0, { 9898,-2700,-940,-2478,12219,206,1985,634,1031 } }, - { "Kodak DCS520C", 180, 0, + { "Kodak DCS520C", 178, 0, { 24542,-10860,-3401,-1490,11370,-297,2858,-605,3225 } }, - { "Kodak DCS560C", 188, 0, + { "Kodak DCS560C", 177, 0, { 20482,-7172,-3125,-1033,10410,-285,2542,226,3136 } }, - { "Kodak DCS620C", 180, 0, + { "Kodak DCS620C", 177, 0, { 23617,-10175,-3149,-2054,11749,-272,2586,-489,3453 } }, - { "Kodak DCS620X", 185, 0, + { "Kodak DCS620X", 176, 0, { 13095,-6231,154,12221,-21,-2137,895,4602,2258 } }, - { "Kodak DCS660C", 214, 0, + { "Kodak DCS660C", 173, 0, { 18244,-6351,-2739,-791,11193,-521,3711,-129,2802 } }, { "Kodak DCS720X", 0, 0, { 11775,-5884,950,9556,1846,-1286,-1019,6221,2728 } }, @@ -6402,6 +6730,8 @@ { 11313,-3559,-1101,-3893,11891,2257,-1214,2398,4908 } }, { "KODAK EasyShare Z981", 0, 0, { 12729,-4717,-1188,-1367,9187,2582,274,860,4411 } }, + { "KODAK EasyShare Z990", 0, 0xfed, + { 11749,-4048,-1309,-1867,10572,1489,-138,1449,4522 } }, { "KODAK EASYSHARE Z1015", 0, 0xef1, { 11265,-4286,-992,-4694,12343,2647,-1090,1523,5447 } }, { "Leaf CMost", 0, 0, @@ -6458,6 +6788,8 @@ { 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } }, { "NIKON D3100", 0, 0, { 7911,-2167,-813,-5327,13150,2408,-1288,2483,7968 } }, + { "NIKON D3200", 0, 0xfb9, + { 7013,-1408,-635,-5268,12902,2640,-1470,2801,7379 } }, { "NIKON D300", 0, 0, { 9030,-1992,-715,-8465,16302,2255,-2689,3217,8069 } }, { "NIKON D3X", 0, 0, @@ -6470,10 +6802,18 @@ { 8819,-2543,-911,-9025,16928,2151,-1329,1213,8449 } }, { "NIKON D40", 0, 0, { 6992,-1668,-806,-8138,15748,2543,-874,850,7897 } }, + { "NIKON D4", 0, 0, + { 8598,-2848,-857,-5618,13606,2195,-1002,1773,7137 } }, { "NIKON D5000", 0, 0xf00, { 7309,-1403,-519,-8474,16008,2622,-2433,2826,8064 } }, + { "NIKON D5100", 0, 0x3de6, + { 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } }, + { "NIKON D5200", 0, 0x3e14, + { 8322,-3112,-1047,-6367,14342,2179,-988,1638,6394 } }, { "NIKON D50", 0, 0, { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, + { "NIKON D600", 0, 0x3e07, + { 8178,-2245,-609,-4857,12394,2776,-1207,2086,7298 } }, { "NIKON D60", 0, 0, { 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } }, { "NIKON D7000", 0, 0, @@ -6482,6 +6822,8 @@ { 8139,-2171,-663,-8747,16541,2295,-1925,2008,8093 } }, { "NIKON D70", 0, 0, { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, + { "NIKON D800", 0, 0, + { 7866,-2108,-555,-4869,12483,2681,-1176,2069,7501 } }, { "NIKON D80", 0, 0, { 8629,-2410,-883,-9055,16940,2171,-1490,1363,8520 } }, { "NIKON D90", 0, 0xf00, @@ -6516,6 +6858,14 @@ { 9698,-3367,-914,-4706,12584,2368,-837,968,5801 } }, { "NIKON COOLPIX P7000", 0, 0, { 11432,-3679,-1111,-3169,11239,2202,-791,1380,4455 } }, + { "NIKON COOLPIX P7100", 0, 0, + { 11053,-4269,-1024,-1976,10182,2088,-526,1263,4469 } }, + { "NIKON COOLPIX P7700", 200, 0, + { 10321,-3920,-931,-2750,11146,1824,-442,1545,5539 } }, + { "NIKON 1 V2", 0, 0, + { 6588,-1305,-693,-3277,10987,2634,-355,2016,5106 } }, + { "NIKON 1 ", 0, 0, + { 8994,-2667,-865,-4594,12324,2552,-699,1786,6260 } }, { "OLYMPUS C5050", 0, 0, { 10508,-3124,-1273,-6079,14294,1901,-1653,2306,6237 } }, { "OLYMPUS C5060", 0, 0, @@ -6554,7 +6904,7 @@ { 8785,-2529,-1033,-7639,15624,2112,-1783,2300,7817 } }, { "OLYMPUS E-520", 0, 0xfd2, { 8344,-2322,-1020,-7596,15635,2048,-1748,2269,7287 } }, - { "OLYMPUS E-5", 0, 0, + { "OLYMPUS E-5", 0, 0xeec, { 11200,-3783,-1325,-4576,12593,2206,-695,1742,7504 } }, { "OLYMPUS E-600", 0, 0xfaf, { 8453,-2198,-1092,-7609,15681,2008,-1725,2337,7824 } }, @@ -6564,8 +6914,24 @@ { 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } }, { "OLYMPUS E-P2", 0, 0xffd, { 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } }, + { "OLYMPUS E-P3", 0, 0, + { 7575,-2159,-571,-3722,11341,2725,-1434,2819,6271 } }, + { "OLYMPUS E-PL1s", 0, 0, + { 11409,-3872,-1393,-4572,12757,2003,-709,1810,7415 } }, { "OLYMPUS E-PL1", 0, 0, { 11408,-4289,-1215,-4286,12385,2118,-387,1467,7787 } }, + { "OLYMPUS E-PL2", 0, 0, + { 15030,-5552,-1806,-3987,12387,1767,-592,1670,7023 } }, + { "OLYMPUS E-PL3", 0, 0, + { 7575,-2159,-571,-3722,11341,2725,-1434,2819,6271 } }, + { "OLYMPUS E-PL5", 0, 0xfcb, + { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } }, + { "OLYMPUS E-PM1", 0, 0, + { 7575,-2159,-571,-3722,11341,2725,-1434,2819,6271 } }, + { "OLYMPUS E-PM2", 0, 0, + { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } }, + { "OLYMPUS E-M5", 0, 0xfe1, + { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } }, { "OLYMPUS SP350", 0, 0, { 12078,-4836,-1069,-6671,14306,2578,-786,939,7418 } }, { "OLYMPUS SP3", 0, 0, @@ -6580,6 +6946,10 @@ { 10915,-3677,-982,-5587,12986,2911,-1168,1968,6223 } }, { "OLYMPUS SP570UZ", 0, 0, { 11522,-4044,-1146,-4736,12172,2904,-988,1829,6039 } }, + { "OLYMPUS XZ-1", 0, 0, + { 10901,-4095,-1074,-1141,9208,2293,-62,1417,5158 } }, + { "OLYMPUS XZ-2", 0, 0, + { 9777,-3483,-925,-2886,11297,1800,-602,1663,5134 } }, { "PENTAX *ist DL2", 0, 0, { 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } }, { "PENTAX *ist DL", 0, 0, @@ -6606,6 +6976,8 @@ { 8843,-2837,-625,-5025,12644,2668,-411,1234,7410 } }, { "PENTAX K-r", 0, 0, { 9895,-3077,-850,-5304,13035,2521,-883,1768,6936 } }, + { "PENTAX K-5 II", 0, 0, + { 8170,-2725,-639,-4440,12017,2744,-771,1465,6599 } }, { "PENTAX K-5", 0, 0, { 8713,-2833,-743,-4342,11900,2772,-722,1543,6247 } }, { "PENTAX K-7", 0, 0, @@ -6622,7 +6994,7 @@ { 10976,-4029,-1141,-7918,15491,2600,-1670,2071,8246 } }, { "Panasonic DMC-FZ3", 143, 0, { 9938,-2780,-890,-4604,12393,2480,-1117,2304,4620 } }, - { "Panasonic DMC-FZ40", 143, 0, + { "Panasonic DMC-FZ4", 143, 0, { 13639,-5535,-1371,-1698,9633,2430,316,1152,4108 } }, { "Panasonic DMC-FZ50", 0, 0, { 7906,-2709,-594,-6231,13351,3220,-1922,2631,6537 } }, @@ -6648,12 +7020,28 @@ { 8048,-2810,-623,-6450,13519,3272,-1700,2146,7049 } }, { "Panasonic DMC-LX3", 15, 0, { 8128,-2668,-655,-6134,13307,3161,-1782,2568,6083 } }, - { "LEICA D-LUX4", 15, 0, + { "LEICA D-LUX 4", 15, 0, { 8128,-2668,-655,-6134,13307,3161,-1782,2568,6083 } }, { "Panasonic DMC-LX5", 143, 0, { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } }, + { "LEICA D-LUX 5", 143, 0, + { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } }, + { "Panasonic DMC-LX7", 143, 0, + { 10148,-3743,-991,-2837,11366,1659,-701,1893,4899 } }, + { "LEICA D-LUX 6", 143, 0, + { 10148,-3743,-991,-2837,11366,1659,-701,1893,4899 } }, { "Panasonic DMC-FZ100", 143, 0xfff, { 16197,-6146,-1761,-2393,10765,1869,366,2238,5248 } }, + { "LEICA V-LUX 2", 143, 0xfff, + { 16197,-6146,-1761,-2393,10765,1869,366,2238,5248 } }, + { "Panasonic DMC-FZ150", 143, 0xfff, + { 11904,-4541,-1189,-2355,10899,1662,-296,1586,4289 } }, + { "LEICA V-LUX 3", 143, 0xfff, + { 11904,-4541,-1189,-2355,10899,1662,-296,1586,4289 } }, + { "Panasonic DMC-FZ200", 143, 0xfff, + { 8112,-2563,-740,-3730,11784,2197,-941,2075,4933 } }, + { "LEICA V-LUX 4", 143, 0xfff, + { 8112,-2563,-740,-3730,11784,2197,-941,2075,4933 } }, { "Panasonic DMC-FX150", 15, 0xfff, { 9082,-2907,-925,-6119,13377,3058,-1797,2641,5609 } }, { "Panasonic DMC-G10", 0, 0, @@ -6662,27 +7050,51 @@ { 8199,-2065,-1056,-8124,16156,2033,-2458,3022,7220 } }, { "Panasonic DMC-G2", 15, 0xf3c, { 10113,-3400,-1114,-4765,12683,2317,-377,1437,6710 } }, + { "Panasonic DMC-G3", 143, 0xfff, + { 6763,-1919,-863,-3868,11515,2684,-1216,2387,5879 } }, + { "Panasonic DMC-G5", 143, 0xfff, + { 7798,-2562,-740,-3879,11584,2613,-1055,2248,5434 } }, { "Panasonic DMC-GF1", 15, 0xf92, { 7888,-1902,-1011,-8106,16085,2099,-2353,2866,7330 } }, { "Panasonic DMC-GF2", 143, 0xfff, { 7888,-1902,-1011,-8106,16085,2099,-2353,2866,7330 } }, + { "Panasonic DMC-GF3", 143, 0xfff, + { 9051,-2468,-1204,-5212,13276,2121,-1197,2510,6890 } }, + { "Panasonic DMC-GF5", 143, 0xfff, + { 8228,-2945,-660,-3938,11792,2430,-1094,2278,5793 } }, { "Panasonic DMC-GH1", 15, 0xf92, { 6299,-1466,-532,-6535,13852,2969,-2331,3112,5984 } }, { "Panasonic DMC-GH2", 15, 0xf95, { 7780,-2410,-806,-3913,11724,2484,-1018,2390,5298 } }, + { "Panasonic DMC-GH3", 144, 0, + { 6559,-1752,-491,-3672,11407,2586,-962,1875,5130 } }, + { "Panasonic DMC-GX1", 143, 0, + { 6763,-1919,-863,-3868,11515,2684,-1216,2387,5879 } }, { "Phase One H 20", 0, 0, /* DJC */ { 1313,1855,-109,-6715,15908,808,-327,1840,6020 } }, + { "Phase One H 25", 0, 0, + { 2905,732,-237,-8134,16626,1476,-3038,4253,7517 } }, { "Phase One P 2", 0, 0, { 2905,732,-237,-8134,16626,1476,-3038,4253,7517 } }, { "Phase One P 30", 0, 0, { 4516,-245,-37,-7020,14976,2173,-3206,4671,7087 } }, { "Phase One P 45", 0, 0, { 5053,-24,-117,-5684,14076,1702,-2619,4492,5849 } }, + { "Phase One P40", 0, 0, + { 8035,435,-962,-6001,13872,2320,-1159,3065,5434 } }, { "Phase One P65", 0, 0, - { 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } }, + { 8035,435,-962,-6001,13872,2320,-1159,3065,5434 } }, + { "RED ONE", 704, 0xffff, /* DJC */ + { 21014,-7891,-2613,-3056,12201,856,-2203,5125,8042 } }, { "SAMSUNG EX1", 0, 0x3e00, { 8898,-2498,-994,-3144,11328,2066,-760,1381,4576 } }, - { "SAMSUNG NX10", 0, 0, + { "SAMSUNG EX2F", 0, 0x7ff, + { 10648,-3897,-1055,-2022,10573,1668,-492,1611,4742 } }, + { "SAMSUNG NX2", 0, 0xfff, /* NX20, NX200, NX210 */ + { 6933,-2268,-753,-4921,13387,1647,-803,1641,6096 } }, + { "SAMSUNG NX1000", 0, 0, + { 6933,-2268,-753,-4921,13387,1647,-803,1641,6096 } }, + { "SAMSUNG NX", 0, 0, /* NX5, NX10, NX11, NX100 */ { 10332,-3234,-1168,-6111,14639,1520,-1352,2647,8331 } }, { "SAMSUNG WB2000", 0, 0xfff, { 12093,-3557,-1155,-1000,9534,1733,-22,1787,4576 } }, @@ -6692,14 +7104,20 @@ { 11885,-3968,-1473,-4214,12299,1916,-835,1655,5549 } }, { "Sinar", 0, 0, /* DJC */ { 16442,-2956,-2422,-2877,12128,750,-1136,6066,4559 } }, - { "SONY DSC-F828", 491, 0, + { "SONY DSC-F828", 0, 0, { 7924,-1910,-777,-8226,15459,2998,-1517,2199,6818,-7242,11401,3481 } }, { "SONY DSC-R1", 512, 0, { 8512,-2641,-694,-8042,15670,2526,-1821,2117,7414 } }, { "SONY DSC-V3", 0, 0, { 7511,-2571,-692,-7894,15088,3060,-948,1111,8128 } }, + { "SONY DSC-RX100", 200, 0, + { 8651,-2754,-1057,-3464,12207,1373,-568,1398,4434 } }, + { "SONY DSC-RX1", 128, 0, + { 6344,-1612,-462,-4863,12477,2681,-865,1786,6899 } }, { "SONY DSLR-A100", 0, 0xfeb, { 9437,-2811,-774,-8405,16215,2290,-710,596,7181 } }, + { "SONY DSLR-A290", 0, 0, + { 6038,-1484,-579,-9145,16746,2512,-875,746,7218 } }, { "SONY DSLR-A2", 0, 0, { 9847,-3091,-928,-8485,16345,2225,-715,595,7103 } }, { "SONY DSLR-A300", 0, 0, @@ -6710,6 +7128,8 @@ { 6038,-1484,-578,-9146,16746,2513,-875,746,7217 } }, { "SONY DSLR-A380", 0, 0, { 6038,-1484,-579,-9145,16746,2512,-875,746,7218 } }, + { "SONY DSLR-A390", 0, 0, + { 6038,-1484,-579,-9145,16746,2512,-875,746,7218 } }, { "SONY DSLR-A450", 128, 0xfeb, { 4950,-580,-103,-5228,12542,3029,-709,1435,7371 } }, { "SONY DSLR-A580", 128, 0xfeb, @@ -6722,16 +7142,40 @@ { 5413,-1162,-365,-5665,13098,2866,-608,1179,8440 } }, { "SONY DSLR-A900", 128, 0, { 5209,-1072,-397,-8845,16120,2919,-1618,1803,8654 } }, + { "SONY NEX-5N", 128, 0, + { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } }, + { "SONY NEX-5R", 128, 0, + { 6129,-1545,-418,-4930,12490,2743,-977,1693,6615 } }, { "SONY NEX-3", 138, 0, /* DJC */ { 6907,-1256,-645,-4940,12621,2320,-1710,2581,6230 } }, { "SONY NEX-5", 116, 0, /* DJC */ { 6807,-1350,-342,-4216,11649,2567,-1089,2001,6420 } }, - { "SONY NEX", 128, 0, /* Adobe's matrix */ + { "SONY NEX-3", 128, 0, /* Adobe */ + { 6549,-1550,-436,-4880,12435,2753,-854,1868,6976 } }, + { "SONY NEX-5", 128, 0, /* Adobe */ { 6549,-1550,-436,-4880,12435,2753,-854,1868,6976 } }, + { "SONY NEX-6", 128, 0, + { 6129,-1545,-418,-4930,12490,2743,-977,1693,6615 } }, + { "SONY NEX-7", 128, 0, + { 5491,-1192,-363,-4951,12342,2948,-911,1722,7192 } }, + { "SONY NEX", 128, 0, /* NEX-C3, NEX-F3 */ + { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } }, { "SONY SLT-A33", 128, 0, { 6069,-1221,-366,-5221,12779,2734,-1024,2066,6834 } }, + { "SONY SLT-A35", 128, 0, + { 5986,-1618,-415,-4557,11820,3120,-681,1404,6971 } }, + { "SONY SLT-A37", 128, 0, + { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } }, { "SONY SLT-A55", 128, 0, - { 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } } + { 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } }, + { "SONY SLT-A57", 128, 0, + { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } }, + { "SONY SLT-A65", 128, 0, + { 5491,-1192,-363,-4951,12342,2948,-911,1722,7192 } }, + { "SONY SLT-A77", 128, 0, + { 5491,-1192,-363,-4951,12342,2948,-911,1722,7192 } }, + { "SONY SLT-A99", 128, 0, + { 6344,-1612,-462,-4863,12477,2681,-865,1786,6899 } }, }; double cam_xyz[4][3]; char name[130]; @@ -6867,6 +7311,7 @@ { 787456, "Creative", "PC-CAM 600" ,0 }, { 1138688, "Minolta", "RD175" ,0 }, { 3840000, "Foculus", "531C" ,0 }, + { 307200, "Generic", "640x480" ,0 }, { 786432, "AVT", "F-080C" ,0 }, { 1447680, "AVT", "F-145C" ,0 }, { 1920000, "AVT", "F-201C" ,0 }, @@ -6895,6 +7340,8 @@ { 15467760, "Canon", "PowerShot SX110 IS",0 }, { 15534576, "Canon", "PowerShot SX120 IS",0 }, { 18653760, "Canon", "PowerShot SX20 IS",0 }, + { 19131120, "Canon", "PowerShot SX220 HS",0 }, + { 21936096, "Canon", "PowerShot SX30 IS",0 }, { 5939200, "OLYMPUS", "C770UZ" ,0 }, { 1581060, "NIKON", "E900" ,1 }, /* or E900s,E910 */ { 2465792, "NIKON", "E950" ,1 }, /* or E800,E700 */ @@ -6914,12 +7361,15 @@ { 2937856, "CASIO", "EX-S20" ,1 }, { 4948608, "CASIO", "EX-S100" ,1 }, { 7542528, "CASIO", "EX-Z50" ,1 }, + { 7562048, "CASIO", "EX-Z500" ,1 }, { 7753344, "CASIO", "EX-Z55" ,1 }, { 7816704, "CASIO", "EX-Z60" ,1 }, { 10843712, "CASIO", "EX-Z75" ,1 }, { 10834368, "CASIO", "EX-Z750" ,1 }, { 12310144, "CASIO", "EX-Z850" ,1 }, + { 12489984, "CASIO", "EX-Z8" ,1 }, { 15499264, "CASIO", "EX-Z1050" ,1 }, + { 18702336, "CASIO", "EX-ZR100" ,1 }, { 7426656, "CASIO", "EX-P505" ,1 }, { 9313536, "CASIO", "EX-P600" ,1 }, { 10979200, "CASIO", "EX-P700" ,1 }, @@ -6938,7 +7388,7 @@ static const char *corp[] = { "Canon", "NIKON", "EPSON", "KODAK", "Kodak", "OLYMPUS", "PENTAX", "MINOLTA", "Minolta", "Konica", "CASIO", "Sinar", "Phase One", - "SAMSUNG", "Mamiya", "MOTOROLA" }; + "SAMSUNG", "Mamiya", "MOTOROLA", "LEICA" }; tiff_flip = flip = filters = -1; /* 0 is valid, so -1 is unknown */ raw_height = raw_width = fuji_width = fuji_layout = cr2_slice[0] = 0; @@ -6950,6 +7400,7 @@ memset (gpsdata, 0, sizeof gpsdata); memset (cblack, 0, sizeof cblack); memset (white, 0, sizeof white); + memset (mask, 0, sizeof mask); thumb_offset = thumb_length = thumb_width = thumb_height = 0; load_raw = thumb_load_raw = 0; write_thumb = &CLASS jpeg_thumb; @@ -6958,7 +7409,7 @@ timestamp = shot_order = tiff_samples = black = is_foveon = 0; mix_green = profile_length = data_error = zero_is_bad = 0; pixel_aspect = is_raw = raw_color = 1; - tile_width = tile_length = INT_MAX; + tile_width = tile_length = 0; for (i=0; i < 4; i++) { cam_mul[i] = i == 1; pre_mul[i] = i < 3; @@ -6966,7 +7417,7 @@ FORC3 rgb_cam[c][i] = c == i; } colors = 3; - for (i=0; i < 0x4000; i++) curve[i] = i; + for (i=0; i < 0x10000; i++) curve[i] = i; order = get2(); hlen = get4(); @@ -7004,9 +7455,11 @@ } else if (!strcmp (head, "qktk")) { strcpy (make, "Apple"); strcpy (model,"QuickTake 100"); + load_raw = &CLASS quicktake_100_load_raw; } else if (!strcmp (head, "qktn")) { strcpy (make, "Apple"); strcpy (model,"QuickTake 150"); + load_raw = &CLASS kodak_radc_load_raw; } else if (!memcmp (head,"FUJIFILM",8)) { fseek (ifp, 84, SEEK_SET); thumb_offset = get4(); @@ -7019,7 +7472,8 @@ if (is_raw == 2 && shot_select) parse_fuji (i); } - fseek (ifp, 100, SEEK_SET); + load_raw = &CLASS unpacked_load_raw; + fseek (ifp, 100+28*(shot_select > 0), SEEK_SET); parse_tiff (data_offset = get4()); parse_tiff (thumb_offset+12); apply_tiff(); @@ -7049,6 +7503,25 @@ data_offset += i - width * 5 / 4 * height; load_raw = &CLASS nokia_load_raw; filters = 0x61616161; + } else if (!memcmp (head,"ARRI",4)) { + order = 0x4949; + fseek (ifp, 20, SEEK_SET); + width = get4(); + height = get4(); + strcpy (make, "ARRI"); + fseek (ifp, 668, SEEK_SET); + fread (model, 1, 64, ifp); + data_offset = 4096; + load_raw = &CLASS packed_load_raw; + load_flags = 88; + filters = 0x61616161; + } else if (!memcmp (head+4,"RED1",4)) { + strcpy (make, "RED"); + strcpy (model,"ONE"); + parse_redcine(); + load_raw = &CLASS redcine_load_raw; + gamma_curve (1/2.4, 12.92, 1, 4095); + filters = 0x49494949; } else if (!memcmp (head,"DSC-Image",9)) parse_rollei(); else if (!memcmp (head,"PWAD",4)) @@ -7086,6 +7559,8 @@ i = strlen(make); /* Remove make from model */ if (!strncasecmp (model, make, i) && model[i++] == ' ') memmove (model, model+i, 64-i); + if (!strncmp (model,"FinePix ",8)) + strcpy (model, model+8); if (!strncmp (model,"Digital Camera ",15)) strcpy (model, model+15); desc[511] = artist[63] = make[63] = model[63] = model2[63] = 0; @@ -7093,23 +7568,17 @@ if (!height) height = raw_height; if (!width) width = raw_width; - if (fuji_width) { - fuji_width = (raw_width+1)/2; - width = height + fuji_width; - height = width - 1; - pixel_aspect = 1; - } if (height == 2624 && width == 3936) /* Pentax K10D and Samsung GX10 */ { height = 2616; width = 3896; } if (height == 3136 && width == 4864) /* Pentax K20D and Samsung GX20 */ { height = 3124; width = 4688; filters = 0x16161616; } - if (!strcmp(model,"K-r") || !strcmp(model,"K-x")) + if (width == 4352 && (!strcmp(model,"K-r") || !strcmp(model,"K-x"))) { width = 4309; filters = 0x16161616; } - if (!strcmp(model,"K-5")) + if (width >= 4960 && !strncmp(model,"K-5",3)) { left_margin = 10; width = 4950; filters = 0x16161616; } - if (!strcmp(model,"K-7")) + if (width == 4736 && !strcmp(model,"K-7")) { height = 3122; width = 4684; filters = 0x16161616; top_margin = 2; } - if (!strcmp(model,"645D")) + if (width == 7424 && !strcmp(model,"645D")) { height = 5502; width = 7328; filters = 0x61616161; top_margin = 29; left_margin = 48; } if (height == 3014 && width == 4096) /* Ricoh GX200 */ @@ -7119,14 +7588,14 @@ if (filters) is_raw = tiff_samples; else colors = tiff_samples; if (tiff_compress == 1) - load_raw = &CLASS adobe_dng_load_raw_nc; + load_raw = &CLASS packed_dng_load_raw; if (tiff_compress == 7) - load_raw = &CLASS adobe_dng_load_raw_lj; + load_raw = &CLASS lossless_dng_load_raw; goto dng_skip; } if ((is_canon = !strcmp(make,"Canon"))) load_raw = memcmp (head+6,"HEAPCCDR",8) ? - &CLASS lossless_jpeg_load_raw : &CLASS canon_compressed_load_raw; + &CLASS lossless_jpeg_load_raw : &CLASS canon_load_raw; if (!strcmp(make,"NIKON")) { if (!load_raw) load_raw = &CLASS packed_load_raw; @@ -7144,13 +7613,13 @@ if (height*2 < width) pixel_aspect = 0.5; if (height > width) pixel_aspect = 2; filters = 0; - load_raw = &CLASS foveon_load_raw; simple_coeff(0); } else if (is_canon && tiff_bps == 15) { switch (width) { case 3344: width -= 66; case 3872: width -= 6; } + if (height > width) SWAP(height,width); filters = 0; load_raw = &CLASS canon_sraw_load_raw; } else if (!strcmp(model,"PowerShot 600")) { @@ -7307,6 +7776,28 @@ load_raw = &CLASS packed_load_raw; load_flags = 40; zero_is_bad = 1; + } else if (!strcmp(model,"PowerShot SX220 HS")) { + height = 3043; + width = 4072; + raw_height = 3060; + raw_width = 4168; + mask[0][0] = top_margin = 16; + mask[0][2] = top_margin + height; + mask[0][3] = left_margin = 92; + load_raw = &CLASS packed_load_raw; + load_flags = 8; + zero_is_bad = 1; + } else if (!strcmp(model,"PowerShot SX30 IS")) { + height = 3254; + width = 4366; + raw_height = 3276; + raw_width = 4464; + top_margin = 10; + left_margin = 25; + filters = 0x16161616; + load_raw = &CLASS packed_load_raw; + load_flags = 40; + zero_is_bad = 1; } else if (!strcmp(model,"PowerShot Pro90 IS")) { width = 1896; colors = 4; @@ -7402,6 +7893,19 @@ top_margin = 12; left_margin = 192; goto canon_cr2; + } else if (is_canon && raw_width == 4160) { + height = 3048; + width = 4048; + top_margin = 11; + left_margin = 104; + } else if (is_canon && raw_width == 4176) { + height = 3045; + width = 4072; + left_margin = 96; + mask[0][0] = top_margin = 17; + mask[0][2] = raw_height; + mask[0][3] = 80; + filters = 0x49494949; } else if (is_canon && raw_width == 4312) { top_margin = 18; left_margin = 22; @@ -7409,6 +7913,12 @@ if (unique_id == 0x80000176) adobe_coeff ("Canon","EOS 450D"); goto canon_cr2; + } else if (is_canon && raw_width == 4352) { + top_margin = 18; + left_margin = 62; + if (unique_id == 0x80000288) + adobe_coeff ("Canon","EOS 1100D"); + goto canon_cr2; } else if (is_canon && raw_width == 4476) { top_margin = 34; left_margin = 90; @@ -7419,41 +7929,69 @@ top_margin = 10; left_margin = 12; filters = 0x49494949; + } else if (is_canon && raw_width == 4496) { + height = 3316; + width = 4404; + top_margin = 50; + left_margin = 80; } else if (is_canon && raw_width == 4832) { top_margin = unique_id == 0x80000261 ? 51:26; left_margin = 62; if (unique_id == 0x80000252) adobe_coeff ("Canon","EOS 500D"); goto canon_cr2; + } else if (is_canon && raw_width == 5108) { + top_margin = 13; + left_margin = 98; + goto canon_cr2; } else if (is_canon && raw_width == 5120) { height -= top_margin = 45; left_margin = 142; width = 4916; + } else if (is_canon && raw_width == 5280) { + top_margin = 52; + left_margin = 72; + if (unique_id == 0x80000301) + adobe_coeff ("Canon","EOS 650D"); + goto canon_cr2; } else if (is_canon && raw_width == 5344) { top_margin = 51; left_margin = 142; + if (unique_id == 0x80000269) { + top_margin = 100; + left_margin = 126; + height -= 2; + adobe_coeff ("Canon","EOS-1D X"); + } if (unique_id == 0x80000270) adobe_coeff ("Canon","EOS 550D"); + if (unique_id == 0x80000286) + adobe_coeff ("Canon","EOS 600D"); goto canon_cr2; } else if (is_canon && raw_width == 5360) { top_margin = 51; left_margin = 158; goto canon_cr2; - } else if (is_canon && raw_width == 5792) { - top_margin = 51; - left_margin = 158; + } else if (is_canon && raw_width == 5568) { + top_margin = 38; + left_margin = 72; goto canon_cr2; - } else if (is_canon && raw_width == 5108) { - top_margin = 13; - left_margin = 98; -canon_cr2: - height -= top_margin; - width -= left_margin; } else if (is_canon && raw_width == 5712) { height = 3752; width = 5640; top_margin = 20; left_margin = 62; + } else if (is_canon && raw_width == 5792) { + top_margin = 51; + left_margin = 158; +canon_cr2: + height -= top_margin; + width -= left_margin; + } else if (is_canon && raw_width == 5920) { + height = 3870; + width = 5796; + top_margin = 80; + left_margin = 122; } else if (!strcmp(model,"D1")) { cam_mul[0] *= 256/527.0; cam_mul[2] *= 256/317.0; @@ -7471,25 +8009,29 @@ !strcmp(model,"D700")) { width -= 4; left_margin = 2; - } else if (!strcmp(model,"D5000")) { - width -= 42; - } else if (!strcmp(model,"D7000")) { - width -= 44; } else if (!strcmp(model,"D3100")) { width -= 28; left_margin = 6; + } else if (!strcmp(model,"D5000") || + !strcmp(model,"D90")) { + width -= 42; + } else if (!strcmp(model,"D5100") || + !strcmp(model,"D7000")) { + width -= 44; + } else if (!strcmp(model,"D3200") || + !strcmp(model,"D600") || + !strcmp(model,"D800")) { + width -= 46; + } else if (!strcmp(model,"D4")) { + width -= 52; + left_margin = 2; } else if (!strncmp(model,"D40",3) || !strncmp(model,"D50",3) || !strncmp(model,"D70",3)) { width--; - } else if (!strcmp(model,"D90")) { - width -= 42; } else if (!strcmp(model,"D100")) { - if (tiff_compress == 34713 && !nikon_is_compressed()) { - load_raw = &CLASS packed_load_raw; - load_flags |= 1; + if (load_flags) raw_width = (width += 3) + 3; - } } else if (!strcmp(model,"D200")) { left_margin = 1; width -= 4; @@ -7502,9 +8044,15 @@ else width -= 8; } else if (!strncmp(model,"D300",4)) { width -= 32; + } else if (!strcmp(make,"NIKON") && raw_width == 4032) { + adobe_coeff ("NIKON","COOLPIX P7700"); } else if (!strncmp(model,"COOLPIX P",9)) { load_flags = 24; filters = 0x94949494; + if (model[9] == '7' && iso_speed >= 400) + black = 255; + } else if (!strncmp(model,"1 ",2)) { + height -= 2; } else if (fsize == 1581060) { height = 963; width = 1287; @@ -7608,26 +8156,24 @@ height -= top_margin = 6; } else if (!strcmp(make,"FUJIFILM")) { if (!strcmp(model+7,"S2Pro")) { - strcpy (model+7," S2Pro"); + strcpy (model,"S2Pro"); height = 2144; width = 2880; flip = 6; } else if (load_raw != &CLASS packed_load_raw) - maximum = 0x3e00; - if (is_raw == 2 && shot_select) - maximum = 0x2f00; - top_margin = (raw_height - height)/2; - left_margin = (raw_width - width )/2; - if (is_raw == 2) - data_offset += (shot_select > 0) * ( fuji_layout ? - (raw_width *= 2) : raw_height*raw_width*2 ); - if (load_raw == &CLASS fuji_load_raw) { - fuji_width = width >> !fuji_layout; - width = (height >> fuji_layout) + fuji_width; - raw_height = height; - height = width - 1; - if (~fuji_width & 1) filters = 0x49494949; + maximum = (is_raw == 2 && shot_select) ? 0x2f00 : 0x3e00; + top_margin = (raw_height - height) >> 2 << 1; + left_margin = (raw_width - width ) >> 2 << 1; + if (width == 2848) filters = 0x16161616; + if (width == 3328) { + width = 3262; + left_margin = 34; + } + if (width == 4952) { + left_margin = 0; + filters = 2; } + if (fuji_layout) raw_width *= is_raw; } else if (!strcmp(model,"RD175")) { height = 986; width = 1534; @@ -7676,6 +8222,7 @@ order = 0x4d4d; } } else if (!strcmp(model,"*ist D")) { + load_raw = &CLASS unpacked_load_raw; data_error = -1; } else if (!strcmp(model,"*ist DS")) { height -= 2; @@ -7717,10 +8264,16 @@ raw_width = fsize/height/2; order = 0x4d4d; load_raw = &CLASS unpacked_load_raw; - } else if (!strcmp(model,"NX10")) { - height -= top_margin = 4; + } else if (!strcmp(make,"SAMSUNG") && raw_width == 4704) { + height -= top_margin = 8; width -= 2 * (left_margin = 8); load_flags = 32; + } else if (!strcmp(make,"SAMSUNG") && raw_width == 5632) { + order = 0x4949; + height = 3694; + top_margin = 2; + width = 5574 - (left_margin = 32 + tiff_bps); + if (tiff_bps == 12) load_flags = 80; } else if (!strcmp(model,"EX1")) { order = 0x4949; height -= 20; @@ -7752,6 +8305,13 @@ load_raw = &CLASS unpacked_load_raw; load_flags = 6; maximum = 0x3df; + } else if (!strcmp(model,"EX2F")) { + height = 3045; + width = 4070; + top_margin = 3; + order = 0x4949; + filters = 0x49494949; + load_raw = &CLASS unpacked_load_raw; } else if (!strcmp(model,"STV680 VGA")) { height = 484; width = 644; @@ -7766,6 +8326,11 @@ width = 1600; load_raw = &CLASS unpacked_load_raw; filters = 0x49494949; + } else if (!strcmp(model,"640x480")) { + height = 480; + width = 640; + load_raw = &CLASS eight_bit_load_raw; + gamma_curve (0.45, 4.5, 1, 255); } else if (!strcmp(model,"F-080C")) { height = 768; width = 1024; @@ -7842,6 +8407,13 @@ top_margin = 4; left_margin = 41; filters = 0x61616161; + } else if (raw_width == 9044) { + height = 6716; + width = 8964; + top_margin = 8; + left_margin = 40; + black += load_flags = 256; + maximum = 0x8101; } else if (raw_width == 4090) { strcpy (model, "V96C"); height -= (top_margin = 6); @@ -7864,8 +8436,10 @@ if (ljpeg_start (&jh, 1) && jh.bits == 15) maximum = 0x1fff; if (tiff_samples > 1) filters = 0; - if (tiff_samples > 1 || tile_length < raw_height) + if (tiff_samples > 1 || tile_length < raw_height) { load_raw = &CLASS leaf_hdr_load_raw; + raw_width = tile_width; + } if ((width | height) == 2048) { if (tiff_samples == 1) { filters = 1; @@ -7926,6 +8500,7 @@ height += height & 1; filters = exif_cfa; if (width == 4100) width -= 4; + if (width == 4080) width -= 24; if (load_raw == &CLASS unpacked_load_raw) load_flags = 4; tiff_bps = 12; @@ -7944,6 +8519,9 @@ thumb_length = flen - (thumb_offset = 0xa39800); thumb_height = 480; thumb_width = 640; + } else if (!strcmp(model,"XZ-2")) { + load_raw = &CLASS packed_load_raw; + load_flags = 24; } } else if (!strcmp(model,"N Digital")) { height = 2047; @@ -7954,6 +8532,7 @@ } else if (!strcmp(model,"DSC-F828")) { width = 3288; left_margin = 5; + mask[1][3] = -17; data_offset = 862144; load_raw = &CLASS sony_load_raw; filters = 0x9c9c9c9c; @@ -7962,12 +8541,17 @@ } else if (!strcmp(model,"DSC-V3")) { width = 3109; left_margin = 59; + mask[0][1] = 9; data_offset = 787392; load_raw = &CLASS sony_load_raw; } else if (!strcmp(make,"SONY") && raw_width == 3984) { adobe_coeff ("SONY","DSC-R1"); width = 3925; order = 0x4d4d; + } else if (!strcmp(make,"SONY") && raw_width == 5504) { + width -= 8; + } else if (!strcmp(make,"SONY") && raw_width == 6048) { + width -= 24; } else if (!strcmp(model,"DSLR-A100")) { if (width == 3880) { height--; @@ -8018,7 +8602,7 @@ } else gamma_curve (0, 3.875, 1, 255); load_raw = &CLASS eight_bit_load_raw; } else if (!strncasecmp(model,"EasyShare",9)) { - data_offset = 0x15000; + data_offset = data_offset < 0x15000 ? 0x15000 : 0x17000; load_raw = &CLASS packed_load_raw; } else if (!strcasecmp(make,"KODAK")) { if (filters == UINT_MAX) filters = 0x61616161; @@ -8058,7 +8642,7 @@ data_offset = 15424; } if (!strncmp(model,"DC2",3)) { - height = 242; + raw_height = height = 242; if (flen < 100000) { raw_width = 256; width = 249; pixel_aspect = (4.0*height) / (3.0*width); @@ -8112,7 +8696,8 @@ load_raw = &CLASS kodak_radc_load_raw; filters = 0x61616161; simple_coeff(2); - } else if (!strcmp(model,"QuickTake 100")) { + } else if (!strncmp(model,"QuickTake",9)) { + if (head[5]) strcpy (model+10, "200"); fseek (ifp, 544, SEEK_SET); height = get2(); width = get2(); @@ -8122,14 +8707,6 @@ fseek (ifp, data_offset-6, SEEK_SET); flip = ~get2() & 3 ? 5:6; } - load_raw = &CLASS quicktake_100_load_raw; - filters = 0x61616161; - } else if (!strcmp(model,"QuickTake 150")) { - data_offset = 738 - head[5]; - if (head[5]) strcpy (model+10, "200"); - load_raw = &CLASS kodak_radc_load_raw; - height = 480; - width = 640; filters = 0x61616161; } else if (!strcmp(make,"Rollei") && !load_raw) { switch (raw_width) { @@ -8194,6 +8771,11 @@ height = 1931; width = 2570; raw_width = 3904; + } else if (!strcmp(model,"EX-Z500")) { + height = 1937; + width = 2577; + raw_width = 3904; + filters = 0x16161616; } else if (!strcmp(model,"EX-Z55")) { height = 1960; width = 2570; @@ -8219,10 +8801,21 @@ width = 3279; raw_width = 4928; maximum = 0xfff; + } else if (!strcmp(model,"EX-Z8")) { + height = 2467; + width = 3281; + raw_height = 2502; + raw_width = 4992; + maximum = 0xfff; } else if (fsize == 15499264) { /* EX-Z1050 or EX-Z1080 */ height = 2752; width = 3672; raw_width = 5632; + } else if (!strcmp(model,"EX-ZR100")) { + height = 3044; + width = 4072; + raw_width = 4096; + load_flags = 80; } else if (!strcmp(model,"EX-P505")) { height = 1928; width = 2568; @@ -8251,12 +8844,31 @@ } } dng_skip: + if (fuji_width) { + fuji_width = width >> !fuji_layout; + if (~fuji_width & 1) filters = 0x49494949; + width = (height >> fuji_layout) + fuji_width; + height = width - 1; + pixel_aspect = 1; + } else { + if (raw_height < height) raw_height = height; + if (raw_width < width ) raw_width = width; + } if (!tiff_bps) tiff_bps = 12; if (!maximum) maximum = (1 << tiff_bps) - 1; if (!load_raw || height < 22) is_raw = 0; +#ifndef HAVE_LIBJASPER + if (load_raw == &CLASS redcine_load_raw) { + dcraw_message (DCRAW_ERROR,_("%s: You must link dcraw with %s!!\n"), + ifname_display, "libjasper"); + is_raw = 0; + } +#endif #ifndef HAVE_LIBJPEG - if (load_raw == &CLASS kodak_jpeg_load_raw) { - dcraw_message (DCRAW_ERROR,_("%s: You must link dcraw with libjpeg!!\n"), ifname_display); + if (load_raw == &CLASS kodak_jpeg_load_raw || + load_raw == &CLASS lossy_dng_load_raw) { + dcraw_message (DCRAW_ERROR,_("%s: You must link dcraw with %s!!\n"), + ifname, "libjpeg"); is_raw = 0; } #endif @@ -8393,7 +9005,7 @@ for (j=0; j < 3; j++) { for (num = k=0; k < 3; k++) num += xyzd50_srgb[i][k] * inverse[j][k]; - oprof[pbody[j*3+23]/4+i+2] = num * 0x10000 + 0.5; + oprof[pbody[j*3+23]/4+i+2] = num * 0x10000 + 0.5; } for (i=0; i < (int)phead[0]/4; i++) oprof[i] = htonl(oprof[i]); @@ -8420,7 +9032,7 @@ FORC3 img[c] = CLIP((int) out[c]); } else if (document_mode) - img[0] = img[FC(row,col)]; + img[0] = img[fcol(row,col)]; FORCC histogram[c][img[c] >> 3]++; } if (colors == 4 && output_color) colors = 3; @@ -8702,10 +9314,10 @@ { // The following variables are static to supress clobbering warnings. // They are not thread-safe, but main() should never be called in a thread. - static int arg, status=0; + static int arg, status=0, quality, i, c; static int timestamp_only=0, thumbnail_only=0, identify_only=0; static int user_qual=-1, user_black=-1, user_sat=-1, user_flip=-1; - static int use_fuji_rotate=1, write_to_stdout=0, quality, i, c; + static int use_fuji_rotate=1, write_to_stdout=0, read_from_stdin=0; static const char *sp, *bpfile=0, *dark_frame=0, *write_ext; static char opm, opt, *ofname, *cp; static struct utimbuf ut; @@ -8819,8 +9431,10 @@ case 'a': use_auto_wb = 1; break; case 'w': use_camera_wb = 1; break; case 'M': use_camera_matrix = (opm == '+'); break; - case 'D': - case 'd': document_mode = 1 + (opt == 'D'); + case 'I': read_from_stdin = 1; break; + case 'E': document_mode++; + case 'D': document_mode++; + case 'd': document_mode++; case 'j': use_fuji_rotate = 0; break; case 'W': no_auto_bright = 1; break; case 'T': output_tiff = 1; break; @@ -8852,6 +9466,7 @@ } for ( ; arg < argc; arg++) { status = 1; + raw_image = 0; image = 0; oprof = 0; meta_data = ofname = 0; @@ -8937,12 +9552,21 @@ } else if (!is_raw) dcraw_message (DCRAW_ERROR,_("Cannot decode file %s\n"), ifname); if (!is_raw) goto next; - shrink = filters && (half_size || - ((threshold || aber[0] != 1 || aber[2] != 1) && !identify_only)); + shrink = filters && (half_size || (!identify_only && + (threshold || aber[0] != 1 || aber[2] != 1))); iheight = (height + shrink) >> shrink; iwidth = (width + shrink) >> shrink; if (identify_only) { if (verbose) { + if (document_mode == 3) { + top_margin = left_margin = fuji_width = 0; + height = raw_height; + if (width <= raw_width * 8 / tiff_bps) + width = raw_width * 8 / tiff_bps; + else width = raw_width; + } + iheight = (height + shrink) >> shrink; + iwidth = (width + shrink) >> shrink; if (use_fuji_rotate) { if (fuji_width) { fuji_width = (fuji_width - 1 + shrink) >> shrink; @@ -8961,7 +9585,7 @@ if (filters) { printf (_("\nFilter pattern: ")); for (i=0; i < 16; i++) - putchar (cdesc[fc(i >> 1,i & 1)]); + putchar (cdesc[fcol(i >> 1,i & 1)]); } printf (_("\nDaylight multipliers:")); FORCC printf (" %f", pre_mul[c]); @@ -8980,12 +9604,17 @@ memcpy (rgb_cam, cmatrix, sizeof cmatrix); raw_color = 0; } - image = (ushort (*)[4]) calloc (iheight*iwidth, sizeof *image); - merror (image, "main()"); if (meta_length) { meta_data = (char *) malloc (meta_length); merror (meta_data, "main()"); } + if (filters || colors == 1) { + raw_image = (ushort *) calloc ((raw_height+7)*raw_width, 2); + merror (raw_image, "main()"); + } else { + image = (ushort (*)[4]) calloc (iheight*iwidth, sizeof *image); + merror (image, "main()"); + } dcraw_message (DCRAW_VERBOSE,_("Loading %s %s image from %s ...\n"), make, model, ifname); if (shot_select >= is_raw) @@ -8996,7 +9625,24 @@ #else fseek (ifp, data_offset, SEEK_SET); #endif - (*this.*load_raw)(); + if (raw_image && read_from_stdin) + fread (raw_image, 2, raw_height*raw_width, stdin); + else (*this.*load_raw)(); + if (document_mode == 3) { + top_margin = left_margin = fuji_width = 0; + height = raw_height; + if (width <= raw_width * 8 / tiff_bps) + width = raw_width * 8 / tiff_bps; + else width = raw_width; + } + iheight = (height + shrink) >> shrink; + iwidth = (width + shrink) >> shrink; + if (raw_image) { + image = (ushort (*)[4]) calloc (iheight*iwidth, sizeof *image); + merror (image, "main()"); + crop_masked_pixels(); + free (raw_image); + } if (zero_is_bad) remove_zeroes(); bad_pixels (bpfile); if (dark_frame) subtract (dark_frame); @@ -9007,17 +9653,23 @@ FORC4 cblack[c] -= i; black += i; if (user_black >= 0) black = user_black; + FORC4 cblack[c] += black; if (user_sat > 0) maximum = user_sat; #ifdef COLORCHECK colorcheck(); #endif - if (is_foveon && !document_mode) foveon_interpolate(); - if (!is_foveon && document_mode < 2) scale_colors(); + if (is_foveon) { + if (document_mode || load_raw == &CLASS foveon_dp_load_raw) { + for (i=0; i < height*width*4; i++) + if ((short) image[0][i] < 0) image[0][i] = 0; + } else foveon_interpolate(); + } else if (document_mode < 2) + scale_colors(); pre_interpolate(); if (filters && !document_mode) { if (quality == 0) lin_interpolate(); - else if (quality == 1 || colors > 3) + else if (quality == 1 || colors > 3 || filters < 1000) vng_interpolate(); else if (quality == 2) ppg_interpolate(); diff -Nru ufraw-0.18/dcraw.h ufraw-0.19.1/dcraw.h --- ufraw-0.18/dcraw.h 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/dcraw.h 2013-03-05 05:40:55.000000000 +0200 @@ -1,7 +1,7 @@ /* dcraw.h - Dave Coffin's raw photo decoder - header for C++ adaptation - Copyright 1997-2010 by Dave Coffin, dcoffin a cybercom o net - Copyright 2004-2011 by Udi Fuchs, udifuchs a gmail o com + Copyright 1997-2012 by Dave Coffin, dcoffin a cybercom o net + Copyright 2004-2013 by Udi Fuchs, udifuchs a gmail o com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -12,9 +12,12 @@ It can work as either a command-line tool or called by other programs. */ -#define ushort UshORt -typedef unsigned char uchar; -typedef unsigned short ushort; +#if !defined(uchar) +#define uchar unsigned char +#endif +#if !defined(ushort) +#define ushort unsigned short +#endif /* * The following is somewhat ugly because of various requirements: @@ -50,14 +53,15 @@ unsigned thumb_length, meta_length, profile_length; unsigned thumb_misc, *oprof, fuji_layout, shot_select, multi_out; unsigned tiff_nifds, tiff_samples, tiff_bps, tiff_compress; - unsigned black, cblack[8], maximum, mix_green, raw_color, zero_is_bad; + unsigned black, cblack[4], maximum, mix_green, raw_color, zero_is_bad; unsigned zero_after_ff, is_raw, dng_version, is_foveon, data_error; unsigned tile_width, tile_length, gpsdata[32], load_flags; ushort raw_height, raw_width, height, width, top_margin, left_margin; ushort shrink, iheight, iwidth, fuji_width, thumb_width, thumb_height; - int flip, tiff_flip, colors; + ushort *raw_image, (*image)[4]; + ushort white[8][8], curve[0x10000], cr2_slice[3], sraw_mul[4]; + int mask[8][4], flip, tiff_flip, colors; double pixel_aspect, aber[4], gamm[6]; - ushort(*image)[4], white[8][8], curve[0x10000], cr2_slice[3], sraw_mul[4]; float bright, user_mul[4], threshold; int half_size, four_color_rgb, document_mode, highlight; int verbose, use_auto_wb, use_camera_wb, use_camera_matrix; @@ -77,6 +81,7 @@ struct tiff_ifd { int width, height, bps, comp, phint, offset, flip, samples, bytes; + int tile_width, tile_length; } tiff_ifd[10]; struct ph1 { @@ -94,6 +99,7 @@ unsigned ifpReadCount; unsigned ifpSize; unsigned ifpStepProgress; + int eofCount; #define STEPS 50 void ifpProgress(unsigned readCount); // Override standard io function for integrity checks and progress report @@ -111,7 +117,7 @@ ~DCRaw(); void dcraw_message(int code, const char *format, ...); /* All dcraw functions with the CLASS prefix are members of this class. */ - int fc(int row, int col); + int fcol(int row, int col); void merror(void *ptr, const char *where); void derror(); ushort sget2(uchar *s); @@ -127,36 +133,35 @@ void canon_600_auto_wb(); void canon_600_coeff(); void canon_600_load_raw(); - void remove_zeroes(); + void canon_600_correct(); int canon_s2is(); unsigned getbithuff(int nbits, ushort *huff); ushort * make_decoder_ref(const uchar **source); ushort * make_decoder(const uchar *source); void crw_init_tables(unsigned table, ushort *huff[2]); int canon_has_lowbits(); - void canon_compressed_load_raw(); + void canon_load_raw(); int ljpeg_start(struct jhead *jh, int info_only); void ljpeg_end(struct jhead *jh); int ljpeg_diff(ushort *huff); ushort * ljpeg_row(int jrow, struct jhead *jh); void lossless_jpeg_load_raw(); void canon_sraw_load_raw(); - void adobe_copy_pixel(int row, int col, ushort **rp); - void adobe_dng_load_raw_lj(); - void adobe_dng_load_raw_nc(); + void adobe_copy_pixel(unsigned row, unsigned col, ushort **rp); + void lossless_dng_load_raw(); + void packed_dng_load_raw(); void pentax_load_raw(); - void nikon_compressed_load_raw(); - int nikon_is_compressed(); + void nikon_load_raw(); int nikon_e995(); int nikon_e2100(); void nikon_3700(); int minolta_z2(); - void fuji_load_raw(); void ppm_thumb(); + void ppm16_thumb(); void layer_thumb(); void rollei_thumb(); void rollei_load_raw(); - int bayer(unsigned row, unsigned col); + int raw(unsigned row, unsigned col); void phase_one_flat_field(int is_float, int nc); void phase_one_correct(); void phase_one_load_raw(); @@ -164,10 +169,10 @@ void phase_one_load_raw_c(); void hasselblad_load_raw(); void leaf_hdr_load_raw(); + void unpacked_load_raw(); void sinar_4shot_load_raw(); void imacon_full_load_raw(); void packed_load_raw(); - void unpacked_load_raw(); void nokia_load_raw(); unsigned pana_bits(int nbits); void panasonic_load_raw(); @@ -176,6 +181,7 @@ void quicktake_100_load_raw(); void kodak_radc_load_raw(); void kodak_jpeg_load_raw(); + void lossy_dng_load_raw(); void kodak_dc120_load_raw(); void eight_bit_load_raw(); void kodak_yrgb_load_raw(); @@ -194,10 +200,13 @@ int median4(int *p); void fill_holes(int holes); void smal_v9_load_raw(); + void redcine_load_raw(); void foveon_decoder(unsigned size, unsigned code); void foveon_thumb(); + void foveon_sd_load_raw(); + void foveon_huff(ushort *huff); + void foveon_dp_load_raw(); void foveon_load_camf(); - void foveon_load_raw(); const char * foveon_camf_param(const char *block, const char *param); void * foveon_camf_matrix(unsigned dim[3], const char *name); int foveon_fixed(void *ptr, int size, const char *name); @@ -207,6 +216,8 @@ (short **curvep, float dq[3], float div[3], float filt); int foveon_apply_curve(short *curve, int i); void foveon_interpolate(); + void crop_masked_pixels(); + void remove_zeroes(); void bad_pixels(const char *fname); void subtract(const char *fname); void gamma_curve(double pwr, double ts, int mode, int imax); @@ -251,6 +262,7 @@ void parse_riff(); void parse_smal(int offset, unsigned fsize); void parse_cine(); + void parse_redcine(); char * foveon_gets(int offset, char *str, int len); void parse_foveon(); void adobe_coeff(const char *make, const char *model); diff -Nru ufraw-0.18/dcraw_indi.c ufraw-0.19.1/dcraw_indi.c --- ufraw-0.18/dcraw_indi.c 2011-02-20 10:02:59.000000000 +0200 +++ ufraw-0.19.1/dcraw_indi.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * dcraw_indi.c - DCRaw functions made independent - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * based on dcraw by Dave Coffin * http://www.cybercom.net/~dcoffin/ @@ -69,7 +69,7 @@ #define BAYER(row,col) \ image[((row) >> shrink)*iwidth + ((col) >> shrink)][FC(row,col)] -int CLASS fc_INDI(const unsigned filters, const int row, const int col) +int CLASS fcol_INDI(const unsigned filters, const int row, const int col) { static const char filter[16][16] = { { 2, 1, 1, 3, 2, 3, 2, 0, 3, 2, 3, 0, 1, 2, 1, 0 }, @@ -89,12 +89,25 @@ { 2, 1, 3, 2, 3, 1, 2, 1, 0, 3, 0, 2, 0, 2, 0, 2 }, { 0, 3, 1, 0, 0, 2, 0, 3, 2, 1, 3, 1, 1, 3, 1, 3 } }; +#ifdef UFRAW_X_TRANS + static const char filter2[6][6] = { + { 1, 1, 0, 1, 1, 2 }, + { 1, 1, 2, 1, 1, 0 }, + { 2, 0, 1, 0, 2, 1 }, + { 1, 1, 2, 1, 1, 0 }, + { 1, 1, 0, 1, 1, 2 }, + { 0, 2, 1, 2, 0, 1 } + }; +#endif - if (filters != 1) return FC(row, col); /* Assume that we are handling the Leaf CatchLight with * top_margin = 8; left_margin = 18; */ -// return filter[(row+top_margin) & 15][(col+left_margin) & 15]; - return filter[(row+8) & 15][(col+18) & 15]; +// if (filters == 1) return filter[(row+top_margin) & 15][(col+left_margin) & 15]; + if (filters == 1) return filter[(row + 8) & 15][(col + 18) & 15]; +#ifdef UFRAW_X_TRANS + if (filters == 2) return filter2[(row + 6) % 6][(col + 6) % 6]; +#endif + return FC(row, col); } static void CLASS merror(void *ptr, char *where) @@ -107,20 +120,22 @@ { int i; for (i = 0; i < sc; i++) - temp[i] = 2 * base[st*i] + base[st*(sc-i)] + base[st*(i+sc)]; + temp[i] = 2 * base[st * i] + base[st * (sc - i)] + base[st * (i + sc)]; for (; i + sc < size; i++) - temp[i] = 2 * base[st*i] + base[st*(i-sc)] + base[st*(i+sc)]; + temp[i] = 2 * base[st * i] + base[st * (i - sc)] + base[st * (i + sc)]; for (; i < size; i++) - temp[i] = 2 * base[st*i] + base[st*(i-sc)] + base[st*(2*size-2-(i+sc))]; + temp[i] = 2 * base[st * i] + base[st * (i - sc)] + base[st * (2 * size - 2 - (i + sc))]; } void CLASS wavelet_denoise_INDI(ushort(*image)[4], const int black, - const int iheight, const int iwidth, const int height, const int width, - const int colors, const int shrink, const float pre_mul[4], - const float threshold, const unsigned filters) + const int iheight, const int iwidth, + const int height, const int width, + const int colors, const int shrink, + const float pre_mul[4], const float threshold, + const unsigned filters) { - float *fimg = 0, /* *temp,*/ thold, mul[2], avg, diff; - int /*scale=1,*/ size, lev, hpass, lpass, row, col, nc, c, i, wlast; + float *fimg = 0, thold, mul[2], avg, diff; + int size, lev, hpass, lpass, row, col, nc, c, i, wlast; ushort *window[4]; static const float noise[] = { 0.8002, 0.2735, 0.1202, 0.0585, 0.0291, 0.0152, 0.0080, 0.0044 }; @@ -133,10 +148,17 @@ if ((nc = colors) == 3 && filters) nc++; progress(PROGRESS_WAVELET_DENOISE, -nc * 5); #ifdef _OPENMP -#pragma omp parallel for \ - default(none) \ - shared(nc,image,size) \ - private(c,i,hpass,lev,lpass,row,col,thold,fimg,temp) +#ifdef __sun /* Fix bug #3205673 - NKBJ */ + #pragma omp parallel for \ + default(none) \ + shared(nc,image,size,noise) \ + private(c,i,hpass,lev,lpass,row,col,thold,fimg,temp) +#else + #pragma omp parallel for \ + default(none) \ + shared(nc,image,size) \ + private(c,i,hpass,lev,lpass,row,col,thold,fimg,temp) +#endif #endif FORC(nc) { /* denoise R,G1,B,G3 individually */ fimg = (float *) malloc(size * 3 * sizeof * fimg); @@ -148,45 +170,45 @@ for (row = 0; row < iheight; row++) { hat_transform(temp, fimg + hpass + row * iwidth, 1, iwidth, 1 << lev); for (col = 0; col < iwidth; col++) - fimg[lpass + row*iwidth + col] = temp[col] * 0.25; + fimg[lpass + row * iwidth + col] = temp[col] * 0.25; } for (col = 0; col < iwidth; col++) { hat_transform(temp, fimg + lpass + col, iwidth, iheight, 1 << lev); for (row = 0; row < iheight; row++) - fimg[lpass + row*iwidth + col] = temp[row] * 0.25; + fimg[lpass + row * iwidth + col] = temp[row] * 0.25; } thold = threshold * noise[lev]; for (i = 0; i < size; i++) { - fimg[hpass+i] -= fimg[lpass+i]; - if (fimg[hpass+i] < -thold) fimg[hpass+i] += thold; - else if (fimg[hpass+i] > thold) fimg[hpass+i] -= thold; - else fimg[hpass+i] = 0; - if (hpass) fimg[i] += fimg[hpass+i]; + fimg[hpass + i] -= fimg[lpass + i]; + if (fimg[hpass + i] < -thold) fimg[hpass + i] += thold; + else if (fimg[hpass + i] > thold) fimg[hpass + i] -= thold; + else fimg[hpass + i] = 0; + if (hpass) fimg[i] += fimg[hpass + i]; } hpass = lpass; } for (i = 0; i < size; i++) - image[i][c] = CLIP(SQR(fimg[i] + fimg[lpass+i]) / 0x10000); + image[i][c] = CLIP(SQR(fimg[i] + fimg[lpass + i]) / 0x10000); free(fimg); } if (filters && colors == 3) { /* pull G1 and G3 closer together */ for (row = 0; row < 2; row++) - mul[row] = 0.125 * pre_mul[FC(row+1, 0) | 1] / pre_mul[FC(row, 0) | 1]; + mul[row] = 0.125 * pre_mul[FC(row + 1, 0) | 1] / pre_mul[FC(row, 0) | 1]; ushort window_mem[4][width]; for (i = 0; i < 4; i++) window[i] = window_mem[i]; /*(ushort *) fimg + width*i;*/ for (wlast = -1, row = 1; row < height - 1; row++) { while (wlast < row + 1) { for (wlast++, i = 0; i < 4; i++) - window[(i+3) & 3] = window[i]; + window[(i + 3) & 3] = window[i]; for (col = FC(wlast, 1) & 1; col < width; col += 2) window[2][col] = BAYER(wlast, col); } thold = threshold / 512; for (col = (FC(row, 0) & 1) + 1; col < width - 1; col += 2) { - avg = (window[0][col-1] + window[0][col+1] + - window[2][col-1] + window[2][col+1] - black * 4) - * mul[row & 1] + (window[1][col] - black) * 0.5 + black; + avg = (window[0][col - 1] + window[0][col + 1] + + window[2][col - 1] + window[2][col + 1] - black * 4) + * mul[row & 1] + (window[1][col] - black) * 0.5 + black; avg = avg < 0 ? 0 : sqrt(avg); diff = sqrt(BAYER(row, col)) - avg; if (diff < -thold) diff += thold; @@ -198,15 +220,14 @@ } } -void CLASS scale_colors_INDI(int maximum, const int black, - const int use_camera_wb, const float cam_mul[4], const int colors, - float pre_mul[4], const unsigned filters, /*const*/ ushort white[8][8], - const char *ifname_display, void *dcraw) -{ - unsigned /*bottom, right, size,*/ row, col, /*ur, uc, i, x, y,*/ c, sum[8]; - int val, dark, sat; - double /*dsum[8],*/ dmin, dmax; - float scale_mul[4]/*, fr, fc*/; +void CLASS scale_colors_INDI(const int maximum, const int black, + const int use_camera_wb, const float cam_mul[4], const int colors, + float pre_mul[4], const unsigned filters, /*const*/ ushort white[8][8], + const char *ifname_display, void *dcraw) +{ + unsigned row, col, c, sum[8]; + int val; + double dmin, dmax; if (use_camera_wb && cam_mul[0] != -1) { memset(sum, 0, sizeof sum); @@ -215,34 +236,31 @@ c = FC(row, col); if ((val = white[row][col] - black) > 0) sum[c] += val; - sum[c+4]++; + sum[c + 4]++; } if (sum[0] && sum[1] && sum[2] && sum[3]) - FORC4 pre_mul[c] = (float) sum[c+4] / sum[c]; + FORC4 pre_mul[c] = (float) sum[c + 4] / sum[c]; else if (cam_mul[0] && cam_mul[2]) /* 'sizeof pre_mul' does not work because pre_mul is an argument (UF)*/ memcpy(pre_mul, cam_mul, 4 * sizeof(float)); else dcraw_message(dcraw, DCRAW_NO_CAMERA_WB, - _("%s: Cannot use camera white balance.\n"), ifname_display); + _("%s: Cannot use camera white balance.\n"), ifname_display); } else { dcraw_message(dcraw, DCRAW_NO_CAMERA_WB, - _("%s: Cannot use camera white balance.\n"), ifname_display); + _("%s: Cannot use camera white balance.\n"), ifname_display); } if (pre_mul[3] == 0) pre_mul[3] = colors < 4 ? pre_mul[1] : 1; - dark = black; - sat = maximum; - maximum -= black; for (dmin = DBL_MAX, dmax = c = 0; c < 4; c++) { if (dmin > pre_mul[c]) dmin = pre_mul[c]; if (dmax < pre_mul[c]) dmax = pre_mul[c]; } - FORC4 scale_mul[c] = (pre_mul[c] /= dmax) * 65535.0 / maximum; + FORC4 pre_mul[c] /= dmax; dcraw_message(dcraw, DCRAW_VERBOSE, - _("Scaling with darkness %d, saturation %d, and\nmultipliers"), - dark, sat); + _("Scaling with darkness %d, saturation %d, and\nmultipliers"), + black, maximum); FORC4 dcraw_message(dcraw, DCRAW_VERBOSE, " %f", pre_mul[c]); dcraw_message(dcraw, DCRAW_VERBOSE, "\n"); @@ -250,7 +268,7 @@ } void CLASS border_interpolate_INDI(const int height, const int width, - ushort(*image)[4], const unsigned filters, int colors, int border) + ushort(*image)[4], const unsigned filters, int colors, int border) { int row, col, y, x, f, c, sum[8]; @@ -262,56 +280,60 @@ for (y = row - 1; y != row + 2; y++) for (x = col - 1; x != col + 2; x++) if (y >= 0 && y < height && x >= 0 && x < width) { - f = fc_INDI(filters, y, x); - sum[f] += image[y*width+x][f]; - sum[f+4]++; + f = fcol_INDI(filters, y, x); + sum[f] += image[y * width + x][f]; + sum[f + 4]++; } - f = fc_INDI(filters, row, col); - FORCC if (c != f && sum[c+4]) - image[row*width+col][c] = sum[c] / sum[c+4]; + f = fcol_INDI(filters, row, col); + FORCC if (c != f && sum[c + 4]) + image[row * width + col][c] = sum[c] / sum[c + 4]; } } void CLASS lin_interpolate_INDI(ushort(*image)[4], const unsigned filters, - const int width, const int height, const int colors, void *dcraw) /*UF*/ + const int width, const int height, const int colors, void *dcraw) /*UF*/ { - int code[16][16][32], *ip, sum[4]; - int c, i, x, y, row, col, shift, color; + int code[16][16][32], size = 16, *ip, sum[4]; + int f, c, i, x, y, row, col, shift, color; ushort *pix; dcraw_message(dcraw, DCRAW_VERBOSE, _("Bilinear interpolation...\n")); /*UF*/ - +#ifdef UFRAW_X_TRANS + if (filters == 2) size = 6; +#endif border_interpolate_INDI(height, width, image, filters, colors, 1); - for (row = 0; row < 16; row++) { - for (col = 0; col < 16; col++) { - ip = code[row][col]; + for (row = 0; row < size; row++) { + for (col = 0; col < size; col++) { + ip = code[row][col] + 1; + f = fcol_INDI(filters, row, col); memset(sum, 0, sizeof sum); for (y = -1; y <= 1; y++) for (x = -1; x <= 1; x++) { shift = (y == 0) + (x == 0); - if (shift == 2) continue; - color = fc_INDI(filters, row + y, col + x); + color = fcol_INDI(filters, row + y, col + x); + if (color == f) continue; *ip++ = (width * y + x) * 4 + color; *ip++ = shift; *ip++ = color; sum[color] += 1 << shift; } + code[row][col][0] = (ip - code[row][col]) / 3; FORCC - if (c != fc_INDI(filters, row, col)) { + if (c != f) { *ip++ = c; *ip++ = 256 / sum[c]; } } } #ifdef _OPENMP -#pragma omp parallel for default(shared) private(row,col,pix,ip,sum,i) + #pragma omp parallel for default(shared) private(row,col,pix,ip,sum,i) #endif for (row = 1; row < height - 1; row++) { for (col = 1; col < width - 1; col++) { - pix = image[row*width+col]; - ip = code[row & 15][col & 15]; + pix = image[row * width + col]; + ip = code[row % size][col % size]; memset(sum, 0, sizeof sum); - for (i = 8; i--; ip += 3) + for (i = *ip++; i--; ip += 3) sum[ip[2]] += pix[ip[0]] << ip[1]; for (i = colors; --i; ip += 2) pix[ip[0]] = sum[ip[0]] * ip[1] >> 8; @@ -330,7 +352,7 @@ Gradients are numbered clockwise from NW=0 to W=7. */ void CLASS vng_interpolate_INDI(ushort(*image)[4], const unsigned filters, - const int width, const int height, const int colors, void *dcraw) /*UF*/ + const int width, const int height, const int colors, void *dcraw) /*UF*/ { static const signed char *cp, terms[] = { -2, -2, +0, -1, 0, 0x01, -2, -2, +0, +0, 1, 0x01, -2, -1, -1, +0, 0, 0x01, @@ -357,19 +379,22 @@ +1, +0, +2, +1, 0, 0x10 }, chood[] = { -1, -1, -1, 0, -1, +1, 0, +1, +1, +1, +1, 0, +1, -1, 0, -1 }; ushort(*brow[4])[4], *pix; - int prow = 7, pcol = 1, *ip, *code[16][16], gval[8], gmin, gmax, sum[4]; + int prow = 8, pcol = 2, *ip, *code[16][16], gval[8], gmin, gmax, sum[4]; int row, col, x, y, x1, x2, y1, y2, t, weight, grads, color, diag; int g, diff, thold, num, c; - ushort rowtmp[4][width*4]; + ushort rowtmp[4][width * 4]; lin_interpolate_INDI(image, filters, width, height, colors, dcraw); /*UF*/ dcraw_message(dcraw, DCRAW_VERBOSE, _("VNG interpolation...\n")); /*UF*/ - if (filters == 1) prow = pcol = 15; - int *ipalloc = ip = (int *) calloc((prow + 1) * (pcol + 1), 1280); + if (filters == 1) prow = pcol = 16; +#ifdef UFRAW_X_TRANS + if (filters == 2) prow = pcol = 6; +#endif + int *ipalloc = ip = (int *) calloc(prow * pcol, 1280); merror(ip, "vng_interpolate()"); - for (row = 0; row <= prow; row++) /* Precalculate for VNG */ - for (col = 0; col <= pcol; col++) { + for (row = 0; row < prow; row++) /* Precalculate for VNG */ + for (col = 0; col < pcol; col++) { code[row][col] = ip; for (cp = terms, t = 0; t < 64; t++) { y1 = *cp++; @@ -378,9 +403,9 @@ x2 = *cp++; weight = *cp++; grads = *cp++; - color = fc_INDI(filters, row + y1, col + x1); - if (fc_INDI(filters, row + y2, col + x2) != color) continue; - diag = (fc_INDI(filters, row, col + 1) == color && fc_INDI(filters, row + 1, col) == color) ? 2 : 1; + color = fcol_INDI(filters, row + y1, col + x1); + if (fcol_INDI(filters, row + y2, col + x2) != color) continue; + diag = (fcol_INDI(filters, row, col + 1) == color && fcol_INDI(filters, row + 1, col) == color) ? 2 : 1; if (abs(y1 - y2) == diag && abs(x1 - x2) == diag) continue; *ip++ = (y1 * width + x1) * 4 + color; *ip++ = (y2 * width + x2) * 4 + color; @@ -394,8 +419,8 @@ y = *cp++; x = *cp++; *ip++ = (y * width + x) * 4; - color = fc_INDI(filters, row, col); - if (fc_INDI(filters, row + y, col + x) != color && fc_INDI(filters, row + y * 2, col + x * 2) == color) + color = fcol_INDI(filters, row, col); + if (fcol_INDI(filters, row + y, col + x) != color && fcol_INDI(filters, row + y * 2, col + x * 2) == color) *ip++ = (y * width + x) * 8 + color; else *ip++ = 0; @@ -403,7 +428,7 @@ } progress(PROGRESS_INTERPOLATE, -height); #ifdef _OPENMP -#pragma omp parallel \ + #pragma omp parallel \ default(none) \ shared(image,code,prow,pcol) \ private(row,col,g,brow,rowtmp,pix,ip,gval,diff,gmin,gmax,thold,sum,color,num,c,t) @@ -417,8 +442,8 @@ for (g = 0; g < 4; g++) brow[g] = &rowtmp[(row + g - 2) % 4]; for (col = 2; col < width - 2; col++) { - pix = image[row*width+col]; - ip = code[row & prow][col & pcol]; + pix = image[row * width + col]; + ip = code[row % prow][col % pcol]; memset(gval, 0, sizeof gval); while ((g = ip[0]) != INT_MAX) { /* Calculate gradients */ diff = ABS(pix[g] - pix[ip[1]]) << ip[2]; @@ -441,7 +466,7 @@ } thold = gmin + (gmax >> 1); memset(sum, 0, sizeof sum); - color = fc_INDI(filters, row, col); + color = fcol_INDI(filters, row, col); for (num = g = 0; g < 8; g++, ip += 2) { /* Average the neighbors */ if (gval[g] <= thold) { FORCC @@ -459,12 +484,13 @@ brow[2][col][c] = CLIP(t); } } - if (row > start_row + 1) /* Write buffer to image */ - memcpy(image[(row-2)*width+2], brow[0] + 2, (width - 4)*sizeof * image); - } - if (row == height - 2) { - memcpy(image[(row-2)*width+2], brow[0] + 2, (width - 4)*sizeof * image); - memcpy(image[(row-1)*width+2], brow[1] + 2, (width - 4)*sizeof * image); + /* Write buffer to image */ + if ((row > start_row + 1) || (row == height - 2)) + memcpy(image[(row - 2)*width + 2], brow[0] + 2, (width - 4)*sizeof * image); + if (row == height - 2) { + memcpy(image[(row - 1)*width + 2], brow[1] + 2, (width - 4)*sizeof * image); + break; + } } } free(ipalloc); @@ -474,7 +500,8 @@ Patterned Pixel Grouping Interpolation by Alain Desbiolles */ void CLASS ppg_interpolate_INDI(ushort(*image)[4], const unsigned filters, - const int width, const int height, const int colors, void *dcraw) + const int width, const int height, + const int colors, void *dcraw) { int dir[5] = { 1, width, -1, -width, 1 }; int row, col, diff[2], guess[2], c, d, i; @@ -484,27 +511,27 @@ dcraw_message(dcraw, DCRAW_VERBOSE, _("PPG interpolation...\n")); /*UF*/ #ifdef _OPENMP -#pragma omp parallel \ - default(none) \ - shared(image,dir) \ - private(row,col,i,d,c,pix,diff,guess) + #pragma omp parallel \ + default(none) \ + shared(image,dir) \ + private(row,col,i,d,c,pix,diff,guess) #endif { /* Fill in the green layer with gradients and pattern recognition: */ #ifdef _OPENMP -#pragma omp for + #pragma omp for #endif for (row = 3; row < height - 3; row++) { for (col = 3 + (FC(row, 3) & 1), c = FC(row, col); col < width - 3; col += 2) { pix = image + row * width + col; for (i = 0; (d = dir[i]) > 0; i++) { guess[i] = (pix[-d][1] + pix[0][c] + pix[d][1]) * 2 - - pix[-2*d][c] - pix[2*d][c]; - diff[i] = (ABS(pix[-2*d][c] - pix[ 0][c]) + - ABS(pix[ 2*d][c] - pix[ 0][c]) + + - pix[-2 * d][c] - pix[2 * d][c]; + diff[i] = (ABS(pix[-2 * d][c] - pix[ 0][c]) + + ABS(pix[ 2 * d][c] - pix[ 0][c]) + ABS(pix[ -d][1] - pix[ d][1])) * 3 + - (ABS(pix[ 3*d][1] - pix[ d][1]) + - ABS(pix[-3*d][1] - pix[-d][1])) * 2; + (ABS(pix[ 3 * d][1] - pix[ d][1]) + + ABS(pix[-3 * d][1] - pix[-d][1])) * 2; } d = dir[i = diff[0] > diff[1]]; pix[0][1] = ULIM(guess[i] >> 2, pix[d][1], pix[-d][1]); @@ -512,7 +539,7 @@ } /* Calculate red and blue for each green pixel: */ #ifdef _OPENMP -#pragma omp for + #pragma omp for #endif for (row = 1; row < height - 1; row++) { for (col = 1 + (FC(row, 2) & 1), c = FC(row, col + 1); col < width - 1; col += 2) { @@ -524,12 +551,12 @@ } /* Calculate blue for red pixels and vice versa: */ #ifdef _OPENMP -#pragma omp for + #pragma omp for #endif for (row = 1; row < height - 1; row++) { for (col = 1 + (FC(row, 1) & 1), c = 2 - FC(row, col); col < width - 1; col += 2) { pix = image + row * width + col; - for (i = 0; (d = dir[i] + dir[i+1]) > 0; i++) { + for (i = 0; (d = dir[i] + dir[i + 1]) > 0; i++) { diff[i] = ABS(pix[-d][c] - pix[d][c]) + ABS(pix[-d][1] - pix[0][1]) + ABS(pix[ d][1] - pix[0][1]); @@ -552,8 +579,9 @@ #define TS 256 /* Tile Size */ void CLASS ahd_interpolate_INDI(ushort(*image)[4], const unsigned filters, - const int width, const int height, const int colors, - const float rgb_cam[3][4], void *dcraw) + const int width, const int height, + const int colors, const float rgb_cam[3][4], + void *dcraw) { int i, j, k, top, left, row, col, tr, tc, c, d, val, hm[2]; ushort(*pix)[4], (*rix)[3]; @@ -567,20 +595,20 @@ dcraw_message(dcraw, DCRAW_VERBOSE, _("AHD interpolation...\n")); /*UF*/ #ifdef _OPENMP -#pragma omp parallel \ - default(shared) \ - private(top, left, row, col, pix, rix, lix, c, xyz, val, d, tc, tr, i, j, k, ldiff, abdiff, leps, abeps, hm, buffer, rgb, lab, homo, r) + #pragma omp parallel \ + default(shared) \ + private(top, left, row, col, pix, rix, lix, c, xyz, val, d, tc, tr, i, j, k, ldiff, abdiff, leps, abeps, hm, buffer, rgb, lab, homo, r) #endif { #ifdef _OPENMP -#pragma omp for schedule(static) nowait + #pragma omp for schedule(static) nowait #endif for (i = 0; i < 0x10000; i++) { r = i / 65535.0; cbrt[i] = r > 0.008856 ? pow(r, 1 / 3.0) : 7.787 * r + 16 / 116.0; } #ifdef _OPENMP -#pragma omp for + #pragma omp for #endif for (i = 0; i < 3; i++) for (j = 0; j < colors; j++) @@ -596,7 +624,7 @@ progress(PROGRESS_INTERPOLATE, -height); #ifdef _OPENMP -#pragma omp for + #pragma omp for #endif for (top = 2; top < height - 5; top += TS - 6) { progress(PROGRESS_INTERPOLATE, TS - 6); @@ -609,10 +637,10 @@ pix = image + row * width + col; val = ((pix[-1][1] + pix[0][c] + pix[1][1]) * 2 - pix[-2][c] - pix[2][c]) >> 2; - rgb[0][row-top][col-left][1] = ULIM(val, pix[-1][1], pix[1][1]); + rgb[0][row - top][col - left][1] = ULIM(val, pix[-1][1], pix[1][1]); val = ((pix[-width][1] + pix[0][c] + pix[width][1]) * 2 - - pix[-2*width][c] - pix[2*width][c]) >> 2; - rgb[1][row-top][col-left][1] = ULIM(val, pix[-width][1], pix[width][1]); + - pix[-2 * width][c] - pix[2 * width][c]) >> 2; + rgb[1][row - top][col - left][1] = ULIM(val, pix[-width][1], pix[width][1]); } } /* Interpolate red and blue, and convert to CIELab: */ @@ -620,20 +648,20 @@ for (row = top + 1; row < top + TS - 1 && row < height - 3; row++) for (col = left + 1; col < left + TS - 1 && col < width - 3; col++) { pix = image + row * width + col; - rix = &rgb[d][row-top][col-left]; - lix = &lab[d][row-top][col-left]; + rix = &rgb[d][row - top][col - left]; + lix = &lab[d][row - top][col - left]; if ((c = 2 - FC(row, col)) == 1) { c = FC(row + 1, col); - val = pix[0][1] + ((pix[-1][2-c] + pix[1][2-c] + val = pix[0][1] + ((pix[-1][2 - c] + pix[1][2 - c] - rix[-1][1] - rix[1][1]) >> 1); - rix[0][2-c] = CLIP(val); + rix[0][2 - c] = CLIP(val); val = pix[0][1] + ((pix[-width][c] + pix[width][c] - rix[-TS][1] - rix[TS][1]) >> 1); } else - val = rix[0][1] + ((pix[-width-1][c] + pix[-width+1][c] - + pix[+width-1][c] + pix[+width+1][c] - - rix[-TS-1][1] - rix[-TS+1][1] - - rix[+TS-1][1] - rix[+TS+1][1] + 1) >> 2); + val = rix[0][1] + ((pix[-width - 1][c] + pix[-width + 1][c] + + pix[+width - 1][c] + pix[+width + 1][c] + - rix[-TS - 1][1] - rix[-TS + 1][1] + - rix[+TS - 1][1] - rix[+TS + 1][1] + 1) >> 2); rix[0][c] = CLIP(val); c = FC(row, col); rix[0][c] = pix[0][c]; @@ -684,9 +712,9 @@ for (j = tc - 1; j <= tc + 1; j++) hm[d] += homo[d][i][j]; if (hm[0] != hm[1]) - FORC3 image[row*width+col][c] = rgb[hm[1] > hm[0]][tr][tc][c]; + FORC3 image[row * width + col][c] = rgb[hm[1] > hm[0]][tr][tc][c]; else - FORC3 image[row*width+col][c] = + FORC3 image[row * width + col][c] = (rgb[0][tr][tc][c] + rgb[1][tr][tc][c]) >> 1; } } @@ -741,7 +769,7 @@ // Just making this function inline speeds up ahd_interpolate_INDI() up to 15% static inline ushort eahd_median(int row, int col, int color, - ushort(*image)[4], const int width) + ushort(*image)[4], const int width) { //declare the pixel array int pArray[9]; @@ -754,18 +782,18 @@ // results = (median(G-R)+median(G-B)+R+B)/2 //no checks are done here to speed up the inlining - pArray[0] = image[width*(row)+col+1][color] - image[width*(row)+col+1][1]; - pArray[1] = image[width*(row-1)+col+1][color] - image[width*(row-1)+col+1][1]; - pArray[2] = image[width*(row-1)+col ][color] - image[width*(row-1)+col ][1]; - pArray[3] = image[width*(row-1)+col-1][color] - image[width*(row-1)+col-1][1]; - pArray[4] = image[width*(row)+col-1][color] - image[width*(row)+col-1][1]; - pArray[5] = image[width*(row+1)+col-1][color] - image[width*(row+1)+col-1][1]; - pArray[6] = image[width*(row+1)+col ][color] - image[width*(row+1)+col ][1]; - pArray[7] = image[width*(row+1)+col+1][color] - image[width*(row+1)+col+1][1]; - pArray[8] = image[width*(row)+col ][color] - image[width*(row)+col ][1]; + pArray[0] = image[width * (row) + col + 1][color] - image[width * (row) + col + 1][1]; + pArray[1] = image[width * (row - 1) + col + 1][color] - image[width * (row - 1) + col + 1][1]; + pArray[2] = image[width * (row - 1) + col ][color] - image[width * (row - 1) + col ][1]; + pArray[3] = image[width * (row - 1) + col - 1][color] - image[width * (row - 1) + col - 1][1]; + pArray[4] = image[width * (row) + col - 1][color] - image[width * (row) + col - 1][1]; + pArray[5] = image[width * (row + 1) + col - 1][color] - image[width * (row + 1) + col - 1][1]; + pArray[6] = image[width * (row + 1) + col ][color] - image[width * (row + 1) + col ][1]; + pArray[7] = image[width * (row + 1) + col + 1][color] - image[width * (row + 1) + col + 1][1]; + pArray[8] = image[width * (row) + col ][color] - image[width * (row) + col ][1]; median9(pArray); - result = pArray[4] + image[width*(row)+col ][1]; + result = pArray[4] + image[width * (row) + col ][1]; return DTOP(result); } @@ -773,7 +801,7 @@ // Add the color smoothing from Kimmel as suggested in the AHD paper // Algorithm updated by Michael Goertz void CLASS color_smooth(ushort(*image)[4], const int width, const int height, - const int passes) + const int passes) { int row, col; int row_start = 2; @@ -788,13 +816,13 @@ for (count = 0; count < passes; count++) { //perform 3 iterations - seems to be a commonly settled upon number of iterations #ifdef _OPENMP -#pragma omp parallel for default(shared) private(row,col,mpix) + #pragma omp parallel for default(shared) private(row,col,mpix) #endif for (row = row_start; row < row_stop; row++) { for (col = col_start; col < col_stop; col++) { //calculate the median only over the red and blue //calculating over green seems to offer very little additional quality - mpix = image[row*width+col]; + mpix = image[row * width + col]; mpix[0] = eahd_median(row, col, 0, image, width); mpix[2] = eahd_median(row, col, 2, image, width); } @@ -803,13 +831,12 @@ } void CLASS fuji_rotate_INDI(ushort(**image_p)[4], int *height_p, - int *width_p, int *fuji_width_p, const int colors, const double step, - void *dcraw) + int *width_p, int *fuji_width_p, const int colors, + const double step, void *dcraw) { int height = *height_p, width = *width_p, fuji_width = *fuji_width_p; /*UF*/ ushort(*image)[4] = *image_p; /*UF*/ int i, row, col; -// double step; float r, c, fr, fc; int ur, uc; ushort wide, high, (*img)[4], (*pix)[4]; @@ -817,14 +844,13 @@ if (!fuji_width) return; dcraw_message(dcraw, DCRAW_VERBOSE, _("Rotating image 45 degrees...\n")); fuji_width = (fuji_width - 1/* + shrink*/)/* >> shrink*/; -// step = sqrt(0.5); wide = fuji_width / step; high = (height - fuji_width) / step; img = (ushort(*)[4]) calloc(wide * high, sizeof * img); merror(img, "fuji_rotate()"); #ifdef _OPENMP -#pragma omp parallel for default(shared) private(row,col,ur,uc,r,c,fr,fc,pix,i) + #pragma omp parallel for default(shared) private(row,col,ur,uc,r,c,fr,fc,pix,i) #endif for (row = 0; row < high; row++) { for (col = 0; col < wide; col++) { @@ -835,9 +861,9 @@ fc = c - uc; pix = image + ur * width + uc; for (i = 0; i < colors; i++) - img[row*wide+col][i] = + img[row * wide + col][i] = (pix[ 0][i] * (1 - fc) + pix[ 1][i] * fc) * (1 - fr) + - (pix[width][i] * (1 - fc) + pix[width+1][i] * fc) * fr; + (pix[width][i] * (1 - fc) + pix[width + 1][i] * fc) * fr; } } free(image); @@ -852,7 +878,7 @@ } void CLASS flip_image_INDI(ushort(*image)[4], int *height_p, int *width_p, - /*const*/ int flip) /*UF*/ + /*const*/ int flip) /*UF*/ { unsigned *flag; int size, base, dest, next, row, col; diff -Nru ufraw-0.18/debian/changelog ufraw-0.19.1/debian/changelog --- ufraw-0.18/debian/changelog 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/debian/changelog 2013-03-09 22:51:09.000000000 +0200 @@ -1,3 +1,21 @@ +ufraw (0.19.1-0ubuntu1) raring; urgency=low + + * New upstream release. (LP: #1153028) + * Switch to dpkg-source 3.0 (quilt) format. + * d/rules: rewritten using dh_auto_configure. + * d/control: + - set debhelper compatibility to v9. + - switch to Standards-Version: 3.9.4 + - build-depends on libjpeg-dev instead of libjpeg8-dev. + - build-depends on liblensfun-dev (>= 0.2.5) instead of (> 0.2.5). + - move homepage to source section. + * Drop patch against ufraw.pod, now fixed upstream. + * Move patch against ufraw_conf.c to d/patches. + * Wrap-and-sort. + * Create d/watch. + + -- Graham Inggs Sat, 09 Mar 2013 20:40:52 +0200 + ufraw (0.18-2ubuntu1) quantal; urgency=low * Build-depend on libtiff-dev rather than libtiff4-dev | libtiff-dev. diff -Nru ufraw-0.18/debian/clean ufraw-0.19.1/debian/clean --- ufraw-0.18/debian/clean 1970-01-01 02:00:00.000000000 +0200 +++ ufraw-0.19.1/debian/clean 2013-03-09 20:43:34.000000000 +0200 @@ -0,0 +1 @@ +debian/ufraw-batch.1 diff -Nru ufraw-0.18/debian/compat ufraw-0.19.1/debian/compat --- ufraw-0.18/debian/compat 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/debian/compat 2013-03-03 11:43:59.000000000 +0200 @@ -1 +1 @@ -5 +9 diff -Nru ufraw-0.18/debian/control ufraw-0.19.1/debian/control --- ufraw-0.18/debian/control 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/debian/control 2013-03-09 23:22:41.000000000 +0200 @@ -3,12 +3,26 @@ Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Hubert Chathi -Build-Depends: debhelper (>= 5), libgimp2.0-dev (>= 2.2), libjpeg8-dev | libjpeg-dev, liblcms-dev, libtiff-dev, libexiv2-dev (>= 0.14), perl, libbz2-dev, zlib1g-dev, libgtkimageview-dev, liblensfun-dev (> 0.2.5) -Standards-Version: 3.8.0 +Build-Depends: debhelper (>= 9), + libbz2-dev, + libexiv2-dev (>= 0.14), + libgimp2.0-dev (>= 2.2), + libgtkimageview-dev, + libjpeg-dev, + liblcms-dev, + liblensfun-dev (>= 0.2.5), + libtiff-dev, + perl, + zlib1g-dev +Standards-Version: 3.9.4 +Homepage: http://ufraw.sourceforge.net/ Package: ufraw Architecture: any -Depends: ${shlibs:Depends}, desktop-file-utils, ufraw-batch (= ${binary:Version}), ${misc:Depends} +Depends: desktop-file-utils, + ufraw-batch (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} Suggests: gimp-ufraw Description: standalone importer for raw camera images This is a standalone tool to import raw data from high-end digital cameras. @@ -20,11 +34,10 @@ raw formats using Dave Coffin's raw conversion utility DCRaw, and it supports basic color management using Little CMS, allowing the user to apply color profiles. -Homepage: http://ufraw.sourceforge.net/ Package: ufraw-batch Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} Suggests: ufraw Replaces: ufraw (<< 0.16-2) Description: batch importer for raw camera images @@ -38,11 +51,10 @@ raw formats using Dave Coffin's raw conversion utility DCRaw, and it supports basic color management using Little CMS, allowing the user to apply color profiles. -Homepage: http://ufraw.sourceforge.net/ Package: gimp-ufraw Architecture: any -Depends: ${shlibs:Depends}, gimp (>= 2.2), ${misc:Depends} +Depends: gimp (>= 2.2), ${misc:Depends}, ${shlibs:Depends} Conflicts: gimp-dcraw Suggests: ufraw Description: gimp importer for raw camera images @@ -56,4 +68,3 @@ raw formats using Dave Coffin's raw conversion utility DCRaw, and it supports basic color management using Little CMS, allowing the user to apply color profiles. -Homepage: http://ufraw.sourceforge.net/ diff -Nru ufraw-0.18/debian/gimp-ufraw.dirs ufraw-0.19.1/debian/gimp-ufraw.dirs --- ufraw-0.18/debian/gimp-ufraw.dirs 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/debian/gimp-ufraw.dirs 1970-01-01 02:00:00.000000000 +0200 @@ -1 +0,0 @@ -usr/lib diff -Nru ufraw-0.18/debian/gimp-ufraw.install ufraw-0.19.1/debian/gimp-ufraw.install --- ufraw-0.18/debian/gimp-ufraw.install 1970-01-01 02:00:00.000000000 +0200 +++ ufraw-0.19.1/debian/gimp-ufraw.install 2013-03-09 23:22:41.000000000 +0200 @@ -0,0 +1 @@ +/usr/lib/gimp/2.0/plug-ins/ufraw-gimp diff -Nru ufraw-0.18/debian/patches/default_to_gimp_instead_of_gimp-remote.patch ufraw-0.19.1/debian/patches/default_to_gimp_instead_of_gimp-remote.patch --- ufraw-0.18/debian/patches/default_to_gimp_instead_of_gimp-remote.patch 1970-01-01 02:00:00.000000000 +0200 +++ ufraw-0.19.1/debian/patches/default_to_gimp_instead_of_gimp-remote.patch 2013-03-09 23:02:16.000000000 +0200 @@ -0,0 +1,19 @@ +Description: Default to using gimp rather than gimp-remote + since gimp 2.4 already has the -remote functionality. +Bug-Debian http://bugs.debian.org/504260 +Author: Hubert Chathi +Last-Update: 2008-12-20 +--- a/ufraw_conf.c ++++ b/ufraw_conf.c +@@ -133,10 +133,8 @@ + FALSE, /* silent */ + #ifdef WIN32 + "gimp-win-remote gimp-2.8.exe", /* remoteGimpCommand */ +-#elif HAVE_GIMP_2_6 +- "gimp", /* remoteGimpCommand */ + #else +- "gimp-remote", /* remoteGimpCommand */ ++ "gimp", /* remoteGimpCommand */ + #endif + + /* EXIF data */ diff -Nru ufraw-0.18/debian/patches/series ufraw-0.19.1/debian/patches/series --- ufraw-0.18/debian/patches/series 1970-01-01 02:00:00.000000000 +0200 +++ ufraw-0.19.1/debian/patches/series 2013-03-09 22:48:32.000000000 +0200 @@ -0,0 +1 @@ +default_to_gimp_instead_of_gimp-remote.patch diff -Nru ufraw-0.18/debian/rules ufraw-0.19.1/debian/rules --- ufraw-0.18/debian/rules 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/debian/rules 2013-03-09 20:44:20.000000000 +0200 @@ -1,122 +1,20 @@ #!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 +%: + dh $@ -CFLAGS = -Wall -g - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -else - CFLAGS += -O3 -ffast-math -fomit-frame-pointer -endif - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - #test -r /usr/share/misc/config.sub && \ - # cp -f /usr/share/misc/config.sub config.sub || \ - # test -r config.sub - #test -r /usr/share/misc/config.guess && \ - # cp -f /usr/share/misc/config.guess config.guess || \ - # test -r config.guess - #mkdir -p m4 - #test -r /usr/share/aclocal/libgcrypt.m4 && \ - # cp -f /usr/share/aclocal/libgcrypt.m4 m4 || \ - # test -r m4/libgcrypt.m4 - - #touch NEWS AUTHORS ChangeLog - # if test -f ltmain.sh ; then touch ltmain.sh; else libtoolize -c --force --automake; mv l*.m4 m4; fi - #if test -f aclocal.m4 ; then touch aclocal.m4; else aclocal-1.9 -I m4; fi - #if test -f config.h.in ; then touch config.h.in; else autoheader2.50; fi - #if test -f Makefile.in ; then find . -name Makefile.in -exec touch {} \; ;\ - # else automake-1.9 --gnu --copy --add-missing; fi - - #if test -f configure ; then touch configure; else autoconf2.50 -I . ; fi - - #-$(MAKE) distclean - - rm -f autom4te.cache - rm -f config.log - - dh_clean - -config: config-stamp -config-stamp: configure - dh_testdir - chmod +x configure - CFLAGS="$(CFLAGS)" CXXFLAGS="$(CFLAGS)" \ - ./configure --enable-maintainer-mode \ - --prefix=/usr --libexecdir=/usr/lib/ \ - --with-exiv2 --enable-extras --enable-mime \ - --enable-contrast - touch config-stamp - -build: build-stamp -build-stamp: config - dh_testdir - - $(MAKE) - - touch build-stamp - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - -# make sure mkinstalldirs is executable - chmod +x mkinstalldirs - -# install in ufraw - $(MAKE) install DESTDIR=$(CURDIR)/debian/ufraw - rm -f $(CURDIR)/debian/ufraw/usr/share/man/man1/ufraw.1 -# move ufraw-batch to ufraw-batch package - mv $(CURDIR)/debian/ufraw/usr/bin/ufraw-batch $(CURDIR)/debian/ufraw-batch/usr/bin -# move gimp plugin to gimp-ufraw package - mv $(CURDIR)/debian/ufraw/usr/lib/gimp $(CURDIR)/debian/gimp-ufraw/usr/lib -# remove the dcraw binary, since it's in the dcraw package - rm $(CURDIR)/debian/ufraw/usr/bin/dcraw - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs - dh_installdocs -n -A - dh_installexamples - dh_install -# dh_installmenu -# dh_installdebconf - dh_installmime -# dh_gconf -# dh_installinfo +override_dh_auto_configure: + dh_auto_configure -- --enable-maintainer-mode \ + --prefix=/usr \ + --libexecdir=/usr/lib/ \ + --with-exiv2 \ + --enable-extras \ + --enable-mime \ + --enable-contrast + +# copy the ufraw man page to ufraw-batch, the ufraw package +# can get a symlink to it as it depends on ufraw-batch +override_dh_installman: + cp ufraw.1 debian/ufraw-batch.1 dh_installman -# rename ufraw.1 to ufraw-batch.1, since we're installing it in the ufraw-batch package - mv $(CURDIR)/debian/ufraw-batch/usr/share/man/man1/ufraw.1 $(CURDIR)/debian/ufraw-batch/usr/share/man/man1/ufraw-batch.1 - dh_link - dh_strip - dh_desktop -pufraw - dh_compress - dh_fixperms - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb -binary: binary-indep binary-arch -.PHONY: config build clean binary-indep binary-arch binary install diff -Nru ufraw-0.18/debian/source/format ufraw-0.19.1/debian/source/format --- ufraw-0.18/debian/source/format 1970-01-01 02:00:00.000000000 +0200 +++ ufraw-0.19.1/debian/source/format 2013-03-03 11:39:26.000000000 +0200 @@ -0,0 +1,2 @@ +3.0 (quilt) + diff -Nru ufraw-0.18/debian/ufraw-batch.dirs ufraw-0.19.1/debian/ufraw-batch.dirs --- ufraw-0.18/debian/ufraw-batch.dirs 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/debian/ufraw-batch.dirs 1970-01-01 02:00:00.000000000 +0200 @@ -1,2 +0,0 @@ -usr/bin -usr/share/man/man1 diff -Nru ufraw-0.18/debian/ufraw-batch.install ufraw-0.19.1/debian/ufraw-batch.install --- ufraw-0.18/debian/ufraw-batch.install 1970-01-01 02:00:00.000000000 +0200 +++ ufraw-0.19.1/debian/ufraw-batch.install 2013-03-09 23:22:41.000000000 +0200 @@ -0,0 +1 @@ +/usr/bin/ufraw-batch diff -Nru ufraw-0.18/debian/ufraw-batch.manpages ufraw-0.19.1/debian/ufraw-batch.manpages --- ufraw-0.18/debian/ufraw-batch.manpages 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/debian/ufraw-batch.manpages 2013-03-09 20:43:16.000000000 +0200 @@ -1 +1,2 @@ -ufraw.1 +debian/ufraw-batch.1 + diff -Nru ufraw-0.18/debian/ufraw.dirs ufraw-0.19.1/debian/ufraw.dirs --- ufraw-0.18/debian/ufraw.dirs 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/debian/ufraw.dirs 1970-01-01 02:00:00.000000000 +0200 @@ -1 +0,0 @@ -usr/bin diff -Nru ufraw-0.18/debian/ufraw.install ufraw-0.19.1/debian/ufraw.install --- ufraw-0.18/debian/ufraw.install 1970-01-01 02:00:00.000000000 +0200 +++ ufraw-0.19.1/debian/ufraw.install 2013-03-09 23:22:41.000000000 +0200 @@ -0,0 +1,6 @@ +/usr/bin/nikon-curve +/usr/bin/ufraw +/usr/share/applications/* +/usr/share/gconf/* +/usr/share/locale/* +/usr/share/pixmaps/* diff -Nru ufraw-0.18/debian/watch ufraw-0.19.1/debian/watch --- ufraw-0.18/debian/watch 1970-01-01 02:00:00.000000000 +0200 +++ ufraw-0.19.1/debian/watch 2013-03-09 20:37:47.000000000 +0200 @@ -0,0 +1,2 @@ +version=3 +http://sf.net/ufraw/ufraw-(.+)\.tar\.gz diff -Nru ufraw-0.18/generate_schemas.sh ufraw-0.19.1/generate_schemas.sh --- ufraw-0.18/generate_schemas.sh 2010-02-14 10:47:19.000000000 +0200 +++ ufraw-0.19.1/generate_schemas.sh 2013-03-05 05:40:55.000000000 +0200 @@ -78,13 +78,16 @@ do_mime image@x-kodak-kdc do_mime image@x-minolta-mrw do_mime image@x-nikon-nef +do_mime image@x-nikon-nrw do_mime image@x-olympus-orf do_mime image@x-panasonic-raw +do_mime image@x-panasonic-rw2 do_mime image@x-pentax-pef do_mime image@x-sigma-x3f do_mime image@x-sony-srf do_mime image@x-sony-sr2 do_mime image@x-sony-arw +do_mime image@x-samsung-srw echo " " >> $SCHEMAS echo "" >> $SCHEMAS diff -Nru ufraw-0.18/iccjpeg.c ufraw-0.19.1/iccjpeg.c --- ufraw-0.18/iccjpeg.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/iccjpeg.c 2013-03-05 05:40:55.000000000 +0200 @@ -16,12 +16,8 @@ * change all the "unsigned int" variables to "INT32". You'll also need * to find a malloc() replacement that can allocate more than 64K. * - * This code was copied to UFRaw from lcms-1.14 in Jan 2005. - * Changes: - * 15-Jun-2005 #ifdef HAVE_LIBJPEG on the entire code - * Jan-2005 added this comment... + * UFRaw: Copied from lcms-2.4 January 2013. */ - #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -183,9 +179,9 @@ JOCTET *icc_data; unsigned int total_length; #define MAX_SEQ_NO 255 /* sufficient since marker numbers are bytes */ - char marker_present[MAX_SEQ_NO+1]; /* 1 if marker found */ - unsigned int data_length[MAX_SEQ_NO+1]; /* size of profile data in marker */ - unsigned int data_offset[MAX_SEQ_NO+1]; /* offset for data in marker */ + char marker_present[MAX_SEQ_NO + 1]; /* 1 if marker found */ + unsigned int data_length[MAX_SEQ_NO + 1]; /* size of profile data in marker */ + unsigned int data_offset[MAX_SEQ_NO + 1]; /* offset for data in marker */ *icc_data_ptr = NULL; /* avoid confusion if FALSE return */ *icc_data_len = 0; @@ -258,4 +254,4 @@ return TRUE; } -#endif /*HAVE_LIBJPEG*/ +#endif /* HAVE_LIBJPEG */ diff -Nru ufraw-0.18/iccjpeg.h ufraw-0.19.1/iccjpeg.h --- ufraw-0.18/iccjpeg.h 2011-02-19 06:29:33.000000000 +0200 +++ ufraw-0.19.1/iccjpeg.h 2013-03-05 05:40:55.000000000 +0200 @@ -14,6 +14,8 @@ * NOTE: this code would need surgery to work on 16-bit-int machines * with ICC profiles exceeding 64K bytes in size. See iccprofile.c * for details. + * + * UFRaw: Copied from lcms-2.4 January 2013. */ #include /* needed to define "FILE", "NULL" */ diff -Nru ufraw-0.18/icons/Makefile.in ufraw-0.19.1/icons/Makefile.in --- ufraw-0.18/icons/Makefile.in 2011-02-19 07:51:43.000000000 +0200 +++ ufraw-0.19.1/icons/Makefile.in 2013-03-08 05:45:39.000000000 +0200 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -19,6 +19,23 @@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -48,14 +65,19 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -77,6 +99,12 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(icondir)" DATA = $(icon_DATA) HEADERS = $(noinst_HEADERS) @@ -123,6 +151,8 @@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIMP_2_6_CFLAGS = @GIMP_2_6_CFLAGS@ GIMP_2_6_LIBS = @GIMP_2_6_LIBS@ +GIMP_2_9_CFLAGS = @GIMP_2_9_CFLAGS@ +GIMP_2_9_LIBS = @GIMP_2_9_LIBS@ GIMP_CFLAGS = @GIMP_CFLAGS@ GIMP_LIBDIR = @GIMP_LIBDIR@ GIMP_LIBS = @GIMP_LIBS@ @@ -299,8 +329,11 @@ $(am__aclocal_m4_deps): install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) - test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(icondir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(icondir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -314,9 +347,7 @@ @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(icondir)" && rm -f $$files + dir='$(DESTDIR)$(icondir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -417,10 +448,15 @@ installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: diff -Nru ufraw-0.18/Makefile.am ufraw-0.19.1/Makefile.am --- ufraw-0.18/Makefile.am 2010-04-01 01:17:03.000000000 +0200 +++ ufraw-0.19.1/Makefile.am 2013-03-08 05:44:06.000000000 +0200 @@ -1,4 +1,4 @@ -# $Id: Makefile.am,v 1.56 2010/02/21 10:03:55 udifuchs Exp $ +# $Id: Makefile.am,v 1.58 2013/03/08 03:38:33 udifuchs Exp $ SUBDIRS=po icons @@ -36,7 +36,7 @@ app_DATA = ufraw.desktop appdir = $(datadir)/applications -# Not needed since it is contained in shared-mine-info 0.21 +# Not needed since it is contained in shared-mime-info 0.21 # mime_DATA = ufraw-mime.xml # mimedir = $(datadir)/mime/packages @@ -134,7 +134,7 @@ ufraw-$(VERSION)-setup.exe: ufraw-setup.iss ufraw.exe ufraw-batch.exe \ ufraw-gimp.exe ufraw-setup.bmp ufraw_icon.bmp ufraw_icon.ico \ - $(PREFIX)/bin/liblcms-1-ufraw.dll + $(PREFIX)/bin/liblcms-1.dll strip ufraw.exe ufraw-batch.exe ufraw-gimp.exe $(WINE) $(ISCC) ufraw-setup.iss diff -Nru ufraw-0.18/Makefile.in ufraw-0.19.1/Makefile.in --- ufraw-0.18/Makefile.in 2011-02-19 07:51:44.000000000 +0200 +++ ufraw-0.19.1/Makefile.in 2013-03-08 05:45:39.000000000 +0200 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,11 +15,28 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.56 2010/02/21 10:03:55 udifuchs Exp $ +# $Id: Makefile.am,v 1.58 2013/03/08 03:38:33 udifuchs Exp $ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -63,11 +80,11 @@ LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru -AM_V_AR = $(am__v_AR_$(V)) -am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ libufraw_a_AR = $(AR) $(ARFLAGS) libufraw_a_LIBADD = @@ -159,31 +176,31 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) -AM_V_CCLD = $(am__v_CCLD_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_$(V)) -am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ -AM_V_CXXLD = $(am__v_CXXLD_$(V)) -am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libufraw_a_SOURCES) $(dcraw_SOURCES) \ $(nikon_curve_SOURCES) ufraw.c $(ufraw_batch_SOURCES) \ @@ -200,6 +217,11 @@ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -221,6 +243,12 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) @@ -237,9 +265,11 @@ distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - { test ! -d "$(distdir)" \ - || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr "$(distdir)"; }; } + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ @@ -268,6 +298,8 @@ DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -309,6 +341,8 @@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIMP_2_6_CFLAGS = @GIMP_2_6_CFLAGS@ GIMP_2_6_LIBS = @GIMP_2_6_LIBS@ +GIMP_2_9_CFLAGS = @GIMP_2_9_CFLAGS@ +GIMP_2_9_LIBS = @GIMP_2_9_LIBS@ GIMP_CFLAGS = @GIMP_CFLAGS@ GIMP_LIBDIR = @GIMP_LIBDIR@ GIMP_LIBS = @GIMP_LIBS@ @@ -437,7 +471,7 @@ @INSTALL_MIME_TRUE@app_DATA = ufraw.desktop @INSTALL_MIME_TRUE@appdir = $(datadir)/applications -# Not needed since it is contained in shared-mine-info 0.21 +# Not needed since it is contained in shared-mime-info 0.21 # mime_DATA = ufraw-mime.xml # mimedir = $(datadir)/mime/packages @INSTALL_MIME_TRUE@schemas_DATA = ufraw.schemas @@ -496,7 +530,7 @@ .SUFFIXES: .SUFFIXES: .1 .c .cc .o .obj .pod -am--refresh: +am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ @@ -532,10 +566,8 @@ $(am__aclocal_m4_deps): config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ - else :; fi + @if test ! -f $@; then rm -f stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 @@ -552,14 +584,17 @@ clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libufraw.a: $(libufraw_a_OBJECTS) $(libufraw_a_DEPENDENCIES) +libufraw.a: $(libufraw_a_OBJECTS) $(libufraw_a_DEPENDENCIES) $(EXTRA_libufraw_a_DEPENDENCIES) $(AM_V_at)-rm -f libufraw.a $(AM_V_AR)$(libufraw_a_AR) libufraw.a $(libufraw_a_OBJECTS) $(libufraw_a_LIBADD) $(AM_V_at)$(RANLIB) libufraw.a install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ @@ -595,8 +630,11 @@ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) install-cinepaintbinPROGRAMS: $(cinepaintbin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(cinepaintbindir)" || $(MKDIR_P) "$(DESTDIR)$(cinepaintbindir)" @list='$(cinepaintbin_PROGRAMS)'; test -n "$(cinepaintbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(cinepaintbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(cinepaintbindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ @@ -632,8 +670,11 @@ -test -z "$(cinepaintbin_PROGRAMS)" || rm -f $(cinepaintbin_PROGRAMS) install-gimpbinPROGRAMS: $(gimpbin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(gimpbindir)" || $(MKDIR_P) "$(DESTDIR)$(gimpbindir)" @list='$(gimpbin_PROGRAMS)'; test -n "$(gimpbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(gimpbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(gimpbindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ @@ -669,8 +710,11 @@ -test -z "$(gimpbin_PROGRAMS)" || rm -f $(gimpbin_PROGRAMS) install-gtkPROGRAMS: $(gtk_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(gtkdir)" || $(MKDIR_P) "$(DESTDIR)$(gtkdir)" @list='$(gtk_PROGRAMS)'; test -n "$(gtkdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(gtkdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(gtkdir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ @@ -704,22 +748,22 @@ clean-gtkPROGRAMS: -test -z "$(gtk_PROGRAMS)" || rm -f $(gtk_PROGRAMS) -dcraw$(EXEEXT): $(dcraw_OBJECTS) $(dcraw_DEPENDENCIES) +dcraw$(EXEEXT): $(dcraw_OBJECTS) $(dcraw_DEPENDENCIES) $(EXTRA_dcraw_DEPENDENCIES) @rm -f dcraw$(EXEEXT) $(AM_V_CXXLD)$(dcraw_LINK) $(dcraw_OBJECTS) $(dcraw_LDADD) $(LIBS) -nikon-curve$(EXEEXT): $(nikon_curve_OBJECTS) $(nikon_curve_DEPENDENCIES) +nikon-curve$(EXEEXT): $(nikon_curve_OBJECTS) $(nikon_curve_DEPENDENCIES) $(EXTRA_nikon_curve_DEPENDENCIES) @rm -f nikon-curve$(EXEEXT) $(AM_V_CCLD)$(nikon_curve_LINK) $(nikon_curve_OBJECTS) $(nikon_curve_LDADD) $(LIBS) -ufraw$(EXEEXT): $(ufraw_OBJECTS) $(ufraw_DEPENDENCIES) +ufraw$(EXEEXT): $(ufraw_OBJECTS) $(ufraw_DEPENDENCIES) $(EXTRA_ufraw_DEPENDENCIES) @rm -f ufraw$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ufraw_OBJECTS) $(ufraw_LDADD) $(LIBS) -ufraw-batch$(EXEEXT): $(ufraw_batch_OBJECTS) $(ufraw_batch_DEPENDENCIES) +ufraw-batch$(EXEEXT): $(ufraw_batch_OBJECTS) $(ufraw_batch_DEPENDENCIES) $(EXTRA_ufraw_batch_DEPENDENCIES) @rm -f ufraw-batch$(EXEEXT) $(AM_V_GEN)$(ufraw_batch_LINK) $(ufraw_batch_OBJECTS) $(ufraw_batch_LDADD) $(LIBS) -ufraw-cinepaint$(EXEEXT): $(ufraw_cinepaint_OBJECTS) $(ufraw_cinepaint_DEPENDENCIES) +ufraw-cinepaint$(EXEEXT): $(ufraw_cinepaint_OBJECTS) $(ufraw_cinepaint_DEPENDENCIES) $(EXTRA_ufraw_cinepaint_DEPENDENCIES) @rm -f ufraw-cinepaint$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ufraw_cinepaint_OBJECTS) $(ufraw_cinepaint_LDADD) $(LIBS) -ufraw-gimp$(EXEEXT): $(ufraw_gimp_OBJECTS) $(ufraw_gimp_DEPENDENCIES) +ufraw-gimp$(EXEEXT): $(ufraw_gimp_OBJECTS) $(ufraw_gimp_DEPENDENCIES) $(EXTRA_ufraw_gimp_DEPENDENCIES) @rm -f ufraw-gimp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ufraw_gimp_OBJECTS) $(ufraw_gimp_LDADD) $(LIBS) @@ -764,105 +808,100 @@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` nikon_curve-nikon_curve.o: nikon_curve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nikon_curve_CFLAGS) $(CFLAGS) -MT nikon_curve-nikon_curve.o -MD -MP -MF $(DEPDIR)/nikon_curve-nikon_curve.Tpo -c -o nikon_curve-nikon_curve.o `test -f 'nikon_curve.c' || echo '$(srcdir)/'`nikon_curve.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nikon_curve-nikon_curve.Tpo $(DEPDIR)/nikon_curve-nikon_curve.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nikon_curve.c' object='nikon_curve-nikon_curve.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nikon_curve.c' object='nikon_curve-nikon_curve.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nikon_curve_CFLAGS) $(CFLAGS) -c -o nikon_curve-nikon_curve.o `test -f 'nikon_curve.c' || echo '$(srcdir)/'`nikon_curve.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nikon_curve_CFLAGS) $(CFLAGS) -c -o nikon_curve-nikon_curve.o `test -f 'nikon_curve.c' || echo '$(srcdir)/'`nikon_curve.c nikon_curve-nikon_curve.obj: nikon_curve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nikon_curve_CFLAGS) $(CFLAGS) -MT nikon_curve-nikon_curve.obj -MD -MP -MF $(DEPDIR)/nikon_curve-nikon_curve.Tpo -c -o nikon_curve-nikon_curve.obj `if test -f 'nikon_curve.c'; then $(CYGPATH_W) 'nikon_curve.c'; else $(CYGPATH_W) '$(srcdir)/nikon_curve.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nikon_curve-nikon_curve.Tpo $(DEPDIR)/nikon_curve-nikon_curve.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nikon_curve.c' object='nikon_curve-nikon_curve.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nikon_curve.c' object='nikon_curve-nikon_curve.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nikon_curve_CFLAGS) $(CFLAGS) -c -o nikon_curve-nikon_curve.obj `if test -f 'nikon_curve.c'; then $(CYGPATH_W) 'nikon_curve.c'; else $(CYGPATH_W) '$(srcdir)/nikon_curve.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nikon_curve_CFLAGS) $(CFLAGS) -c -o nikon_curve-nikon_curve.obj `if test -f 'nikon_curve.c'; then $(CYGPATH_W) 'nikon_curve.c'; else $(CYGPATH_W) '$(srcdir)/nikon_curve.c'; fi` ufraw_cinepaint-ufraw-gimp.o: ufraw-gimp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_cinepaint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ufraw_cinepaint-ufraw-gimp.o -MD -MP -MF $(DEPDIR)/ufraw_cinepaint-ufraw-gimp.Tpo -c -o ufraw_cinepaint-ufraw-gimp.o `test -f 'ufraw-gimp.c' || echo '$(srcdir)/'`ufraw-gimp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ufraw_cinepaint-ufraw-gimp.Tpo $(DEPDIR)/ufraw_cinepaint-ufraw-gimp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ufraw-gimp.c' object='ufraw_cinepaint-ufraw-gimp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ufraw-gimp.c' object='ufraw_cinepaint-ufraw-gimp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_cinepaint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ufraw_cinepaint-ufraw-gimp.o `test -f 'ufraw-gimp.c' || echo '$(srcdir)/'`ufraw-gimp.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_cinepaint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ufraw_cinepaint-ufraw-gimp.o `test -f 'ufraw-gimp.c' || echo '$(srcdir)/'`ufraw-gimp.c ufraw_cinepaint-ufraw-gimp.obj: ufraw-gimp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_cinepaint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ufraw_cinepaint-ufraw-gimp.obj -MD -MP -MF $(DEPDIR)/ufraw_cinepaint-ufraw-gimp.Tpo -c -o ufraw_cinepaint-ufraw-gimp.obj `if test -f 'ufraw-gimp.c'; then $(CYGPATH_W) 'ufraw-gimp.c'; else $(CYGPATH_W) '$(srcdir)/ufraw-gimp.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ufraw_cinepaint-ufraw-gimp.Tpo $(DEPDIR)/ufraw_cinepaint-ufraw-gimp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ufraw-gimp.c' object='ufraw_cinepaint-ufraw-gimp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ufraw-gimp.c' object='ufraw_cinepaint-ufraw-gimp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_cinepaint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ufraw_cinepaint-ufraw-gimp.obj `if test -f 'ufraw-gimp.c'; then $(CYGPATH_W) 'ufraw-gimp.c'; else $(CYGPATH_W) '$(srcdir)/ufraw-gimp.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_cinepaint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ufraw_cinepaint-ufraw-gimp.obj `if test -f 'ufraw-gimp.c'; then $(CYGPATH_W) 'ufraw-gimp.c'; else $(CYGPATH_W) '$(srcdir)/ufraw-gimp.c'; fi` ufraw_gimp-ufraw-gimp.o: ufraw-gimp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_gimp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ufraw_gimp-ufraw-gimp.o -MD -MP -MF $(DEPDIR)/ufraw_gimp-ufraw-gimp.Tpo -c -o ufraw_gimp-ufraw-gimp.o `test -f 'ufraw-gimp.c' || echo '$(srcdir)/'`ufraw-gimp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ufraw_gimp-ufraw-gimp.Tpo $(DEPDIR)/ufraw_gimp-ufraw-gimp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ufraw-gimp.c' object='ufraw_gimp-ufraw-gimp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ufraw-gimp.c' object='ufraw_gimp-ufraw-gimp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_gimp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ufraw_gimp-ufraw-gimp.o `test -f 'ufraw-gimp.c' || echo '$(srcdir)/'`ufraw-gimp.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_gimp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ufraw_gimp-ufraw-gimp.o `test -f 'ufraw-gimp.c' || echo '$(srcdir)/'`ufraw-gimp.c ufraw_gimp-ufraw-gimp.obj: ufraw-gimp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_gimp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ufraw_gimp-ufraw-gimp.obj -MD -MP -MF $(DEPDIR)/ufraw_gimp-ufraw-gimp.Tpo -c -o ufraw_gimp-ufraw-gimp.obj `if test -f 'ufraw-gimp.c'; then $(CYGPATH_W) 'ufraw-gimp.c'; else $(CYGPATH_W) '$(srcdir)/ufraw-gimp.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ufraw_gimp-ufraw-gimp.Tpo $(DEPDIR)/ufraw_gimp-ufraw-gimp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ufraw-gimp.c' object='ufraw_gimp-ufraw-gimp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ufraw-gimp.c' object='ufraw_gimp-ufraw-gimp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_gimp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ufraw_gimp-ufraw-gimp.obj `if test -f 'ufraw-gimp.c'; then $(CYGPATH_W) 'ufraw-gimp.c'; else $(CYGPATH_W) '$(srcdir)/ufraw-gimp.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ufraw_gimp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ufraw_gimp-ufraw-gimp.obj `if test -f 'ufraw-gimp.c'; then $(CYGPATH_W) 'ufraw-gimp.c'; else $(CYGPATH_W) '$(srcdir)/ufraw-gimp.c'; fi` .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` dcraw-dcraw.o: dcraw.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dcraw_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcraw-dcraw.o -MD -MP -MF $(DEPDIR)/dcraw-dcraw.Tpo -c -o dcraw-dcraw.o `test -f 'dcraw.cc' || echo '$(srcdir)/'`dcraw.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dcraw-dcraw.Tpo $(DEPDIR)/dcraw-dcraw.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='dcraw.cc' object='dcraw-dcraw.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dcraw.cc' object='dcraw-dcraw.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dcraw_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcraw-dcraw.o `test -f 'dcraw.cc' || echo '$(srcdir)/'`dcraw.cc +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dcraw_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcraw-dcraw.o `test -f 'dcraw.cc' || echo '$(srcdir)/'`dcraw.cc dcraw-dcraw.obj: dcraw.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dcraw_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcraw-dcraw.obj -MD -MP -MF $(DEPDIR)/dcraw-dcraw.Tpo -c -o dcraw-dcraw.obj `if test -f 'dcraw.cc'; then $(CYGPATH_W) 'dcraw.cc'; else $(CYGPATH_W) '$(srcdir)/dcraw.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dcraw-dcraw.Tpo $(DEPDIR)/dcraw-dcraw.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='dcraw.cc' object='dcraw-dcraw.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dcraw.cc' object='dcraw-dcraw.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dcraw_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcraw-dcraw.obj `if test -f 'dcraw.cc'; then $(CYGPATH_W) 'dcraw.cc'; else $(CYGPATH_W) '$(srcdir)/dcraw.cc'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dcraw_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcraw-dcraw.obj `if test -f 'dcraw.cc'; then $(CYGPATH_W) 'dcraw.cc'; else $(CYGPATH_W) '$(srcdir)/dcraw.cc'; fi` install-man1: $(man_MANS) @$(NORMAL_INSTALL) - test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" - @list=''; test -n "$(man1dir)" || exit 0; \ - { for i in $$list; do echo "$$i"; done; \ - l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ @@ -891,13 +930,14 @@ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - test -z "$$files" || { \ - echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-appDATA: $(app_DATA) @$(NORMAL_INSTALL) - test -z "$(appdir)" || $(MKDIR_P) "$(DESTDIR)$(appdir)" @list='$(app_DATA)'; test -n "$(appdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(appdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(appdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -911,13 +951,14 @@ @$(NORMAL_UNINSTALL) @list='$(app_DATA)'; test -n "$(appdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(appdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(appdir)" && rm -f $$files + dir='$(DESTDIR)$(appdir)'; $(am__uninstall_files_from_dir) install-schemasDATA: $(schemas_DATA) @$(NORMAL_INSTALL) - test -z "$(schemasdir)" || $(MKDIR_P) "$(DESTDIR)$(schemasdir)" @list='$(schemas_DATA)'; test -n "$(schemasdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(schemasdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(schemasdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -931,9 +972,7 @@ @$(NORMAL_UNINSTALL) @list='$(schemas_DATA)'; test -n "$(schemasdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(schemasdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(schemasdir)" && rm -f $$files + dir='$(DESTDIR)$(schemasdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -1117,13 +1156,10 @@ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ @@ -1155,7 +1191,11 @@ $(am__remove_distdir) dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir @@ -1163,7 +1203,7 @@ $(am__remove_distdir) dist-xz: distdir - tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir @@ -1194,6 +1234,8 @@ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ @@ -1203,7 +1245,7 @@ *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod a+w $(distdir) + chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) @@ -1213,6 +1255,7 @@ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ @@ -1241,8 +1284,16 @@ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: - @$(am__cd) '$(distuninstallcheck_dir)' \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ @@ -1276,10 +1327,15 @@ installcheck: installcheck-recursive install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -1380,8 +1436,8 @@ all all-am am--refresh check check-am clean clean-binPROGRAMS \ clean-cinepaintbinPROGRAMS clean-generic clean-gimpbinPROGRAMS \ clean-gtkPROGRAMS clean-noinstLIBRARIES ctags ctags-recursive \ - dist dist-all dist-bzip2 dist-gzip dist-lzma dist-shar \ - dist-tarZ dist-xz dist-zip distcheck distclean \ + dist dist-all dist-bzip2 dist-gzip dist-lzip dist-lzma \ + dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-compile distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ @@ -1424,7 +1480,7 @@ ufraw-$(VERSION)-setup.exe: ufraw-setup.iss ufraw.exe ufraw-batch.exe \ ufraw-gimp.exe ufraw-setup.bmp ufraw_icon.bmp ufraw_icon.ico \ - $(PREFIX)/bin/liblcms-1-ufraw.dll + $(PREFIX)/bin/liblcms-1.dll strip ufraw.exe ufraw-batch.exe ufraw-gimp.exe $(WINE) $(ISCC) ufraw-setup.iss diff -Nru ufraw-0.18/mkinstalldirs ufraw-0.19.1/mkinstalldirs --- ufraw-0.18/mkinstalldirs 2010-02-14 10:47:19.000000000 +0200 +++ ufraw-0.19.1/mkinstalldirs 2013-03-05 05:40:55.000000000 +0200 @@ -1,7 +1,7 @@ #! /bin/sh # mkinstalldirs --- make directory hierarchy -scriptversion=2006-05-11.19 +scriptversion=2009-04-28.21; # UTC # Original author: Noah Friedman # Created: 1993-05-16 @@ -81,9 +81,9 @@ echo "mkdir -p -- $*" exec mkdir -p -- "$@" else - # On NextStep and OpenStep, the `mkdir' command does not + # On NextStep and OpenStep, the 'mkdir' command does not # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already + # directories to create, and then abort because '.' already # exists. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version @@ -157,5 +157,6 @@ # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff -Nru ufraw-0.18/nikon_curve.c ufraw-0.19.1/nikon_curve.c --- ufraw-0.18/nikon_curve.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/nikon_curve.c 2013-03-05 05:40:55.000000000 +0200 @@ -1,7 +1,7 @@ /*************************************************** nikon_curve.c - read Nikon NTC/NCV files - Copyright 2004-2011 by Shawn Freeman, Udi Fuchs + Copyright 2004-2013 by Shawn Freeman, Udi Fuchs This program reads in a Nikon NTC/NCV file, interperates it's tone curve, and writes out a @@ -670,7 +670,7 @@ // Check. // for (i = 0; i < n; i++) { - if (a[1+i*3] == 0.0E+00) { + if (a[1 + i * 3] == 0.0E+00) { return NULL; } } @@ -682,14 +682,14 @@ } for (i = 1; i < n; i++) { - xmult = a[2+(i-1)*3] / a[1+(i-1)*3]; - a[1+i*3] = a[1+i*3] - xmult * a[0+i*3]; - x[i] = x[i] - xmult * x[i-1]; + xmult = a[2 + (i - 1) * 3] / a[1 + (i - 1) * 3]; + a[1 + i * 3] = a[1 + i * 3] - xmult * a[0 + i * 3]; + x[i] = x[i] - xmult * x[i - 1]; } - x[n-1] = x[n-1] / a[1+(n-1)*3]; + x[n - 1] = x[n - 1] / a[1 + (n - 1) * 3]; for (i = n - 2; 0 <= i; i--) { - x[i] = (x[i] - a[0+(i+1)*3] * x[i+1]) / a[1+i*3]; + x[i] = (x[i] - a[0 + (i + 1) * 3] * x[i + 1]) / a[1 + i * 3]; } return x; @@ -823,10 +823,10 @@ } for (i = 0; i < n - 1; i++) { - if (t[i+1] <= t[i]) { + if (t[i + 1] <= t[i]) { nc_message(NC_SET_ERROR, "spline_cubic_set() error: " "The knots must be strictly increasing, but " - "T(%u) = %e, T(%u) = %e\n", i, t[i], i + 1, t[i+1]); + "T(%u) = %e, T(%u) = %e\n", i, t[i], i + 1, t[i + 1]); return NULL; } } @@ -839,16 +839,16 @@ // if (ibcbeg == 0) { b[0] = 0.0E+00; - a[1+0*3] = 1.0E+00; - a[0+1*3] = -1.0E+00; + a[1 + 0 * 3] = 1.0E+00; + a[0 + 1 * 3] = -1.0E+00; } else if (ibcbeg == 1) { b[0] = (y[1] - y[0]) / (t[1] - t[0]) - ybcbeg; - a[1+0*3] = (t[1] - t[0]) / 3.0E+00; - a[0+1*3] = (t[1] - t[0]) / 6.0E+00; + a[1 + 0 * 3] = (t[1] - t[0]) / 3.0E+00; + a[0 + 1 * 3] = (t[1] - t[0]) / 6.0E+00; } else if (ibcbeg == 2) { b[0] = ybcbeg; - a[1+0*3] = 1.0E+00; - a[0+1*3] = 0.0E+00; + a[1 + 0 * 3] = 1.0E+00; + a[0 + 1 * 3] = 0.0E+00; } else { nc_message(NC_SET_ERROR, "spline_cubic_set() error: " "IBCBEG must be 0, 1 or 2. The input value is %u.\n", ibcbeg); @@ -860,27 +860,27 @@ // Set up the intermediate equations. // for (i = 1; i < n - 1; i++) { - b[i] = (y[i+1] - y[i]) / (t[i+1] - t[i]) - - (y[i] - y[i-1]) / (t[i] - t[i-1]); - a[2+(i-1)*3] = (t[i] - t[i-1]) / 6.0E+00; - a[1+ i *3] = (t[i+1] - t[i-1]) / 3.0E+00; - a[0+(i+1)*3] = (t[i+1] - t[i]) / 6.0E+00; + b[i] = (y[i + 1] - y[i]) / (t[i + 1] - t[i]) + - (y[i] - y[i - 1]) / (t[i] - t[i - 1]); + a[2 + (i - 1) * 3] = (t[i] - t[i - 1]) / 6.0E+00; + a[1 + i * 3] = (t[i + 1] - t[i - 1]) / 3.0E+00; + a[0 + (i + 1) * 3] = (t[i + 1] - t[i]) / 6.0E+00; } // // Set up the last equation. // if (ibcend == 0) { - b[n-1] = 0.0E+00; - a[2+(n-2)*3] = -1.0E+00; - a[1+(n-1)*3] = 1.0E+00; + b[n - 1] = 0.0E+00; + a[2 + (n - 2) * 3] = -1.0E+00; + a[1 + (n - 1) * 3] = 1.0E+00; } else if (ibcend == 1) { - b[n-1] = ybcend - (y[n-1] - y[n-2]) / (t[n-1] - t[n-2]); - a[2+(n-2)*3] = (t[n-1] - t[n-2]) / 6.0E+00; - a[1+(n-1)*3] = (t[n-1] - t[n-2]) / 3.0E+00; + b[n - 1] = ybcend - (y[n - 1] - y[n - 2]) / (t[n - 1] - t[n - 2]); + a[2 + (n - 2) * 3] = (t[n - 1] - t[n - 2]) / 6.0E+00; + a[1 + (n - 1) * 3] = (t[n - 1] - t[n - 2]) / 3.0E+00; } else if (ibcend == 2) { - b[n-1] = ybcend; - a[2+(n-2)*3] = 0.0E+00; - a[1+(n-1)*3] = 1.0E+00; + b[n - 1] = ybcend; + a[2 + (n - 2) * 3] = 0.0E+00; + a[1 + (n - 1) * 3] = 1.0E+00; } else { nc_message(NC_SET_ERROR, "spline_cubic_set() error: " "IBCEND must be 0, 1 or 2. The input value is %u", ibcend); @@ -987,7 +987,7 @@ ival = n - 2; for (i = 0; i < n - 1; i++) { - if (tval < t[i+1]) { + if (tval < t[i + 1]) { ival = i; break; } @@ -997,20 +997,20 @@ // coordinate between 0 and 1. // dt = tval - t[ival]; - h = t[ival+1] - t[ival]; + h = t[ival + 1] - t[ival]; yval = y[ival] - + dt * ((y[ival+1] - y[ival]) / h - - (ypp[ival+1] / 6.0E+00 + ypp[ival] / 3.0E+00) * h + + dt * ((y[ival + 1] - y[ival]) / h + - (ypp[ival + 1] / 6.0E+00 + ypp[ival] / 3.0E+00) * h + dt * (0.5E+00 * ypp[ival] - + dt * ((ypp[ival+1] - ypp[ival]) / (6.0E+00 * h)))); + + dt * ((ypp[ival + 1] - ypp[ival]) / (6.0E+00 * h)))); - *ypval = (y[ival+1] - y[ival]) / h - - (ypp[ival+1] / 6.0E+00 + ypp[ival] / 3.0E+00) * h + *ypval = (y[ival + 1] - y[ival]) / h + - (ypp[ival + 1] / 6.0E+00 + ypp[ival] / 3.0E+00) * h + dt * (ypp[ival] - + dt * (0.5E+00 * (ypp[ival+1] - ypp[ival]) / h)); + + dt * (0.5E+00 * (ypp[ival + 1] - ypp[ival]) / h)); - *yppval = ypp[ival] + dt * (ypp[ival+1] - ypp[ival]) / h; + *yppval = ypp[ival] + dt * (ypp[ival + 1] - ypp[ival]) / h; return yval; } @@ -1277,8 +1277,8 @@ int firstPointX = x[0] * (sample->m_samplingRes - 1); int firstPointY = pow(y[0], gamma) * (sample->m_outputRes - 1); - int lastPointX = x[n-1] * (sample->m_samplingRes - 1); - int lastPointY = pow(y[n-1], gamma) * (sample->m_outputRes - 1); + int lastPointX = x[n - 1] * (sample->m_samplingRes - 1); + int lastPointY = pow(y[n - 1], gamma) * (sample->m_outputRes - 1); int maxY = curve->m_max_y * (sample->m_outputRes - 1); int minY = curve->m_min_y * (sample->m_outputRes - 1); @@ -1357,7 +1357,7 @@ { int i; double left = curve->m_anchors[0].x; - double right = curve->m_anchors[curve->m_numAnchors-1].x; + double right = curve->m_anchors[curve->m_numAnchors - 1].x; if (point == 0) { for (i = 0; i < curve->m_numAnchors; i++) curve->m_anchors[i].x = x + (curve->m_anchors[i].x - left) * @@ -1843,13 +1843,13 @@ fprintf(output, "%u %u\n", 0, sample->m_Samples[0]); for (i = 1; i < sample->m_samplingRes; i++) { // Print sample point only if different than previous one - if (sample->m_Samples[i] != sample->m_Samples[i-1]) { + if (sample->m_Samples[i] != sample->m_Samples[i - 1]) { fprintf(output, "%u %u\n", i, sample->m_Samples[i]); } } // Make sure the last point is also printed - if (sample->m_Samples[i-1] == sample->m_Samples[i-2]) { - fprintf(output, "%u %u\n", i - 1, sample->m_Samples[i-1]); + if (sample->m_Samples[i - 1] == sample->m_Samples[i - 2]) { + fprintf(output, "%u %u\n", i - 1, sample->m_Samples[i - 1]); } fclose(output); @@ -1937,8 +1937,8 @@ strncpy(tmpstr, outFileName, 1023); tmpstr[1023] = '\0'; //if the name has an extension, attempt to remove it - if (tmpstr[strlen(tmpstr)-4] == '.') { - tmpstr[strlen(tmpstr)-4] = '\0'; + if (tmpstr[strlen(tmpstr) - 4] == '.') { + tmpstr[strlen(tmpstr) - 4] = '\0'; } switch (i) { diff -Nru ufraw-0.18/nikon_curve.h ufraw-0.19.1/nikon_curve.h --- ufraw-0.18/nikon_curve.h 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/nikon_curve.h 2013-03-05 05:40:55.000000000 +0200 @@ -1,7 +1,7 @@ /*************************************************** nikon_curve.h - read Nikon NTC/NCV files - Copyright 2004-2011 by Shawn Freeman, Udi Fuchs + Copyright 2004-2013 by Shawn Freeman, Udi Fuchs This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/ca.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/ca.gmo differ diff -Nru ufraw-0.18/po/ca.po ufraw-0.19.1/po/ca.po --- ufraw-0.18/po/ca.po 2011-02-21 04:17:57.000000000 +0200 +++ ufraw-0.19.1/po/ca.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,6 +1,6 @@ # Catalan translation for UFRaw. # Traducció al català de UFRaw Convertidor de Dades en Cru No Identificades per a imatges de càmeres digitals. -# Copyright (C) 2008-2011 Udi Fuchs & Paco Rivière. +# Copyright (C) 2008-2013 Udi Fuchs & Paco Rivière. # This file is distributed under the same license as the UFRaw package. # Paco Rivière http://pacoriviere.cat/, 2008, 2009, 2010. # @@ -8,11 +8,11 @@ msgstr "" "Project-Id-Version: 0.17\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2010-03-04 21:05+0100\n" "Last-Translator: Paco Rivière \n" "Language-Team: http://pacoriviere.cat/ \n" -"Language: \n" +"Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -54,11 +54,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: voleu sobreescriure '%s'? " -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "--silent aquesta opció només és vàlida al mode per lots" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "El mode interactiu no permet extreure imatges incrustades" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "--silent aquesta opció només és vàlida al mode per lots" msgid "Raw images" msgstr "Imatges en cru" @@ -66,11 +68,11 @@ msgid "UFRaw ID files" msgstr "Fitxers de identificació de UFRaw" -msgid "Raw jpg's" -msgstr "JPGs en cru" +msgid "Raw jpeg's" +msgstr "JPEGs en cru" -msgid "Raw tif's" -msgstr "TIFs en cru" +msgid "Raw tiff's" +msgstr "TIFFs en cru" msgid "All files" msgstr "Tots els fitxers" @@ -144,6 +146,10 @@ "No es pot obrir el fitxer de identificació %s per llegir-lo\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Error creant el fitxer %s'" + #, c-format msgid "" "Error parsing '%s'\n" @@ -216,9 +222,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Configuració de l'equilibri de blancs.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "" -"--temperatura=TEMP Temperature de color en graus Kelvin (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperatura=TEMP Temperature de color en graus Kelvin.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=VERD Normalització del color verd.\n" @@ -417,9 +422,11 @@ "--[no]zip Habilita [inhabilita] la compressió zip als fitxers " "TIFF (per omissió nozip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Extract the preview image embedded in the raw file\n" " instead of converting the raw image.\n" @@ -447,6 +454,12 @@ " imatge en cru després de girar-la, però abans " "d'escalar-la.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -480,8 +493,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Fés que la finestre sigui màxima.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" "--silent No mostris cap missatge durant la conversió per lots.\n" @@ -518,7 +533,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw ha estat compilat sense suport ZIP." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "" "--batch Aquesta opció és obsoleta. En el seu lloc feu servir ufraw-batch." @@ -1333,7 +1349,8 @@ msgid "Auto fit crop area" msgstr "Escapça l'àrea per encabir-la" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "Reinicia la zona de escapçament" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/cs.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/cs.gmo differ diff -Nru ufraw-0.18/po/cs.po ufraw-0.19.1/po/cs.po --- ufraw-0.18/po/cs.po 2011-02-21 04:17:57.000000000 +0200 +++ ufraw-0.19.1/po/cs.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,15 +1,15 @@ # Czech translation for UFRaw package. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. -# Milan Knizek , 2007-2010. +# Milan Knizek , 2007-2011. # msgid "" msgstr "" -"Project-Id-Version: ufraw 0.17\n" +"Project-Id-Version: UFRaw 0.19\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" -"PO-Revision-Date: 2010-03-04 23:04+0100\n" -"Last-Translator: Milan Knizek \n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" +"PO-Revision-Date: 2011-08-12 05:57+0100\n" +"Last-Translator: Milan Knížek \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" @@ -53,11 +53,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: pÅ™epsat '%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "--silent volba je platná pouze v dávkovém režimu" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "Vyjmutí vloženého snímku není v interaktivním režimu podporováno" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "--silent volba je platná pouze v dávkovém režimu" msgid "Raw images" msgstr "Raw snímky" @@ -65,10 +67,10 @@ msgid "UFRaw ID files" msgstr "UFRaw ID soubory" -msgid "Raw jpg's" +msgid "Raw jpeg's" msgstr "Raw JPEGy" -msgid "Raw tif's" +msgid "Raw tiff's" msgstr "Raw TIFFy" msgid "All files" @@ -139,6 +141,10 @@ "Nelze otevřít ID soubor %s pro Ätení\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Chyba pÅ™i vytváření souboru '%s'." + #, c-format msgid "" "Error parsing '%s'\n" @@ -210,8 +216,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Nastavení vyvážení bílé.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEPLOTA Barevná teplota v Kelvinech (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEPLOTA Barevná teplota v Kelvinech.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GREEN Normalizace zelené barvy.\n" @@ -353,16 +359,13 @@ " none - žádný, lightness - svÄ›tlost,\n" " luminance - jas, mixer - mixér kanálů.\n" -#, fuzzy msgid "" "--grayscale-mixer=RED,GREEN,BLUE\n" " Grayscale mixer values to use (default 1,1,1).\n" msgstr "" -"--grayscale=none|lightness|luminance|value|mixer\n" -" Algoritmus pro pÅ™evod do Å¡edé Å¡kály (standardnÄ› " -"none).\n" -" none - žádný, lightness - svÄ›tlost,\n" -" luminance - jas, mixer - mixér kanálů.\n" +"--grayscale-mixer=RED,GREEN,BLUE\n" +" Hodnoty Äervené, zelené a modré pro mixér kanálů " +"(standardnÄ› 1,1,1).\n" msgid "The options which are related to the final output are:\n" msgstr "Volby, které se týkají koneÄného výstupu, jsou:\n" @@ -407,9 +410,11 @@ msgstr "" "--[no]zip [Ne]aktivní zip komprese TIFF (standardnÄ› neaktivní).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Extrahovat náhled snímku vloženého v raw souboru\n" " místo konvertování raw souboru.\n" @@ -437,6 +442,12 @@ " left - vlevo, right - vpravo, top - nahoÅ™e, bottom - " "dole\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -469,8 +480,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Vnutit maximální velikost okna.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" "--silent Nezobrazovat žádné zprávy bÄ›hem dávkové konverze.\n" @@ -506,7 +519,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw byl kompilován bez podpory ZIP." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch je zastaralá volba. Použijte ufraw-batch." #, c-format @@ -541,9 +555,9 @@ msgid "'%s' is not a valid grayscale option." msgstr "'%s' není platné pro volbu grayscale." -#, fuzzy, c-format +#, c-format msgid "'%s' is not a valid grayscale-mixer option." -msgstr "'%s' není platné pro volbu grayscale." +msgstr "'%s' není platná volba pro mixér kanálů." #, c-format msgid "'%s' is not a valid restore option." @@ -1312,7 +1326,8 @@ msgid "Auto fit crop area" msgstr "Automaticky vyplnit oblastí oÅ™ezu." -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "Obnovit původní oÅ™ez" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/da.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/da.gmo differ diff -Nru ufraw-0.18/po/da.po ufraw-0.19.1/po/da.po --- ufraw-0.18/po/da.po 2011-02-21 04:17:57.000000000 +0200 +++ ufraw-0.19.1/po/da.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,14 +1,14 @@ # Danish translation for UFRaw. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. -# Niels Kristian Bech Jensen , 2006-2010. +# Niels Kristian Bech Jensen , 2006-2013. # msgid "" msgstr "" -"Project-Id-Version: UFRaw 0.18\n" +"Project-Id-Version: UFRaw 0.19\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" -"PO-Revision-Date: 2010-04-05 17:00+0200\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" +"PO-Revision-Date: 2013-02-03 19:00+0100\n" "Last-Translator: Niels Kristian Bech Jensen \n" "Language-Team: Danish \n" "Language: da\n" @@ -51,12 +51,11 @@ msgid "%s: overwrite '%s'?" msgstr "%s: overskriv '%s'?" -msgid "--silent option is valid only in batch mode" -msgstr "Tilvalget --silent kan kun anvendes i batch-modus" +msgid "The --silent option is only valid with 'ufraw-batch'" +msgstr "Tilvalget --silent kan kun anvendes med 'ufraw-batch'" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "" -"Udtrækning af indlejret billede er ikke understøttet i interaktivt modus" +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "Tilvalget --embedded-image kan kun anvendes med 'ufraw-batch'" msgid "Raw images" msgstr "Raw-billeder" @@ -64,11 +63,11 @@ msgid "UFRaw ID files" msgstr "UFRaw ID-filer" -msgid "Raw jpg's" -msgstr "Raw jpg'er" +msgid "Raw jpeg's" +msgstr "Raw jpeg'er" -msgid "Raw tif's" -msgstr "Raw tif'er" +msgid "Raw tiff's" +msgstr "Raw tiff'er" msgid "All files" msgstr "Alle filer" @@ -139,6 +138,10 @@ "%s\n" #, c-format +msgid "Error reading from file '%s'." +msgstr "Fejl ved læsning fra filen '%s'." + +#, c-format msgid "" "Error parsing '%s'\n" "%s" @@ -209,8 +212,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Hvidbalanceindstilling.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP Farvetemperatur i Kelvin (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP Farvetemperatur i Kelvin.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GRØN Grøn farvenormalisering.\n" @@ -405,10 +408,13 @@ msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Brug det i raw-filen indlejrede miniaturebillede\n" -" i stedet for at konvertere raw-billedet.\n" +" i stedet for at konvertere raw-billedet. Dette " +"tilvalg\n" +" kan kun anvendes med 'ufraw-batch'.\n" msgid "" "--rotate=camera|ANGLE|no\n" @@ -432,6 +438,13 @@ "til\n" " raw-billedet efter rotation, men før skalering.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "--auto-crop Beskær uddata automatisk.\n" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" +"--aspect-ratio X:Y Sæt sidelængdeforholdet for det beskÃ¥rne omrÃ¥de.\n" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -463,9 +476,11 @@ msgstr "--maximize-window Tving vinduet til at være maksimeret.\n" msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" -"--silent Vis ingen meddelelser under batch-konvertering.\n" +"--silent Vis ingen meddelelser under konvertering. Dette\n" +" tilvalg kan kun anvendes med 'ufraw-batch'.\n" msgid "" "UFRaw first reads the setting from the resource file $HOME/.ufrawrc.\n" @@ -497,8 +512,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw blev bygget uden ZIP-understøttelse." -msgid "--batch is obsolete. Use ufraw-batch instead." -msgstr "--batch er forældet. Anvend ufraw-batch i stedet for." +msgid "--batch is obsolete. Use 'ufraw-batch' instead." +msgstr "--batch er forældet. Anvend 'ufraw-batch' i stedet for." #, c-format msgid "getopt returned character code 0%o ??" @@ -642,7 +657,7 @@ "Error creating file '%s'.\n" "%s" msgstr "" -"Fejl ved dannelse af fil '%s'.\n" +"Fejl ved dannelse af filen '%s'.\n" "%s" msgid "No embedded image read" @@ -654,7 +669,7 @@ #, c-format msgid "Error creating file '%s': %s" -msgstr "Fejl ved dannelse af fil '%s': %s" +msgstr "Fejl ved dannelse af filen '%s': %s" #, c-format msgid "Error writing '%s'" @@ -1304,7 +1319,7 @@ msgid "Auto fit crop area" msgstr "Tilpas beskæringsareal automatisk" -msgid "Reset the crop region" +msgid "Reset the crop area" msgstr "Resæt beskæringsareal" msgid "Aspect ratio:" @@ -1315,7 +1330,7 @@ "Can be entered in decimal notation (1.273)\n" "or as a ratio of two numbers (14:11)" msgstr "" -"Beskæringssidelængdeforhold.\n" +"Sidelængdeforholdet for det beskÃ¥rne omrÃ¥de.\n" "Kan indtastes som decimaltal (1.273)\n" "eller som et forhold mellem to tal (14:11)" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/de.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/de.gmo differ diff -Nru ufraw-0.18/po/de.po ufraw-0.19.1/po/de.po --- ufraw-0.18/po/de.po 2011-02-21 04:17:57.000000000 +0200 +++ ufraw-0.19.1/po/de.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,14 +1,14 @@ # German translation for UFRaw. -# Copyright (C) 2006-2011 Udi Fuchs, Matthias Urlichs and Chris Leick. +# Copyright (C) 2006-2013 Udi Fuchs, Matthias Urlichs and Chris Leick. # This file is distributed under the same license as the ufraw package. -# Chris Leick , 2009. +# Chris Leick , 2009-2011. # msgid "" msgstr "" -"Project-Id-Version: 0.16\n" +"Project-Id-Version: 0.19\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" -"PO-Revision-Date: 2009-05-13 12:19+0100\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" +"PO-Revision-Date: 2011-09-06 22:21+0100\n" "Last-Translator: Chris Leick \n" "Language-Team: German \n" "Language: de\n" @@ -23,11 +23,11 @@ #, c-format msgid "Value %.*f too large, truncated to %.*f." -msgstr "" +msgstr "Wert %.*f zu groß, auf %.*f gekürzt" #, c-format msgid "Value %.*f too small, truncated to %.*f." -msgstr "" +msgstr "Wert %.*f zu klein, auf %.*f gekürzt" msgid "No input file, nothing to do." msgstr "Keine Eingabedatei, nichts zu tun." @@ -52,12 +52,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: »%s« überschreiben?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "--silent-Option ist nur im Stapelverarbeitungsmodus gültig" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "" -"Entpacken eingebetteter Bilder wird im interaktiven Modus nicht unterstützt" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "--silent-Option ist nur im Stapelverarbeitungsmodus gültig" msgid "Raw images" msgstr "Raw-Bilder" @@ -65,11 +66,11 @@ msgid "UFRaw ID files" msgstr "UFRaw-ID-Dateien" -msgid "Raw jpg's" -msgstr "Raw-jpgs" +msgid "Raw jpeg's" +msgstr "Raw-jpegs" -msgid "Raw tif's" -msgstr "Raw-tifs" +msgid "Raw tiff's" +msgstr "Raw-tiffs" msgid "All files" msgstr "Alle Dateien" @@ -101,7 +102,7 @@ msgstr "sRGB" msgid "sRGB (embedded)" -msgstr "" +msgstr "sRGB (eingebettet)" msgid "System default" msgstr "Systemstandard" @@ -121,7 +122,7 @@ msgstr "Zu viele Anker für Kurve »%s«" msgid "Too many lightness adjustments in the ID file, ignored\n" -msgstr "" +msgstr "Zu viele Helligkeitsanpassungen in der ID-Datei, wird ignoriert\n" #, c-format msgid "" @@ -140,6 +141,10 @@ "%s\n" #, c-format +msgid "Error reading from file '%s'." +msgstr "Fehler beim Lesen der Datei »%s«." + +#, c-format msgid "" "Error parsing '%s'\n" "%s" @@ -211,8 +216,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Weißabgleich-Einstellungen.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP Farbtemperatur in Kelvin (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP Farbtemperatur in Kelvin.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GREEN Normierung grüner Farbe.\n" @@ -319,6 +324,10 @@ " Sensitivity for detecting and shaving hot pixels " "(default 0.0).\n" msgstr "" +"--hotpixel-sensitivity=WERT\n" +" Empfindlichkeit für das Erkennen und Verkleinern von\n" +" Hotpixeln (Bildpunkte mit nicht " +"proportionalem Lichteinfall; Standard 0.0)\n" msgid "" "--exposure=auto|EXPOSURE\n" @@ -346,9 +355,8 @@ " Zu benutzender Interpolationsalgorithmus\n" " (Standard: ahd).\n" -#, fuzzy msgid "--color-smoothing Apply color smoothing.\n" -msgstr "Farbglättung übernehmen" +msgstr "--color-smoothing Farbglättung übernehmen\n" msgid "" "--grayscale=none|lightness|luminance|value|mixer\n" @@ -358,14 +366,12 @@ " Zu benutzender Grausstufen-Umwandlungsalgorithmus\n" " (Standard: none).\n" -#, fuzzy msgid "" "--grayscale-mixer=RED,GREEN,BLUE\n" " Grayscale mixer values to use (default 1,1,1).\n" msgstr "" -"--grayscale=none|lightness|luminance|value|mixer\n" -" Zu benutzender Grausstufen-Umwandlungsalgorithmus\n" -" (Standard: none).\n" +"--grayscale-mixer=RED,GREEN,BLUE\n" +" Zu benutzender Graustufenmixerwerte (Standard 1,1,1).\n" msgid "The options which are related to the final output are:\n" msgstr "Die Optionen, die zu der endgültigen Ausgabe gehören, sind:\n" @@ -396,22 +402,22 @@ msgid "--compression=VALUE JPEG compression (0-100, default 85).\n" msgstr "--compression=WERT JPEG-Komprimierung (0-100, Standard: 85).\n" -#, fuzzy msgid "--[no]exif Embed EXIF in output (default embed EXIF).\n" msgstr "" -"--[no]exif EXIF in Ausgabe-JPEG oder -PNG einbetten\n" -" (Standard: EXIF einbetten).\n" +"--[no]exif EXIF in Ausgabe einbetten (Standard: EXIF einbetten)\n" msgid "" "--[no]zip Enable [disable] TIFF zip compression (default " "nozip).\n" msgstr "" -"--[no]zip Einschalten [ausschalten] der\n" +"--[no]zip Einschalten [Ausschalten] der\n" " TIFF-zip-Komprimierung (Standard: nozip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Das in der raw-Datei eingebettete Vorschaubild\n" " entpacken, anstatt das raw-Bild zu konvertieren.\n" @@ -438,10 +444,21 @@ " kürzen, relativ zum raw-Bild nach der Drehung aber\n" " vor jeglicher Skalierung.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" msgstr "" +"--lensfun=none|auto Wenden Sie keine Linsenkorrektur an oder versuchen " +"Sie\n" +" nicht eine anzuwenden.\n" +" Korrektur durch automatisches Erkennen der Linse\n" +" (Standard none).\n" msgid "" "--out-path=PATH PATH for output file (default use input file's path).\n" @@ -466,15 +483,16 @@ " (Standard: Nein).\n" msgid "--maximize-window Force window to be maximized.\n" -msgstr "" +msgstr "--maximize-window Maximierung des Fensters erzwingen\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" "--silent Während der Stapelkonvertierung keine Nachrichten\n" " anzeigen.\n" -#, fuzzy msgid "" "UFRaw first reads the setting from the resource file $HOME/.ufrawrc.\n" "Then, if an ID file is specified, its setting are read. Next, the setting " @@ -485,13 +503,13 @@ "second\n" "group of options is NOT read from the resource file.\n" msgstr "" -"UFRaw liest zuerst die Einstellung aus der Einstellungsdatei\n" -"$HOME/.ufrawrc. Dann, wenn eine ID-Datei angegeben ist, wird deren\n" -"Einstellung gelesen. Als nächstes wird die Einstellung aus der\n" -"--conf-Option genommen, wobei die Eingabe-/Ausgabedateinamen in der\n" -"ID-Datei ignoriert werden. Als letztes werden die Optionen von der\n" -"Befehlszeile gesetzt. Im Stapelverarbeitungsmodus wird die zweite Gruppe\n" -"von Optionen NICHT aus der Quelldatei gelesen.\n" +"UFRaw liest zuerst die Einstellung aus der Ressourcen-Datei $HOME/.ufrawrc.\n" +"Falls eine ID-Datei angegeben ist, wird dann deren Einstellung gelesen.\n" +"Als nächstes wird die Einstellung aus der Option --conf genommen, wobei die\n" +"Eingabe-/Ausgabedateinamen in der ID-Datei ignoriert werden. Als letztes\n" +"werden die Optionen von der Befehlszeile gesetzt. Im\n" +"Stapelverarbeitungsmodus wird die zweite Gruppe von Optionen NICHT aus der\n" +"Ressourcen-Datei gelesen.\n" msgid "" "Last, but not least, --version displays the version number and compilation\n" @@ -508,7 +526,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw wurde ohne ZIP-Unterstützung erstellt." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch ist veraltet. Benutzen Sie anstelle dessen ufraw-batch." #, c-format @@ -544,9 +563,9 @@ msgid "'%s' is not a valid grayscale option." msgstr "»%s« ist keine gültige Graustufenoption." -#, fuzzy, c-format +#, c-format msgid "'%s' is not a valid grayscale-mixer option." -msgstr "»%s« ist keine gültige Graustufenoption." +msgstr "»%s« ist keine gültige Graustufenmixeroption." #, c-format msgid "'%s' is not a valid restore option." @@ -705,9 +724,9 @@ "Mount:\t\t%s\n" "Crop factor:\t%.1f" msgstr "" -"Hersteller:\t%s\n" +"Hersteller:\t\t%s\n" "Modell:\t\t%s%s\n" -"Eingehängt:\t%s\n" +"Eingehängt:\t\t%s\n" "Schnittfaktor:\t%.1f" #, c-format @@ -720,12 +739,12 @@ "Type:\t\t%s\n" "Mounts:\t\t%s" msgstr "" -"Hersteller:\t\t\t%s\n" -"Modell:\t\t\t\t%s\n" +"Hersteller:\t\t%s\n" +"Modell:\t\t%s\n" "Brennweitenbereich:\t%s\n" -"Blende:\t\t\t\t%s\n" -"Schnittfaktor:\t\t\t%.1f\n" -"Typ:\t\t\t\t\t%s\n" +"Blende:\t\t%s\n" +"Schnittfaktor:\t%.1f\n" +"Typ:\t\t%s\n" "Einhängungen:\t\t%s" msgid "Focal" @@ -743,9 +762,8 @@ msgid "Distance" msgstr "Entfernung" -#, fuzzy msgid "Distance to subject in meters" -msgstr "Entfernung zum Objekt" +msgstr "Entfernung zum Objekt in Meter" #. Add the model combobox msgid "Model:" @@ -791,7 +809,7 @@ msgstr "Kamera aus kompletter Liste auswählen" msgid "Reset all lens correction settings" -msgstr "" +msgstr "Alle Linsenjorrektureinstellungen zurücksetzen" #. Lens selector msgid "Lens" @@ -808,7 +826,7 @@ msgstr "Linse aus einer Liste mit möglichen Varianten auswählen" msgid "Automatically find lens and set lens corrections" -msgstr "" +msgstr "Linse automatisch suchen und Linsenkorrektur einstellen" msgid "Lateral chromatic aberration" msgstr "Seitliche farbliche Aberration" @@ -885,19 +903,17 @@ msgid "size %dx%d, scale 1/%d" msgstr "Größe %dx%d, Skala 1/%d" -#, fuzzy msgid "Wavelet denoising" -msgstr "Schwelle für Wavelet-Rauschunterdrückung" +msgstr "Wavelet-Rauschunterdrückung" msgid "Despeckling" -msgstr "" +msgstr "Störungsentfernung" -#, fuzzy msgid "Interpolating" -msgstr "Keine Interpolation" +msgstr "Interpolation" msgid "Rendering" -msgstr "" +msgstr "Rendering" msgid "Loading preview" msgstr "Vorschau laden" @@ -909,15 +925,14 @@ msgid "Black point: %0.3lf" msgstr "Schwarzpunkt: %0.3lf" -#, fuzzy msgid "No more room for new lightness adjustments." -msgstr "Kein Platz mehr für neue Kurven." +msgstr "Kein Platz mehr für neue Helligkeitsanpassungen" msgid "Aspect ratio locked, click to unlock" -msgstr "" +msgstr "Seitenverhältnis gesperrt, klicken zum Entsperren" msgid "Aspect ratio unlocked, click to lock" -msgstr "" +msgstr "Seitenverhältnis entsperrt, klicken zum Sperren" msgid "Load dark frame" msgstr "Dunkelbild laden" @@ -1048,16 +1063,20 @@ msgstr "Logarithmisch" msgid "Hot pixels: " -msgstr "" +msgstr "Hotpixel (Bildpunkte mit nicht proportionalem Lichteinfall): " msgid "mark" -msgstr "" +msgstr "markieren" msgid "Hot pixel sensitivity" msgstr "" +"Empfindlichkeit für Hotpixel (Bildpunkte mit nicht proportionalem " +"Lichteinfall)" msgid "Reset hot pixel sensitivity" msgstr "" +"Empfindlichkeit für Hotpixel (Bildpunkte mit nicht proportionalem " +"Lichteinfall) zurücksetzen" msgid "RGB histogram" msgstr "RGB-Histogramm" @@ -1092,11 +1111,8 @@ msgid "White Balance" msgstr "Weißabgleich" -#, fuzzy msgid "Cannot use camera white balance." -msgstr "" -"Der Weißabgleich der Kamera kann nicht verwendet werden, es wird zum " -"automatischen Weißabgleich zurückgekehrt." +msgstr "Kamera kann nicht mit Weißabgleich verwandt werden." msgid "" "There are no white balance presets for your camera model.\n" @@ -1172,19 +1188,14 @@ msgid "Reset dark frame" msgstr "Dunkelbild zurücksetzen" -#, fuzzy msgid "Reset adjustment" -msgstr "Globale Kontrastanpassung" +msgstr "Anpassung zurücksetzen" -#, fuzzy msgid "Select a spot on the preview image to choose hue" -msgstr "" -"Wählen Sie einen Punkt auf dem Vorschaubild, um den Weißabgleichspunkt " -"anzuwenden." +msgstr "Wählen Sie einen Punkt auf dem Vorschaubild, um Farbton auszuwählen " -#, fuzzy msgid "Remove adjustment" -msgstr "Globale Kontrastanpassung" +msgstr "Anpassung entfernen" msgid "Grayscale Mode:" msgstr "Graustufenmodus:" @@ -1200,27 +1211,35 @@ "Despeckling is off when window size or passes equals zero. When on then " "window size cannot be smaller than the number of passes." msgstr "" +"Störungsentfernung ist hauptsächlich nützlich, wenn eine hohe ISO-Nummer mit " +"einem hohen Kanalmultiplikator kombiniert wird: wenn ein Kanal ein sehr " +"schlechtes Verhältnis zwischen Signal und Rauschen hat. Versuchen Sie die " +"Fenstergröße, Farbdämpfung und die Zahl der Durchgänge für diesen Kanal auf " +"50,0,5 zu setzen. Wenn ein Kanal nur Rauschen enthält, dann versuchen Sie " +"1,0.6,1.\n" +"Störungsentfernung ist ausgeschaltet, wenn die Fenstergröße oder die " +"Durchgänge gleich Null sind. Wenn es eingeschaltet ist, kann die " +"Fenstergröße nicht kleiner sein, als die Anzahl der Durchgänge." msgid "Update channel parameters together" -msgstr "" +msgstr "Kanalparameter zusammen aktualisieren" -#, fuzzy msgid "Reset despeckle parameters" -msgstr "Dunkelbild zurücksetzen" +msgstr "Störungsentfernungsparameter zurücksetzen" #. channel to view msgid "View channel:" -msgstr "" +msgstr "Kanal ansehen:" #. Parameters msgid "Window size:" -msgstr "" +msgstr "Fenstergröße:" msgid "Color decay:" -msgstr "" +msgstr "Farbdämpfung:" msgid "Passes:" -msgstr "" +msgstr "Durchgänge:" msgid "Load base curve" msgstr "Basiskurve laden" @@ -1324,20 +1343,21 @@ msgstr "Fußende:" msgid "Auto fit crop area" -msgstr "" +msgstr "Schnittbereich automatisch anpassen" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "Schnittregion zurücksetzen" msgid "Aspect ratio:" -msgstr "Aspektverhältnis:" +msgstr "Seitenverhältnis:" msgid "" "Crop area aspect ratio.\n" "Can be entered in decimal notation (1.273)\n" "or as a ratio of two numbers (14:11)" msgstr "" -"Aspektverhältnis der Schnittregion.\n" +"Seitenverhältnis der Schnittregion.\n" "Kann in dezimaler Schreibweise (1,273)\n" "oder als Verhältnis von zwei Zahlen (14:11) eingegeben werden." @@ -1353,24 +1373,21 @@ msgid "Orientation:" msgstr "Ausrichtung:" -#, fuzzy msgid "Rotation" -msgstr "Sättigung" +msgstr "Drehung" -#, fuzzy msgid "Rotation angle" -msgstr "Sättigung" +msgstr "Drehwinkel" -#, fuzzy msgid "Reset rotation angle" -msgstr "Sättigung" +msgstr "Drehwinkel zurücksetzen" #. drawLines toggle button msgid "Grid lines" -msgstr "" +msgstr "Gitterlinien" msgid "Number of grid lines to overlay in the crop area" -msgstr "" +msgstr "Anzahl der Gitterlinien, die über den Ausschneidebereich gelegt werden" msgid "Path" msgstr "Pfad" @@ -1390,9 +1407,8 @@ msgid "TIFF lossless Compress" msgstr "verlustfreie TIFF-Komprimierung" -#, fuzzy msgid "Embed EXIF data in output" -msgstr "EXIF-Datein in JPEG- oder PNG-Dateien einbetten" +msgstr "EXIF-Daten-Ausgabe einbetten" msgid "Create ID file " msgstr "ID-Datei erzeugen" @@ -1501,9 +1517,8 @@ msgid "Correct luminosity, saturation" msgstr "Leuchtstärke und Sättigung korrigieren" -#, fuzzy msgid "Lightness Adjustments" -msgstr "Helligkeit" +msgstr "Helligkeitsanpassungen" msgid "Crop and rotate" msgstr "Schneiden und drehen" @@ -1564,7 +1579,7 @@ msgstr "Fehler beim Erstellen der temporären Datei." msgid "Error activating Gimp." -msgstr "Fehler bei der Aktivierung von Gimp." +msgstr "Fehler bei der Aktivierung von Gimp" msgid "Cannot use camera white balance, reverting to auto white balance.\n" msgstr "" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/es.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/es.gmo differ diff -Nru ufraw-0.18/po/es.po ufraw-0.19.1/po/es.po --- ufraw-0.18/po/es.po 2011-02-21 04:17:57.000000000 +0200 +++ ufraw-0.19.1/po/es.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Spanish translation of ufraw. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the ufraw package. # Enrique Jorreto , 2007-2009, 2010. # @@ -7,11 +7,11 @@ msgstr "" "Project-Id-Version: UFRaw 0.17\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2010-03-18 08:33+0100\n" "Last-Translator: Enrique Jorreto \n" "Language-Team: Spanish/Spain \n" -"Language: \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-15\n" "Content-Transfer-Encoding: 8bit\n" @@ -51,12 +51,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: ¿sobreescribir '%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "la opcion --silent solo es válida en modo por lotes" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "" -"La extracción de la imagen incrustada no esta soportada en modo interactivo" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "la opcion --silent solo es válida en modo por lotes" msgid "Raw images" msgstr "Imágenes RAW" @@ -64,11 +65,11 @@ msgid "UFRaw ID files" msgstr "Archivos ID de UFRaw" -msgid "Raw jpg's" -msgstr "jpg RAW" +msgid "Raw jpeg's" +msgstr "jpeg RAW" -msgid "Raw tif's" -msgstr "tif RAW" +msgid "Raw tiff's" +msgstr "tiff RAW" msgid "All files" msgstr "Todos los archivos" @@ -138,6 +139,10 @@ "No se puede abrir el archivo ID %s para lectura\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Error al crear el archivo '%s'." + #, c-format msgid "" "Error parsing '%s'\n" @@ -213,8 +218,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Ajuste de balance de blancos.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP Temperatura de color en Kelvin (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP Temperatura de color en Kelvin.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=VERDE Normalización del color verde.\n" @@ -410,9 +415,11 @@ "--[no]zip Activar [desactivar] compresión zip para TIFF.\n" " (por defecto: nozip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Extraer la previsualización incrustada en el archivo " "RAW\n" @@ -441,6 +448,12 @@ " a la imagen raw despues de la rotación, pero antes del " "escalado.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -474,8 +487,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Forzar que la ventana sea maximizada.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" "--silent No mostrar ningún mensaje durante el procesado por " "lotes.\n" @@ -514,7 +529,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw fue compilado sin soporte para ZIP" -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch está obsoleta. Utilice ufraw-batch en su lugar." #, c-format @@ -1327,7 +1343,8 @@ msgid "Auto fit crop area" msgstr "Auto encajar área recortada" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "Restaurar la región de recorte" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/fr.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/fr.gmo differ diff -Nru ufraw-0.18/po/fr.po ufraw-0.19.1/po/fr.po --- ufraw-0.18/po/fr.po 2011-02-21 04:17:57.000000000 +0200 +++ ufraw-0.19.1/po/fr.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,16 +1,16 @@ # French translation for UFRaw. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. # msgid "" msgstr "" "Project-Id-Version: ufraw\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2010-03-05 23:22+0100\n" "Last-Translator: Gaëtan PERRIER \n" "Language-Team: Gaëtan PERRIER \n" -"Language: \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -50,12 +50,15 @@ msgid "%s: overwrite '%s'?" msgstr "%s: écraser '%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "" "--silent cette option est valable uniquement en mode de traitement par lot" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "L'extraction de l'image incluse n'est pas supporté en mode interactif" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "" +"--silent cette option est valable uniquement en mode de traitement par lot" msgid "Raw images" msgstr "Images brutes (raw)" @@ -63,10 +66,10 @@ msgid "UFRaw ID files" msgstr "Fichiers ID UFRaw" -msgid "Raw jpg's" +msgid "Raw jpeg's" msgstr ".jpg Raw" -msgid "Raw tif's" +msgid "Raw tiff's" msgstr ".tif Raw" msgid "All files" @@ -137,6 +140,10 @@ "Ne peut ouvrir le fichier ID %s en lecture\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Erreur en créant le fichier '%s'." + #, c-format msgid "" "Error parsing '%s'\n" @@ -215,9 +222,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Réglage de la balance des blancs.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "" -"--temperature=TEMP Température de couleur en Kelvins (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP Température de couleur en Kelvin.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=VERT Normalisation du vert.\n" @@ -417,9 +423,11 @@ "--[no]zip Active [désactive] compression zip du TIFF (défaut " "nozip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Extrait l'imagette contenue dans le fichier brut " "(raw)\n" @@ -447,6 +455,12 @@ " l'image brute après rotation mais avant mise à " "l'échelle.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -480,8 +494,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Force la fenêtre maximisée.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" "--silent N'afficher aucun message durant le traitement par " "lot.\n" @@ -522,7 +538,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw a été compilé sans le support du ZIP." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch est obsolète. Utiliser ufraw-batch à la place." #, c-format @@ -1351,7 +1368,8 @@ msgid "Auto fit crop area" msgstr "Sélection automatique du recadrage" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "RàZ de la zone de découpe" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/it.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/it.gmo differ diff -Nru ufraw-0.18/po/it.po ufraw-0.19.1/po/it.po --- ufraw-0.18/po/it.po 2011-02-21 04:17:57.000000000 +0200 +++ ufraw-0.19.1/po/it.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Italian translation of Ufraw. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the Ufraw package. # daniele , 2007-2009. # eugenio , 2009. @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: UFRaw 0.16\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2009-10-14 06:00+0100\n" "Last-Translator: Eugenio Baldi \n" "Language-Team: Italian \n" @@ -52,12 +52,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s:·sovrascrivi·'%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "l'opzione --silent è valida unicamente in modalità batch" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "" -"L'estrazione di immagini integrate non è supportata in modalità interattiva" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "l'opzione --silent è valida unicamente in modalità batch" msgid "Raw images" msgstr "Immagini Raw" @@ -65,11 +66,11 @@ msgid "UFRaw ID files" msgstr "File con ID UFRaw" -msgid "Raw jpg's" -msgstr "Raw jpg" +msgid "Raw jpeg's" +msgstr "Raw jpeg" -msgid "Raw tif's" -msgstr "Raw Tif" +msgid "Raw tiff's" +msgstr "Raw Tiff" msgid "All files" msgstr "Tutti i file" @@ -139,6 +140,10 @@ "Non è possibile aprire il file ID %s in lettura\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Errore durante la creazione del file '%s'." + #, c-format msgid "" "Error parsing '%s'\n" @@ -210,8 +215,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Impostazioni per il bilanciamento del bianco.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP Temperatura colore in Kelvins (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP Temperatura colore in Kelvin.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GREEN Normalizzazione del colore verde.\n" @@ -412,9 +417,11 @@ "--[no]zip Abilita [disabilita] compressione zip TIFF " "(predefinito no zip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Estrae l'anteprima immagine nel file raw anziché " "convertire\n" @@ -443,6 +450,12 @@ " immagine raw dopo la rotazione ma prima di ogni " "scalatura.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -474,8 +487,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Forza la finestra massimizzata.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" "--silent Non mostrare alcun messaggio durante la conversione " "batch.\n" @@ -513,7 +528,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw è stato compilato senza supporto ZIP." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch è obsoleto. Utilizza ufraw-batch." #, c-format @@ -1326,7 +1342,8 @@ msgid "Auto fit crop area" msgstr "Adattamento automatico area di ritaglio" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "Ripristina la regione di taglio" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/ja.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/ja.gmo differ diff -Nru ufraw-0.18/po/ja.po ufraw-0.19.1/po/ja.po --- ufraw-0.18/po/ja.po 2011-02-21 04:17:57.000000000 +0200 +++ ufraw-0.19.1/po/ja.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,12 +1,12 @@ # Japanese translation for UFRaw. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. # msgid "" msgstr "" "Project-Id-Version: UFRaw\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2009-10-10 01:38+0900\n" "Last-Translator: Yot \n" "Language-Team: Japanese \n" @@ -54,11 +54,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: 上書ãã—ã¾ã™ã‹ '%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "--silent オプションã¯ãƒãƒƒãƒãƒ¢ãƒ¼ãƒ‰ã®ã¿ã§æœ‰åŠ¹ã§ã™" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "抽出ã—ãŸåŸ‹ã‚è¾¼ã¿ç”»åƒã¯ã‚¤ãƒ³ã‚¿ãƒ©ã‚¯ãƒ†ã‚£ãƒ–モードをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "--silent オプションã¯ãƒãƒƒãƒãƒ¢ãƒ¼ãƒ‰ã®ã¿ã§æœ‰åŠ¹ã§ã™" msgid "Raw images" msgstr "Rawç”»åƒ" @@ -66,13 +68,11 @@ msgid "UFRaw ID files" msgstr "UFRaw IDファイル" -#, fuzzy -msgid "Raw jpg's" -msgstr "Rawå½¢å¼ã®jpg" +msgid "Raw jpeg's" +msgstr "Rawå½¢å¼ã®jpeg" -#, fuzzy -msgid "Raw tif's" -msgstr "Rawå½¢å¼ã®tif" +msgid "Raw tiff's" +msgstr "Rawå½¢å¼ã®tiff" msgid "All files" msgstr "å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«" @@ -142,6 +142,10 @@ "%sã®IDファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "ファイル作æˆã‚¨ãƒ©ãƒ¼ '%s'." + #, c-format msgid "" "Error parsing '%s'\n" @@ -211,8 +215,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto ホワイトãƒãƒ©ãƒ³ã‚¹ã®è¨­å®šã€‚\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP ケルビンã§è‰²æ¸©åº¦æŒ‡å®š (2000 - 7000)。\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP ケルビンã§è‰²æ¸©åº¦æŒ‡å®šã€‚\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GREEN 緑色ã®æ¨™æº–化。\n" @@ -387,9 +391,11 @@ "nozip).\n" msgstr "--[no]zip TIFFã®zip圧縮ã®æœ‰åŠ¹[無効](デフォルト nozip)。\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Rawç”»åƒã‚’変æ›ã™ã‚‹ã®ã§ã¯ç„¡ãã€\n" " rawファイルã«åŸ‹è¾¼ã¾ã‚Œã¦ã„るプレビュー画åƒã‚’抽出\n" @@ -414,6 +420,12 @@ " 回転後ã§æ‹¡å¤§ç¸®å°å‰ã®Rawç”»åƒã‹ã‚‰ãƒ”クセルå˜ä½ã§\n" " 指定ã—ãŸç¯„囲を切り出ã™ã€‚\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -440,8 +452,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "--silent ãƒãƒƒãƒå‡¦ç†ã®é–“ãªã«ã‚‚メッセージを表示ã—ã¾ã›ã‚“。\n" msgid "" @@ -476,7 +490,7 @@ msgstr "ufrawã¯ZIPサãƒãƒ¼ãƒˆç„¡ã—ã§ãƒ“ルドã•ã‚Œã¾ã—ãŸã€‚" #, fuzzy -msgid "--batch is obsolete. Use ufraw-batch instead." +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batchオプションã§ã¯ç„¡ãufraw-batchプログラムを使ã£ã¦ãã ã•ã„。" #, c-format @@ -1272,8 +1286,9 @@ msgid "Auto fit crop area" msgstr "" -msgid "Reset the crop region" -msgstr "" +#, fuzzy +msgid "Reset the crop area" +msgstr "基本カーブをデフォルトã«æˆ»ã™" msgid "Aspect ratio:" msgstr "アスペクト比:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/ko.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/ko.gmo differ diff -Nru ufraw-0.18/po/ko.po ufraw-0.19.1/po/ko.po --- ufraw-0.18/po/ko.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/ko.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Korean translation for UFRaw. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. # Homin,Lee , 2007-2010. # @@ -7,11 +7,11 @@ msgstr "" "Project-Id-Version: UFRaw\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2010-03-18 14:45+0900\n" "Last-Translator: Homin Lee \n" "Language-Team: Gnome-kr-hackers \n" -"Language: \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -54,11 +54,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: '%s'ì„(를) ë®ì–´ 쓸까요?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "--silent ì˜µì…˜ì€ ë°°ì¹˜ëª¨ë“œì—서만 유효합니다." -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "내장 ì´ë¯¸ì§€ ì¶”ì¶œì€ ëŒ€í™”ì‹ ëª¨ë“œì—ì„œ 지ì›ë˜ì§€ 않습니다." +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "--silent ì˜µì…˜ì€ ë°°ì¹˜ëª¨ë“œì—서만 유효합니다." msgid "Raw images" msgstr "Raw ì´ë¯¸ì§€" @@ -66,11 +68,11 @@ msgid "UFRaw ID files" msgstr "UFRaw ID 파ì¼" -msgid "Raw jpg's" -msgstr "Raw jpg's" +msgid "Raw jpeg's" +msgstr "Raw jpeg's" -msgid "Raw tif's" -msgstr "Raw tif's" +msgid "Raw tiff's" +msgstr "Raw tiff's" msgid "All files" msgstr "모든 파ì¼" @@ -140,6 +142,10 @@ "ID íŒŒì¼ %sì„(를) ì½ê¸° 위해 ì—´ 수 없습니다\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "%s íŒŒì¼ ë§Œë“¤ê¸° 실패." + #, c-format msgid "" "Error parsing '%s'\n" @@ -212,8 +218,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto í™”ì´íŠ¸ 벨런스 설정.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP ìƒ‰ì˜¨ë„ ìº˜ë¹ˆê°’ (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP ìƒ‰ì˜¨ë„ ìº˜ë¹ˆê°’.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GREEN 녹색 ì •ìƒí™”.\n" @@ -388,9 +394,11 @@ msgstr "" "--[no]zip TIFF zip ì••ì¶•ì„ í™œì„±[비활성] 하기 (기본값 nozip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image raw파ì¼ì„ 변환하는 대신 raw파ì¼ì— í¬í•¨ëœ\n" " 미리보기 ì´ë¯¸ì§€ë¥¼ 추출하기.\n" @@ -417,6 +425,12 @@ "를 회전한 후,\n" " ìŠ¤ì¼€ì¼ ë˜ê¸° ì „ì— ê°’ì´ ì ìš© ëœë‹¤.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -444,8 +458,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window ì°½ í¬ê¸°ë¥¼ 강제로 최대화 하기.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "--silent 변환하는 ë™ì•ˆ 아무 ë©”ì‹œì§€ë„ í‘œì‹œí•˜ì§€ ì•ŠìŒ.\n" msgid "" @@ -478,7 +494,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufrawê°€ ZIP 지ì›ì´ 빠진 채로 빌드ë¨." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch는 ë”ì´ìƒ 사용ë˜ì§€ 않습니다. 대신 ufraw-batch를 사용하세요." #, c-format @@ -1285,7 +1302,8 @@ msgid "Auto fit crop area" msgstr "ìžë™ 맞춤 í¬ë¡­ ì˜ì—­" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "잘ë¼ë‚´ê¸° ì˜ì—­ì„ 초기화" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/nb.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/nb.gmo differ diff -Nru ufraw-0.18/po/nb.po ufraw-0.19.1/po/nb.po --- ufraw-0.18/po/nb.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/nb.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Norwegian BokmÃ¥l translation for UFRaw. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. # Alvin Brattli , 2008-2009. # @@ -7,11 +7,11 @@ msgstr "" "Project-Id-Version: UFRaw\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2009-10-12 18:00+0200\n" "Last-Translator: Alvin Brattli\n" "Language-Team: \n" -"Language: \n" +"Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -52,11 +52,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: overskriv «%s»?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "Alternativet --silent kan bare brukes i batch-modus" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "Utpakking av inkludert bilde er ikke støttet i interaktiv modus" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "Alternativet --silent kan bare brukes i batch-modus" msgid "Raw images" msgstr "Raw-bilder" @@ -64,11 +66,11 @@ msgid "UFRaw ID files" msgstr "UFRaw ID-filer" -msgid "Raw jpg's" -msgstr "Raw jpg-er" +msgid "Raw jpeg's" +msgstr "Raw jpeg-er" -msgid "Raw tif's" -msgstr "Raw tif-er" +msgid "Raw tiff's" +msgstr "Raw tiff-er" msgid "All files" msgstr "Alle filer" @@ -138,6 +140,10 @@ "Kan ikke Ã¥pne ID-filen %s for lesing\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Feil ved oppretting av filen «%s»." + #, c-format msgid "" "Error parsing '%s'\n" @@ -208,8 +214,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Innstilling for hvitbalanse.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP Fargetemperatur i Kelvin (2000-7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP Fargetemperatur i Kelvin.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GRØNN Grønn fargenormalisering.\n" @@ -404,9 +410,11 @@ "--[no]zip SlÃ¥ pÃ¥ [slÃ¥ av] zip-komprimering for TIFF\n" " (standardverdi: slÃ¥ av).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Pakk ut forhÃ¥ndsvisningsbildet inkludert i raw-filen\n" " i stedet for Ã¥ konvertere raw-bildet.\n" @@ -433,6 +441,12 @@ "til\n" " raw-bildet etter rotasjon, men før skalering.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -463,8 +477,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Tving vinduet til Ã¥ være maksimalisert.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "--silent Vær helt stille under satsvis konvertering.\n" msgid "" @@ -499,7 +515,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw ble bygget uten støtte for ZIP." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch er avlegs. Bruk ufraw-batch istedenfor." #, c-format @@ -1307,7 +1324,8 @@ msgid "Auto fit crop area" msgstr "Tilpass beskjæringsomrÃ¥det automatisk" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "Tilbakestill beskjæringsomrÃ¥de" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/nl.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/nl.gmo differ diff -Nru ufraw-0.18/po/nl.po ufraw-0.19.1/po/nl.po --- ufraw-0.18/po/nl.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/nl.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,21 +1,21 @@ # Translation of UFRaw to Nederlands. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. -# Simon Oosthoek , 2008, 2009, 2010. +# Simon Oosthoek , 2008-2011. # msgid "" msgstr "" -"Project-Id-Version: nl\n" +"Project-Id-Version: UFRaw-0.19\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" -"PO-Revision-Date: 2010-03-04 16:10+0100\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" +"PO-Revision-Date: 2011-08-12 13:37+0200\n" "Last-Translator: Simon Oosthoek\n" "Language-Team: American English \n" -"Language: \n" +"Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.0\n" +"X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translate text message from GtkImageView: @@ -53,12 +53,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: overschrijven '%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "--silent parameter is alleen geldig in batch modus" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "" -"Ingebedde afbeelding uitpakken wordt niet ondersteund in interactieve modus" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "--silent parameter is alleen geldig in batch modus" msgid "Raw images" msgstr "RAW afbeeldingen" @@ -66,11 +67,11 @@ msgid "UFRaw ID files" msgstr "UFRaw ID bestanden" -msgid "Raw jpg's" -msgstr "RAW jpg's" +msgid "Raw jpeg's" +msgstr "RAW jpeg's" -msgid "Raw tif's" -msgstr "RAW tif's" +msgid "Raw tiff's" +msgstr "RAW tiff's" msgid "All files" msgstr "Alle bestanden" @@ -140,6 +141,10 @@ "Kan ID bestand %s niet lezen\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Fout bij aanmaken van bestand '%s'." + #, c-format msgid "" "Error parsing '%s'\n" @@ -215,8 +220,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Wit balans instelling.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP Kleurtemperatuur in Kelvin (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP Kleurtemperatuur in Kelvin.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GROEN Groen kleur normalisatie.\n" @@ -356,14 +361,13 @@ " Te gebruiken grijswaarden conversie algoritme " "(standaard: none).\n" -#, fuzzy msgid "" "--grayscale-mixer=RED,GREEN,BLUE\n" " Grayscale mixer values to use (default 1,1,1).\n" msgstr "" -"--grayscale=none|lightness|luminance|value|mixer\n" -" Te gebruiken grijswaarden conversie algoritme " -"(standaard: none).\n" +"--grayscale-mixer=ROOD,GROEN,BLAUW\n" +" Te gebruiken grijswaarden mengverhouding (standaard: " +"1,1,1).\n" msgid "The options which are related to the final output are:\n" msgstr "De opties van toepassing op de uiteindelijke output zijn:\n" @@ -405,9 +409,11 @@ "--[no]zip Gebruik [geen] TIFF zip (deflate) compressie " "(standaard: nozip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Extraheer de voorbeeldafbeelding uit het raw bestand\n" " in plaats van het raw bestand te converteren.\n" @@ -434,6 +440,12 @@ " toegepast op de RAW foto na rotatie, maar voor " "verkleining.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -465,8 +477,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Forceer schermvullend venster.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" "--silent Geef geen berichten weer tijdens batch conversie.\n" @@ -505,7 +519,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw is gemaakt zonder ZIP ondersteuning." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch is achterhaald. Gebruik ufraw-batch in plaats van deze optie." #, c-format @@ -540,9 +555,9 @@ msgid "'%s' is not a valid grayscale option." msgstr "'%s' is geen geldige grijsschaal optie." -#, fuzzy, c-format +#, c-format msgid "'%s' is not a valid grayscale-mixer option." -msgstr "'%s' is geen geldige grijsschaal optie." +msgstr "'%s' is geen geldige grijsschaal-mixer optie." #, c-format msgid "'%s' is not a valid restore option." @@ -1174,7 +1189,7 @@ msgstr "Reset Kleurmixer" # There's a few problems here: -# The last sentence should be put before the next-to-last one. (I did so in the translation). +# The last sentence should be put before the next-to-last one. (I did so in the translation). # I don't know how to translate the numbers, since the normal dutch way of representing numbers is using a comma for decimal separator. I don't know how this would end up in a completely dutch environment (which I'm not using) # msgid "" @@ -1318,7 +1333,8 @@ msgid "Auto fit crop area" msgstr "Automatisch aanpassen uitsnede" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "Reset de uitsnijgrenzen" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/pl.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/pl.gmo differ diff -Nru ufraw-0.18/po/pl.po ufraw-0.19.1/po/pl.po --- ufraw-0.18/po/pl.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/pl.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Polish translation for UFRaw -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. # Tomasz Golinski tomaszg@alpha.uwb.edu.pl, 2007-2010. # @@ -7,11 +7,11 @@ msgstr "" "Project-Id-Version: UFRaw 0.17\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2010-03-04 23:12+0100\n" "Last-Translator: Tomasz Golinski \n" "Language-Team: Polish\n" -"Language: \n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -51,12 +51,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: nadpisać '%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "opcja --silent dziaÅ‚a tylko w trybie batch" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "" -"Ekstrakcja doÅ‚Ä…czonego zdjÄ™cia nie jest obsÅ‚ugiwana w trybie interaktywnym" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "opcja --silent dziaÅ‚a tylko w trybie batch" msgid "Raw images" msgstr "ZdjÄ™cia RAW" @@ -64,11 +65,11 @@ msgid "UFRaw ID files" msgstr "Pliki UFRaw ID" -msgid "Raw jpg's" -msgstr "Jpgi RAW " +msgid "Raw jpeg's" +msgstr "Jpegi RAW " -msgid "Raw tif's" -msgstr "Tify RAW" +msgid "Raw tiff's" +msgstr "Tiffy RAW" msgid "All files" msgstr "Wszystkie pliki" @@ -138,6 +139,10 @@ "Nie mogÄ™ odczytać pliku ID %s\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "BÅ‚Ä…d tworzenia pliku '%s'." + #, c-format msgid "" "Error parsing '%s'\n" @@ -210,8 +215,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Ustawienie balansu bieli.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP Temperatura koloru w kelwinach (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP Temperatura koloru w kelwinach.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GREEN Normalizacja zielonego kanaÅ‚u.\n" @@ -400,9 +405,11 @@ "--[no]zip WÅ‚Ä…cz [wyÅ‚Ä…cz] kompresjÄ™ zip pliku TIFF (domyÅ›lnie " "nozip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Zapisz zdjÄ™cie doÅ‚Ä…czone do pliku RAW\n" " zamiast konwertować RAW.\n" @@ -428,6 +435,12 @@ "wzglÄ™dem\n" " pliku raw po obróceniu, ale przed skalowaniem.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -458,8 +471,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window WymuÅ› maksymalizacjÄ™ okna.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" "--silent Nie wyÅ›wietlaj żadnych komunikatów w trakcie " "konwersji.\n" @@ -497,7 +512,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw zostaÅ‚ skompilowany bez obsÅ‚ugi ZIP." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch jest przestarzaÅ‚Ä… opcjÄ…. ProszÄ™ używać ufraw-batch." #, c-format @@ -1311,7 +1327,8 @@ msgid "Auto fit crop area" msgstr "Automatycznie dopasuj kadr" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "Zresetuj kadr" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/pt.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/pt.gmo differ diff -Nru ufraw-0.18/po/pt.po ufraw-0.19.1/po/pt.po --- ufraw-0.18/po/pt.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/pt.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Portuguese (Brazil) translation for UFRaw. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. # Bruno Buys , 2007, 2009. # @@ -7,11 +7,11 @@ msgstr "" "Project-Id-Version: UFRaw\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2009-10-07 10:53-0300\n" "Last-Translator: Bruno Buys \n" "Language-Team: Portuguese\n" -"Language: \n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -52,11 +52,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: sobrescrever '%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "opção --silent é válida somente no modo em lotes" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "Extrair imagens embutidas não é suportado em modo interativo" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "opção --silent é válida somente no modo em lotes" msgid "Raw images" msgstr "Imagens cruas" @@ -64,11 +66,11 @@ msgid "UFRaw ID files" msgstr "Arquivos ID do UFRaw" -msgid "Raw jpg's" -msgstr "Raw jpg" +msgid "Raw jpeg's" +msgstr "Raw jpeg" -msgid "Raw tif's" -msgstr "Raw tif" +msgid "Raw tiff's" +msgstr "Raw tiff" msgid "All files" msgstr "Todos os arquivos" @@ -138,6 +140,10 @@ "Não é possível abrir o arquivo ID %s para leitura\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Erro criando arquivo '%s'." + #, c-format msgid "" "Error parsing '%s'\n" @@ -212,8 +218,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Definição de balanço de branco.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP Temperatura de cor em Kelvins (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP Temperatura de cor em Kelvin.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GREEN Normalização de verde\n" @@ -400,9 +406,11 @@ "--[no]zip Habilita [desabilita] compressão zip em TIFF (padrão " "nozip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Extrai a imagem miniatura embutida no arquivo cru\n" " em vez de convertê-la.\n" @@ -431,6 +439,12 @@ " imagem cruz depois da rotação, mas antes de qualquer " "redimensionamento.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -460,8 +474,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Faz a janela ser maximizada.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" "--silent Não mostra nenhuma mensagem durante conversão em " "lote.\n" @@ -499,7 +515,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw foi compilado sem suporte a zip." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch é obsoleto. Use ufraw-batch no lugar." #, c-format @@ -1311,7 +1328,8 @@ msgid "Auto fit crop area" msgstr "" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "Redefine a região de corte" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/ru.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/ru.gmo differ diff -Nru ufraw-0.18/po/ru.po ufraw-0.19.1/po/ru.po --- ufraw-0.18/po/ru.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/ru.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Russian translation for UFRaw. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. # Alexey Voinov , 2006. # Alexander Rabtchevich , 2006, 2007, 2009. @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: UFRaw 0.17\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2010-03-21 22:24+0300\n" "Last-Translator: ÐлекÑандр Прокудин \n" "Language-Team: Russian \n" @@ -61,12 +61,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: перепиÑать '%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "ключ --silent иÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в пакетном режиме" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "" -"Извлечение вÑтроенного Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ поддерживаетÑÑ Ð² интерактивном режиме" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "ключ --silent иÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в пакетном режиме" msgid "Raw images" msgstr "Снимки RAW" @@ -74,10 +75,10 @@ msgid "UFRaw ID files" msgstr "ID-файлы UFRaw" -msgid "Raw jpg's" +msgid "Raw jpeg's" msgstr "Raw JPEG" -msgid "Raw tif's" +msgid "Raw tiff's" msgstr "Raw TIFF" msgid "All files" @@ -148,6 +149,10 @@ "Ðевозможно открыть ID-файл %s Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Ошибка при Ñоздании файла '%s'." + #, c-format msgid "" "Error parsing '%s'\n" @@ -220,9 +225,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Параметры баланÑа белого.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "" -"--temperature=TEMP Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð° в градуÑах Кельвина (2000-7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð° в градуÑах Кельвина.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GREEN ÐÐ¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·ÐµÐ»Ñ‘Ð½Ð¾Ð³Ð¾ цвета.\n" @@ -422,9 +426,11 @@ "--[no]zip Включить [выключить] zip Ñжатие TIFF (по умолчанию " "нет).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Извлечь изображение JPEG, вÑтроенное в цифровой " "негатив, \n" @@ -451,6 +457,12 @@ " отноÑительно RAW (негатива) поÑле поворота, но перед " "маÑштабированием.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -483,8 +495,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Сделать окно развенутым.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "--silent Ðичего не выводить при пакетной обработке.\n" msgid "" @@ -518,7 +532,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw был Ñобран без поддержки ZIP." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "ÐžÐ¿Ñ†Ð¸Ñ --batch уÑтарела. Взамен иÑпользуйте ufraw-batch." #, c-format @@ -1329,7 +1344,8 @@ msgid "Auto fit crop area" msgstr "ÐвтоматичеÑки подобрать облаÑÑ‚ÑŒ кадрированиÑ" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "СброÑить облаÑÑ‚ÑŒ кадрированиÑ" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/sr.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/sr.gmo differ Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/sr@latin.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/sr@latin.gmo differ diff -Nru ufraw-0.18/po/sr@latin.po ufraw-0.19.1/po/sr@latin.po --- ufraw-0.18/po/sr@latin.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/sr@latin.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Serbian translation of UFRaw -# Copyright (C) 2008-2011 Udi Fuchs. +# Copyright (C) 2008-2013 Udi Fuchs. # This file is distributed under the same license as the ufraw package. # Courtesy of Prevod.org team (http://prevod.org/) -- 2008, 2009. # MiloÅ¡ Popović , 2010. @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: ufraw\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2010-03-16 12:54+0100\n" "Last-Translator: MiloÅ¡ Popović \n" "Language-Team: Serbian \n" @@ -54,11 +54,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: da prepiÅ¡em „%s“?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "--silent mogućnost se koristi samo u paketnom režimu" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "IzvlaÄenje umetnute slike nije podržano u upitnom režimu" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "--silent mogućnost se koristi samo u paketnom režimu" msgid "Raw images" msgstr "Raw slike" @@ -66,11 +68,11 @@ msgid "UFRaw ID files" msgstr "NLRaw IB datoteke" -msgid "Raw jpg's" -msgstr "Raw jpg" +msgid "Raw jpeg's" +msgstr "Raw jpeg" -msgid "Raw tif's" -msgstr "Raw tif" +msgid "Raw tiff's" +msgstr "Raw tiff" msgid "All files" msgstr "Sve datoteke" @@ -142,6 +144,10 @@ "Ne mogu da proÄitam IB datoteku %s\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "GreÅ¡ka pri pravljenju datoteke „%s“." + #, c-format msgid "" "Error parsing '%s'\n" @@ -216,10 +222,10 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto PodeÅ¡avanje ravnoteže bele.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" msgstr "" "--temperature=Temperatura\n" -" Temperatura boje u Kelvinima (2000 - 7000).\n" +" Temperatura boje u Kelvinima.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "" @@ -421,9 +427,11 @@ "--[no]zip Zip pakovanje TIFF datoteka (podrazumevano ne pakuje u " "Zip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image IzvlaÄi pregled slike umetnut u raw datoteku umesto\n" " da prevodi raw sliku.\n" @@ -450,6 +458,12 @@ "na raw\n" " sliku nakon rotacije, ali pre promene veliÄine.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -484,8 +498,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Pokreće program u uvećanom prozor.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "--silent Ne prikazuje nikakve poruke u paketnom režimu.\n" # Å ta je zapravo second group of options? @@ -521,7 +537,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw je izgraÄ‘en bez podrÅ¡ke za ZIP datoteke." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch mogućnost je prevaziÄ‘ena. Koristite ufraw-batch." #, c-format @@ -1329,7 +1346,8 @@ msgid "Auto fit crop area" msgstr "Sam iseca sliku na najbolju veliÄinu" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "PoniÅ¡ti region za isecanje" msgid "Aspect ratio:" diff -Nru ufraw-0.18/po/sr.po ufraw-0.19.1/po/sr.po --- ufraw-0.18/po/sr.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/sr.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Serbian translation of UFRaw -# Copyright (C) 2008-2011 Udi Fuchs. +# Copyright (C) 2008-2013 Udi Fuchs. # This file is distributed under the same license as the ufraw package. # Courtesy of Prevod.org team (http://prevod.org/) -- 2008, 2009. # Милош Поповић , 2010. @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: ufraw\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2010-03-16 12:54+0100\n" "Last-Translator: Милош Поповић \n" "Language-Team: Serbian \n" @@ -54,11 +54,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: да препишем „%s“?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "--silent могућноÑÑ‚ Ñе кориÑти Ñамо у пакетном режиму" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "Извлачење уметнуте Ñлике није подржано у упитном режиму" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "--silent могућноÑÑ‚ Ñе кориÑти Ñамо у пакетном режиму" msgid "Raw images" msgstr "Raw Ñлике" @@ -66,11 +68,11 @@ msgid "UFRaw ID files" msgstr "ÐЛRaw ИБ датотеке" -msgid "Raw jpg's" -msgstr "Raw jpg" +msgid "Raw jpeg's" +msgstr "Raw jpeg" -msgid "Raw tif's" -msgstr "Raw tif" +msgid "Raw tiff's" +msgstr "Raw tiff" msgid "All files" msgstr "Све датотеке" @@ -140,6 +142,10 @@ "Ðе могу да прочитам ИБ датотеку %s\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Грешка при прављењу датотеке „%s“." + #, c-format msgid "" "Error parsing '%s'\n" @@ -214,10 +220,10 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto Подешавање равнотеже беле.\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" msgstr "" "--temperature=Темпeratura\n" -" Температура боје у Келвинима (2000 - 7000).\n" +" Температура боје у Келвинима.\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=Зелена Уједначење зелене компоненте у равнотежи беле.\n" @@ -415,9 +421,11 @@ "--[no]zip Zip паковање TIFF датотека (подразумевано не пакује у " "Zip).\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image Извлачи преглед Ñлике уметнут у raw датотеку умеÑто\n" " да преводи raw Ñлику.\n" @@ -444,6 +452,12 @@ "на raw\n" " Ñлику након ротације, али пре промене величине.\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -478,8 +492,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window Покреће програм у увећаном прозор.\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "--silent Ðе приказује никакве поруке у пакетном режиму.\n" # Шта је заправо second group of options? @@ -515,7 +531,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw је изграђен без подршке за ZIP датотеке." -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch могућноÑÑ‚ је превазиђена. КориÑтите ufraw-batch." #, c-format @@ -1322,7 +1339,8 @@ msgid "Auto fit crop area" msgstr "Сам иÑеца Ñлику на најбољу величину" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "Поништи регион за иÑецање" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/sv.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/sv.gmo differ diff -Nru ufraw-0.18/po/sv.po ufraw-0.19.1/po/sv.po --- ufraw-0.18/po/sv.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/sv.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Swedish translation for UFRaw. -# Copyright (C) 2006-2011 Udi Fuchs. +# Copyright (C) 2006-2013 Udi Fuchs. # This file is distributed under the same license as the UFRaw package. # Daniel Nylander , 2007, 2009. # @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: UFRaw\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2009-01-04 06:00+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -51,10 +51,10 @@ msgid "%s: overwrite '%s'?" msgstr "%s: skriv över \"%s\"?" -msgid "--silent option is valid only in batch mode" +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "" -msgid "Extracting embedded image is not supported in interactive mode" +msgid "The --embedded-image option is only valid with 'ufraw-batch'" msgstr "" msgid "Raw images" @@ -63,11 +63,11 @@ msgid "UFRaw ID files" msgstr "" -msgid "Raw jpg's" -msgstr "" +msgid "Raw jpeg's" +msgstr "RÃ¥bilder" -msgid "Raw tif's" -msgstr "" +msgid "Raw tiff's" +msgstr "RÃ¥bilder" msgid "All files" msgstr "Alla filer" @@ -135,6 +135,10 @@ "%s\n" msgstr "" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "Fel när filen \"%s\" skapades." + #, c-format msgid "" "Error parsing '%s'\n" @@ -196,7 +200,7 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" msgstr "" msgid "--green=GREEN Green color normalization.\n" @@ -335,7 +339,8 @@ msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" msgid "" @@ -352,6 +357,12 @@ " raw image after rotation but before any scaling.\n" msgstr "" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -375,7 +386,8 @@ msgstr "" msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" msgid "" @@ -402,7 +414,7 @@ msgstr "ufraw byggdes utan ZIP-stöd." #, fuzzy -msgid "--batch is obsolete. Use ufraw-batch instead." +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch är förÃ¥ldrad. använd ufraw-batch istället." #, c-format @@ -1173,7 +1185,7 @@ msgid "Auto fit crop area" msgstr "" -msgid "Reset the crop region" +msgid "Reset the crop area" msgstr "" msgid "Aspect ratio:" diff -Nru ufraw-0.18/po/ufraw.pot ufraw-0.19.1/po/ufraw.pot --- ufraw-0.18/po/ufraw.pot 2011-02-21 04:17:57.000000000 +0200 +++ ufraw-0.19.1/po/ufraw.pot 2013-03-05 05:40:55.000000000 +0200 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -52,10 +52,10 @@ msgid "%s: overwrite '%s'?" msgstr "" -msgid "--silent option is valid only in batch mode" +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "" -msgid "Extracting embedded image is not supported in interactive mode" +msgid "The --embedded-image option is only valid with 'ufraw-batch'" msgstr "" msgid "Raw images" @@ -64,10 +64,10 @@ msgid "UFRaw ID files" msgstr "" -msgid "Raw jpg's" +msgid "Raw jpeg's" msgstr "" -msgid "Raw tif's" +msgid "Raw tiff's" msgstr "" msgid "All files" @@ -135,6 +135,10 @@ msgstr "" #, c-format +msgid "Error reading from file '%s'." +msgstr "" + +#, c-format msgid "" "Error parsing '%s'\n" "%s" @@ -191,7 +195,7 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" msgstr "" msgid "--green=GREEN Green color normalization.\n" @@ -327,7 +331,8 @@ msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" msgid "" @@ -344,6 +349,12 @@ " raw image after rotation but before any scaling.\n" msgstr "" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -367,7 +378,8 @@ msgstr "" msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "" msgid "" @@ -393,7 +405,7 @@ msgid "ufraw was build without ZIP support." msgstr "" -msgid "--batch is obsolete. Use ufraw-batch instead." +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "" #, c-format @@ -1154,7 +1166,7 @@ msgid "Auto fit crop area" msgstr "" -msgid "Reset the crop region" +msgid "Reset the crop area" msgstr "" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/zh_CN.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/zh_CN.gmo differ diff -Nru ufraw-0.18/po/zh_CN.po ufraw-0.19.1/po/zh_CN.po --- ufraw-0.18/po/zh_CN.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/zh_CN.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,5 +1,5 @@ # Translation of ufraw.pot to Simplified Chinese. -# Copyright (C) 2009-2011 Udi Fuchs & Xu Yuanfei. +# Copyright (C) 2009-2013 Udi Fuchs & Xu Yuanfei. # This file is distributed under the same license as the UFraw package. # Xu Yuanfei , 2009. # Aron Xu , 2009. @@ -8,11 +8,11 @@ msgstr "" "Project-Id-Version: ufraw-0.16\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2009-10-21 23:21+0800\n" "Last-Translator: Xu Yuanfei \n" "Language-Team: Simplified Chinese \n" -"Language: \n" +"Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -52,11 +52,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s: 覆盖 '%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "--沉默选项,åªé€‚用于批处ç†æ¨¡å¼" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "嵌入å¼å›¾åƒæå–,ä¸æ”¯æŒäº¤äº’模å¼" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "--沉默选项,åªé€‚用于批处ç†æ¨¡å¼" msgid "Raw images" msgstr "Raw 图åƒ" @@ -64,11 +66,11 @@ msgid "UFRaw ID files" msgstr "UFRaw ID 文件" -msgid "Raw jpg's" -msgstr "Raw jpg's" +msgid "Raw jpeg's" +msgstr "Raw jpeg's" -msgid "Raw tif's" -msgstr "Raw tif's" +msgid "Raw tiff's" +msgstr "Raw tiff's" msgid "All files" msgstr "所有文件" @@ -138,6 +140,10 @@ "无法打开ID文件 %s è¿›è¡Œè¯»å– \n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "创建文件时出错 '%s'" + #, c-format msgid "" "Error parsing '%s'\n" @@ -206,8 +212,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto 白平衡设置。\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP 色温(开尔文) (2000K-7000K)。\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP 色温。\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GREEN 绿色正常化。\n" @@ -378,9 +384,11 @@ "nozip).\n" msgstr "--[no]zip å¯ç”¨ [ç¦ç”¨] TIFF zip 压缩 (默认 nozip)。\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image æå–嵌入在 raw 文件中的预览图åƒï¼Œè€Œä¸æ˜¯è½¬æ¢ raw 图" "åƒã€‚\n" @@ -407,6 +415,12 @@ "放比例之\n" " å‰ç”Ÿæ•ˆã€‚\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -430,8 +444,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window 强制窗å£æœ€å¤§åŒ–。\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "--silent 批é‡è½¬æ¢æ—¶ä¸æ˜¾ç¤ºä»»ä½•ä¿¡æ¯ã€‚\n" msgid "" @@ -463,7 +479,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufrawä¸æ”¯æŒZIP。" -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch 已废弃。用 ufraw-batch 替代。" #, c-format @@ -1265,7 +1282,8 @@ msgid "Auto fit crop area" msgstr "" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "é‡è®¾è£å‰ªåŒºåŸŸ" msgid "Aspect ratio:" Binary files /tmp/wGOT9uPgQ0/ufraw-0.18/po/zh_TW.gmo and /tmp/GvUcp6e1kN/ufraw-0.19.1/po/zh_TW.gmo differ diff -Nru ufraw-0.18/po/zh_TW.po ufraw-0.19.1/po/zh_TW.po --- ufraw-0.18/po/zh_TW.po 2011-02-21 04:17:58.000000000 +0200 +++ ufraw-0.19.1/po/zh_TW.po 2013-03-05 05:40:55.000000000 +0200 @@ -1,16 +1,16 @@ # Traditional Chinese translation of UFRaw. -# Copyright (C) 2010-2011 Udi Fuchs & Lu, Chao-Ming (Tetralet). +# Copyright (C) 2010-2013 Udi Fuchs & Lu, Chao-Ming (Tetralet). # This file is distributed under the same license as the UFRaw package. # msgid "" msgstr "" "Project-Id-Version: ufraw-0.18\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 20:17-0600\n" +"POT-Creation-Date: 2013-02-26 22:22-0600\n" "PO-Revision-Date: 2009-06-15 00:00+0800\n" "Last-Translator: Tetralet \n" "Language-Team: Tetralet \n" -"Language: \n" +"Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -50,11 +50,13 @@ msgid "%s: overwrite '%s'?" msgstr "%s:是å¦è¦†å¯« '%s'?" -msgid "--silent option is valid only in batch mode" +#, fuzzy +msgid "The --silent option is only valid with 'ufraw-batch'" msgstr "--silent é¸é …åªé©ç”¨æ–¼æ‰¹æ¬¡è™•ç†æ¨¡å¼" -msgid "Extracting embedded image is not supported in interactive mode" -msgstr "ä¸æ”¯æ´åœ¨äº’動模å¼ä¸­åŒ¯å‡ºå…§åµŒå½±åƒ" +#, fuzzy +msgid "The --embedded-image option is only valid with 'ufraw-batch'" +msgstr "--silent é¸é …åªé©ç”¨æ–¼æ‰¹æ¬¡è™•ç†æ¨¡å¼" msgid "Raw images" msgstr "Raw å½±åƒ" @@ -62,11 +64,11 @@ msgid "UFRaw ID files" msgstr "UFRaw ID 檔" -msgid "Raw jpg's" -msgstr "jpg æ ¼å¼çš„ Raw" +msgid "Raw jpeg's" +msgstr "jpeg æ ¼å¼çš„ Raw" -msgid "Raw tif's" -msgstr "tif æ ¼å¼çš„ Raw" +msgid "Raw tiff's" +msgstr "tiff æ ¼å¼çš„ Raw" msgid "All files" msgstr "所有檔案" @@ -136,6 +138,10 @@ "無法開啟 ID 檔案 %s 以供讀å–\n" "%s\n" +#, fuzzy, c-format +msgid "Error reading from file '%s'." +msgstr "在建立檔案 '%s' 時發生錯誤。" + #, c-format msgid "" "Error parsing '%s'\n" @@ -203,8 +209,8 @@ msgid "--wb=camera|auto White balance setting.\n" msgstr "--wb=camera|auto 白平衡設定。\n" -msgid "--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n" -msgstr "--temperature=TEMP 色溫,以絕å°æº«åº¦ K 標示 (2000-7000)。\n" +msgid "--temperature=TEMP Color temperature in Kelvin.\n" +msgstr "--temperature=TEMP 色溫,以絕å°æº«åº¦ K 標示。\n" msgid "--green=GREEN Green color normalization.\n" msgstr "--green=GREEN 綠色正è¦åŒ–。\n" @@ -378,9 +384,11 @@ "nozip).\n" msgstr "--[no]zip 啟用 [關閉] TIFF zip 壓縮(é è¨­å€¼ç‚º nozip)。\n" +#, fuzzy msgid "" "--embedded-image Extract the preview image embedded in the raw file\n" -" instead of converting the raw image.\n" +" instead of converting the raw image. This option\n" +" is only valid with 'ufraw-batch'.\n" msgstr "" "--embedded-image 匯出內嵌於 raw 檔案中的é è¦½å½±åƒï¼Œè€Œä¸æ˜¯è½‰æ› raw å½±" "åƒã€‚\n" @@ -407,6 +415,12 @@ "後ã€\n" " 縮放比例之å‰é€²è¡Œã€‚\n" +msgid "--auto-crop Crop the output automatically.\n" +msgstr "" + +msgid "--aspect-ratio X:Y Set crop area aspect ratio.\n" +msgstr "" + msgid "" "--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n" @@ -432,8 +446,10 @@ msgid "--maximize-window Force window to be maximized.\n" msgstr "--maximize-window 強制將視窗最大化。\n" +#, fuzzy msgid "" -"--silent Do not display any messages during batch conversion.\n" +"--silent Do not display any messages during conversion. This\n" +" option is only valid with 'ufraw-batch'.\n" msgstr "--silent 在批次轉æ›æœŸé–“ä¸é¡¯ç¤ºä»»ä½•ä¿¡æ¯ã€‚\n" msgid "" @@ -465,7 +481,8 @@ msgid "ufraw was build without ZIP support." msgstr "ufraw åœ¨ç·¨è­¯æ™‚æ²’æœ‰ç·¨å…¥å° ZIP 的支æ´ã€‚" -msgid "--batch is obsolete. Use ufraw-batch instead." +#, fuzzy +msgid "--batch is obsolete. Use 'ufraw-batch' instead." msgstr "--batch 已廢棄。請替而使用 ufraw-batch。" #, c-format @@ -1269,7 +1286,8 @@ msgid "Auto fit crop area" msgstr "自動符åˆè£å‰ªå€åŸŸ" -msgid "Reset the crop region" +#, fuzzy +msgid "Reset the crop area" msgstr "é‡ç½®è£å‰ªå€åŸŸ" msgid "Aspect ratio:" diff -Nru ufraw-0.18/README ufraw-0.19.1/README --- ufraw-0.18/README 2011-02-21 04:18:20.000000000 +0200 +++ ufraw-0.19.1/README 2013-03-08 05:45:30.000000000 +0200 @@ -99,7 +99,7 @@ UFRaw is written in both C and C++, so if you set CFLAGS you should also set CXXFLAGS. If you do not set them, then the default for -GNU C is "-W -Wall -g -O3 -ffast-math -fomit-frame-pointer". +GNU C is "-W -Wall -g -O3 -fomit-frame-pointer". Other options for the configuration script are: @@ -281,6 +281,14 @@ History ======= +07/03/2013 - UFRaw-0.19.1 released, based on DCRaw v 9.17. + +* Fix crash tiggered by compiler optimization. + +26/02/2013 - UFRaw-0.19 released, based on DCRaw v 9.17. + +* Maintenance release with lots of bug fixes. + 20/02/2011 - UFRaw-0.18 released, based on DCRaw v 9.06. * New Traditional Chinese translation by Tetralet. diff -Nru ufraw-0.18/uf_glib.h ufraw-0.19.1/uf_glib.h --- ufraw-0.18/uf_glib.h 2011-02-19 06:29:33.000000000 +0200 +++ ufraw-0.19.1/uf_glib.h 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * uf_glib.h - glib compatibility header - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,6 +17,7 @@ extern "C" { #endif +#include #include // g_win32_locale_filename_from_utf8 is needed only on win32 diff -Nru ufraw-0.18/uf_gtk.cc ufraw-0.19.1/uf_gtk.cc --- ufraw-0.18/uf_gtk.cc 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/uf_gtk.cc 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * uf_gtk.cc - gtk compatibility layer - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -136,48 +136,6 @@ } } -// Get the display ICC profile of the monitor associated with the widget. -// For X display, uses the ICC profile specifications version 0.2 from -// http://burtonini.com/blog/computers/xicc -// Based on code from Gimp's modules/cdisplay_lcms.c -#ifdef GDK_WINDOWING_QUARTZ - typedef struct { - guchar *data; - gsize len; - } ProfileTransfer; - - enum { - openReadSpool = 1, /* start read data process */ - openWriteSpool = 2, /* start write data process */ - readSpool = 3, /* read specified number of bytes */ - writeSpool = 4, /* write specified number of bytes */ - closeSpool = 5 /* complete data transfer process */ - }; - - static OSErr _uf_lcms_flatten_profile(SInt32 command, - SInt32 *size, void *data, void *refCon) - { - ProfileTransfer *transfer = static_cast(refCon); - - switch (command) { - case openWriteSpool: - g_return_val_if_fail(transfer->data == NULL && transfer->len == 0, -1); - break; - - case writeSpool: - transfer->data = static_cast( - g_realloc(transfer->data, transfer->len + *size)); - memcpy(transfer->data + transfer->len, data, *size); - transfer->len += *size; - break; - - default: - break; - } - return 0; - } -#endif /* GDK_WINDOWING_QUARTZ */ - // On X11 the display profile can be embedded using the 'xicc' command. void uf_get_display_profile(GtkWidget *widget, guint8 **buffer, gint *buffer_size) @@ -215,13 +173,17 @@ if (prof == NULL) return; - ProfileTransfer transfer = { NULL, 0 }; - Boolean foo; - CMFlattenProfile(prof, 0, _uf_lcms_flatten_profile, &transfer, &foo); + CFDataRef data; + data = CMProfileCopyICCData(NULL, prof); CMCloseProfile(prof); - *buffer = transfer.data; - *buffer_size = transfer.len; + UInt8 *tmp_buffer = (UInt8 *) g_malloc(CFDataGetLength(data)); + CFDataGetBytes(data, CFRangeMake(0, CFDataGetLength(data)), tmp_buffer); + + *buffer = (guint8 *) tmp_buffer; + *buffer_size = CFDataGetLength(data); + + CFRelease(data); #elif defined G_OS_WIN32 (void)widget; @@ -351,6 +313,8 @@ delete data; return; } + if (type != uf_value_changed) + return; GtkComboBox *combo = GTK_COMBO_BOX(data->gobject[0]); UFArray &array = *object; if (array.Index() >= 0) { @@ -576,16 +540,13 @@ _UFWidgetData &data = _ufarray_widget_data(array); gtk_widget_set_size_request(combo, 50, -1); data.gobject[0] = G_OBJECT(combo); - char *saveIndex = g_strdup(array.StringValue()); - int i = 0; - while (array.SetIndex(i)) { - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _(array.StringValue())); - i++; + UFGroupList list = array.List(); + for (UFGroupList::iterator iter = list.begin(); + iter != list.end(); iter++) { + gtk_combo_box_append_text(GTK_COMBO_BOX(combo), + _((*iter)->StringValue())); } - array.Set(saveIndex); - g_free(saveIndex); _ufarray_object_event(object, uf_value_changed); - gtk_widget_set_sensitive(combo, i > 0); return combo; } diff -Nru ufraw-0.18/uf_gtk.h ufraw-0.19.1/uf_gtk.h --- ufraw-0.18/uf_gtk.h 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/uf_gtk.h 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * uf_gtk.h - gtk compatibility header - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -Nru ufraw-0.18/ufobject.cc ufraw-0.19.1/ufobject.cc --- ufraw-0.18/ufobject.cc 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufobject.cc 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufobject.cc - UFObject C++ implementation and C interface. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -492,8 +492,8 @@ { if (index < 0 || index >= Size()) Throw("index (%d) out of range 0..%d", index, Size() - 1); - int newValue = number / ufnumberarray->Accuracy + 0.5; - int oldValue = ufnumberarray->Array[index] / ufnumberarray->Accuracy + 0.5; + int newValue = floor(number / ufnumberarray->Accuracy + 0.5); + int oldValue = floor(ufnumberarray->Array[index] / ufnumberarray->Accuracy + 0.5); return oldValue == newValue; } @@ -613,12 +613,11 @@ }; typedef std::map _UFGroupMap; typedef std::pair _UFObjectPair; -typedef std::list _UFGroupList; class _UFGroup : public _UFObject { public: _UFGroupMap Map; - _UFGroupList List; + UFGroupList List; UFGroup *const This; bool GroupChanging; // Index and Default Index are only used by UFArray @@ -675,7 +674,7 @@ UFGroup::~UFGroup() { - for (_UFGroupList::iterator iter = ufgroup->List.begin(); + for (UFGroupList::iterator iter = ufgroup->List.begin(); iter != ufgroup->List.end(); iter++) { _UFGROUP_PARENT(*iter) = NULL; delete *iter; @@ -683,7 +682,7 @@ g_free(ufgroup->DefaultIndex); } -static std::string _UFGroup_XML(const UFGroup &group, _UFGroupList &list, +static std::string _UFGroup_XML(const UFGroup &group, UFGroupList &list, const char *indent, const char *attribute) { if (group.IsDefault()) @@ -717,7 +716,7 @@ newIndent[i + 0] = ' '; newIndent[i + 1] = ' '; newIndent[i + 2] = '\0'; - for (_UFGroupList::iterator iter = list.begin(); iter != list.end(); iter++) + for (UFGroupList::iterator iter = list.begin(); iter != list.end(); iter++) xml += (*iter)->XML(newIndent); if (strlen(indent) != 0) xml += (std::string)indent + "\n"; @@ -737,7 +736,7 @@ if (Name() != object.Name()) Throw("Object name mismatch with '%s'", object.Name()); const UFGroup &group = object; - for (_UFGroupList::iterator iter = ufgroup->List.begin(); + for (UFGroupList::iterator iter = ufgroup->List.begin(); iter != ufgroup->List.end(); iter++) { if (group.Has((*iter)->Name())) (*iter)->Set(group[(*iter)->Name()]); @@ -751,7 +750,7 @@ bool UFGroup::IsDefault() const { - for (_UFGroupList::iterator iter = ufgroup->List.begin(); + for (UFGroupList::iterator iter = ufgroup->List.begin(); iter != ufgroup->List.end(); iter++) { if (!(*iter)->IsDefault()) return false; @@ -761,7 +760,7 @@ void UFGroup::SetDefault() { - for (_UFGroupList::iterator iter = ufgroup->List.begin(); + for (UFGroupList::iterator iter = ufgroup->List.begin(); iter != ufgroup->List.end(); iter++) { (*iter)->SetDefault(); } @@ -770,7 +769,7 @@ void UFGroup::Reset() { - for (_UFGroupList::iterator iter = ufgroup->List.begin(); + for (UFGroupList::iterator iter = ufgroup->List.begin(); iter != ufgroup->List.end(); iter++) { (*iter)->Reset(); } @@ -799,6 +798,11 @@ return *ufgroup->Map[name]; } +const UFGroupList UFGroup::List() const +{ + return ufgroup->List; +} + UFGroup &UFGroup::operator<<(UFObject *object) { _UFGroupMap::iterator iter = ufgroup->Map.find(object->Name()); @@ -811,7 +815,7 @@ //_UFGroup *parent = static_cast<_UFGroup *>(object->ufobject->Parent); _UFGroup *parent = static_cast<_UFGroup *>(object->Parent().ufobject); parent->Map.erase(object->Name()); - for (_UFGroupList::iterator iter = parent->List.begin(); + for (UFGroupList::iterator iter = parent->List.begin(); iter != parent->List.end(); iter++) { if (*iter == object) { parent->List.erase(iter); @@ -831,7 +835,7 @@ Throw("index '%s' does not exists", name); UFObject *dropObject = (*iter).second; ufgroup->Map.erase(name); - for (_UFGroupList::iterator iter = ufgroup->List.begin(); + for (UFGroupList::iterator iter = ufgroup->List.begin(); iter != ufgroup->List.end(); iter++) { if (*iter == dropObject) { ufgroup->List.erase(iter); @@ -876,7 +880,7 @@ if (Name() != object.Name()) Throw("Object name mismatch with '%s'", object.Name()); const UFArray &array = object; - for (_UFGroupList::iterator iter = ufgroup->List.begin(); + for (UFGroupList::iterator iter = ufgroup->List.begin(); iter != ufgroup->List.end(); iter++) { if (array.Has((*iter)->StringValue())) (*iter)->Set(array[(*iter)->StringValue()]); @@ -893,7 +897,7 @@ ufgroup->Index = -1; int i = 0; - for (_UFGroupList::iterator iter = ufgroup->List.begin(); + for (UFGroupList::iterator iter = ufgroup->List.begin(); iter != ufgroup->List.end(); iter++, i++) { if (IsEqual((*iter)->StringValue())) { ufgroup->Index = i; @@ -918,12 +922,14 @@ { g_free(ufgroup->DefaultIndex); ufgroup->DefaultIndex = g_strdup(string); + Event(uf_default_changed); } void UFArray::SetDefault() { - SetDefault(ufgroup->String); - UFGroup::SetDefault(); + g_free(ufgroup->DefaultIndex); + ufgroup->DefaultIndex = g_strdup(ufgroup->String); + Event(uf_default_changed); } void UFArray::Reset() @@ -934,7 +940,7 @@ bool UFArray::SetIndex(int index) { - _UFGroupList::iterator iter = ufgroup->List.begin(); + UFGroupList::iterator iter = ufgroup->List.begin(); std::advance(iter, index); if (iter == ufgroup->List.end()) return false; @@ -972,7 +978,7 @@ _UFGroup *parent = static_cast(object)->ufobject->Parent; // We assume that the previous parent was also a UFArray. parent->Map.erase(object->StringValue()); - for (_UFGroupList::iterator iter = parent->List.begin(); + for (UFGroupList::iterator iter = parent->List.begin(); iter != parent->List.end(); iter++) { if (*iter == object) { parent->List.erase(iter); @@ -1064,6 +1070,11 @@ object->SetEventHandle(handle); } + UFBoolean ufobject_is_default(UFObject *object) + { + return object->IsDefault(); + } + void ufobject_set_default(UFObject *object) { object->SetDefault(); diff -Nru ufraw-0.18/ufobject.h ufraw-0.19.1/ufobject.h --- ufraw-0.18/ufobject.h 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufobject.h 2013-03-05 05:40:55.000000000 +0200 @@ -1,8 +1,8 @@ /* * UFRaw - Unidentified Flying Raw converter for digital camera images * - * ufobject.h - UF-Object definitions. - * Copyright 2004-2011 by Udi Fuchs + * ufobject.h - UFObject definitions. + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -308,6 +308,9 @@ bool IsEqual(const char *string) const; }; +/// A list of UFObjects returned by UFGroup or UFArray. +typedef std::list UFGroupList; + /** * UFGroup is a UFObject that contain a group of UFObject elements. This * object is considered the Patent() of these elements. @@ -336,6 +339,8 @@ /// \exception UFException is thrown if an element with the given name /// does not exist. This can be avoided with the use of the Has() method. const UFObject &operator[](UFName name) const; + /// Return a list of all UFObjects in the group. + const UFGroupList List() const; /// Add (append) a UFObject to a UFGroup. If the object belonged to /// another group before, it will be detached from the original group. /// \exception UFException is thrown if UFGroup already contains @@ -439,6 +444,8 @@ void ufobject_set_user_data(UFObject *object, void *user_data); void ufobject_set_changed_event_handle(UFObject *object, UFEventHandle *handle); +/// Return TRUE if object is set to its default value. + UFBoolean ufobject_is_default(UFObject *object); /// Set the current object value to its default value. void ufobject_set_default(UFObject *object); /// Return the numerical value of the object. Returns NaN if object is not a diff -Nru ufraw-0.18/uf_progress.h ufraw-0.19.1/uf_progress.h --- ufraw-0.18/uf_progress.h 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/uf_progress.h 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * uf_progress.h - progress bar header - * Copyright 2009-2011 by Frank van Maarseveen, Udi Fuchs + * Copyright 2009-2013 by Frank van Maarseveen, Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -Nru ufraw-0.18/ufraw.1 ufraw-0.19.1/ufraw.1 --- ufraw-0.18/ufraw.1 2010-02-23 19:56:13.000000000 +0200 +++ ufraw-0.19.1/ufraw.1 2013-03-05 05:44:15.000000000 +0200 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) .\" .\" Standard preamble: .\" ======================================================================== @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "UFRAW 1" -.TH UFRAW 1 "2010-02-23" "UFRAW" "" +.TH UFRAW 1 "2013-03-04" "UFRAW" "" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -176,7 +176,8 @@ Display a brief description of how to use UFRaw and exit. .IP "\-\-silent" 4 .IX Item "--silent" -Do not display any messages during batch conversion. +Do not display any messages during conversion. This option is only +valid with 'ufraw\-batch'. .IP "\-\-conf=" 4 .IX Item "--conf=" Load all parameters from an ID-file. This feature @@ -204,7 +205,7 @@ options. .IP "\-\-temperature=TEMP" 4 .IX Item "--temperature=TEMP" -Manually set the color temperature in Kelvin (2000 \- 7000). +Manually set the color temperature in Kelvin. .IP "\-\-green=GREEN" 4 .IX Item "--green=GREEN" Green color component. Range 0.20 to 2.50. @@ -235,7 +236,7 @@ The default is 'digital'. .IP "\-\-saturation=SAT" 4 .IX Item "--saturation=SAT" -Adjust the color saturation. Range 0.00 to 3.00. Default 1.0, +Adjust the color saturation. Range 0.00 to 8.00. Default 1.0, use 0 for black & white output. .IP "\-\-wavelet\-denoising\-threshold=THRESHOLD" 4 .IX Item "--wavelet-denoising-threshold=THRESHOLD" @@ -386,7 +387,7 @@ .IP "\-\-embedded\-image" 4 .IX Item "--embedded-image" Extract the preview image embedded in the raw file instead of converting -the raw image. +the raw image. This option is only valid with 'ufraw\-batch'. .SH "Conversion Setting Priority" .IX Header "Conversion Setting Priority" Conversion settings are applied in the following priority order: @@ -431,12 +432,3 @@ .IX Header "SEE ALSO" .IP "The \s-1GIMP\s0 homepage: " 4 .IX Item "The GIMP homepage: " -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 15:" 4 -.IX Item "Around line 15:" -You forgot a '=back' before '=head1' -.IP "Around line 223:" 4 -.IX Item "Around line 223:" -\&'=item' outside of any '=over' diff -Nru ufraw-0.18/ufraw-batch.c ufraw-0.19.1/ufraw-batch.c --- ufraw-0.18/ufraw-batch.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw-batch.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw-batch.c - The standalone interface to UFRaw in batch mode. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,7 +28,9 @@ int status; int exitCode = 0; +#if !GLIB_CHECK_VERSION(2,31,0) g_thread_init(NULL); +#endif char *argFile = uf_win32_locale_to_utf8(argv[0]); ufraw_binary = g_path_get_basename(argFile); uf_init_locale(argFile); @@ -71,16 +73,18 @@ continue; } status = ufraw_config(uf, &rc, &conf, &cmd); - if (uf->conf && uf->conf->createID == only_id && cmd.createID != only_id) - uf->conf->createID = also_id; + if (uf->conf && uf->conf->createID == only_id && cmd.createID == -1) + uf->conf->createID = no_id; if (status == UFRAW_ERROR) { exitCode = 1; + ufraw_close_darkframe(uf->conf); ufraw_close(uf); g_free(uf); exit(1); } if (ufraw_load_raw(uf) != UFRAW_SUCCESS) { exitCode = 1; + ufraw_close_darkframe(uf->conf); ufraw_close(uf); g_free(uf); continue; @@ -99,6 +103,7 @@ } else { exitCode = 1; } + ufraw_close_darkframe(uf->conf); ufraw_close(uf); g_free(uf); } @@ -118,10 +123,12 @@ gchar *yChar = g_utf8_strdown(_("y"), -1); /* First letter of the word 'no' for the y/n question */ gchar *nChar = g_utf8_strup(_("n"), -1); - g_printerr(_("%s: overwrite '%s'?"), ufraw_binary, - uf->conf->outputFilename); - g_printerr(" [%s/%s] ", yChar, nChar); - if (fgets(ans, max_name, stdin) == NULL) ans[0] = '\0'; + if (!silentMessenger) { + g_printerr(_("%s: overwrite '%s'?"), ufraw_binary, + uf->conf->outputFilename); + g_printerr(" [%s/%s] ", yChar, nChar); + if (fgets(ans, max_name, stdin) == NULL) ans[0] = '\0'; + } gchar *ans8 = g_utf8_strdown(ans, 1); if (g_utf8_collate(ans8, yChar) != 0) { g_free(yChar); diff -Nru ufraw-0.18/ufraw.c ufraw-0.19.1/ufraw.c --- ufraw-0.18/ufraw.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw.c - The standalone interface to UFRaw. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,7 +28,9 @@ int optInd; int plugin = 0; +#if !GLIB_CHECK_VERSION(2,31,0) g_thread_init(NULL); +#endif gdk_threads_init(); gdk_threads_enter(); char *argFile = uf_win32_locale_to_utf8(argv[0]); @@ -66,11 +68,12 @@ } if (cmd.silent) { ufraw_message(UFRAW_ERROR, - _("--silent option is valid only in batch mode")); + _("The --silent option is only valid with 'ufraw-batch'")); optInd = -1; } if (cmd.embeddedImage) { - ufraw_message(UFRAW_ERROR, _("Extracting embedded image is not supported in interactive mode")); + ufraw_message(UFRAW_ERROR, + _("The --embedded-image option is only valid with 'ufraw-batch'")); optInd = -1; } if (optInd < 0) { @@ -119,6 +122,7 @@ } status = ufraw_config(uf, &rc, &conf, &cmd); if (status == UFRAW_ERROR) { + ufraw_close_darkframe(uf->conf); ufraw_close(uf); g_free(uf); gdk_threads_leave(); diff -Nru ufraw-0.18/ufraw_chooser.c ufraw-0.19.1/ufraw_chooser.c --- ufraw-0.18/ufraw_chooser.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_chooser.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_chooser.c - A very simple file chooser for UFRaw. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -55,7 +55,8 @@ gtk_file_filter_set_name(filter, _("Raw images")); extList = g_strsplit(raw_ext, ",", 100); for (l = extList; *l != NULL; l++) - if (strcmp(*l, "jpg") && strcmp(*l, "tif") && strcmp(*l, "ufraw")) { + if (strcmp(*l, "jpeg") && strcmp(*l, "jpg") && strcmp(*l, "tif") && + strcmp(*l, "tiff") && strcmp(*l, "ufraw")) { snprintf(ext, max_name, "*.%s", *l); gtk_file_filter_add_pattern(filter, ext); gtk_file_filter_add_pattern(filter, cp = g_ascii_strup(ext, -1)); @@ -95,15 +96,19 @@ gtk_file_chooser_add_filter(fileChooser, filter); filter = GTK_FILE_FILTER(gtk_file_filter_new()); - gtk_file_filter_set_name(filter, _("Raw jpg's")); + gtk_file_filter_set_name(filter, _("Raw jpeg's")); + gtk_file_filter_add_pattern(filter, "*.jpeg"); gtk_file_filter_add_pattern(filter, "*.jpg"); + gtk_file_filter_add_pattern(filter, "*.JPEG"); gtk_file_filter_add_pattern(filter, "*.JPG"); gtk_file_chooser_add_filter(fileChooser, filter); filter = GTK_FILE_FILTER(gtk_file_filter_new()); - gtk_file_filter_set_name(filter, _("Raw tif's")); + gtk_file_filter_set_name(filter, _("Raw tiff's")); gtk_file_filter_add_pattern(filter, "*.tif"); + gtk_file_filter_add_pattern(filter, "*.tiff"); gtk_file_filter_add_pattern(filter, "*.TIF"); + gtk_file_filter_add_pattern(filter, "*.TIFF"); gtk_file_chooser_add_filter(fileChooser, filter); filter = GTK_FILE_FILTER(gtk_file_filter_new()); @@ -151,6 +156,7 @@ } int status = ufraw_config(uf, rc, conf, cmd); if (status == UFRAW_ERROR) { + ufraw_close_darkframe(uf->conf); ufraw_close(uf); } else { ufraw_preview(uf, rc, FALSE, NULL); @@ -160,6 +166,9 @@ } g_slist_free(saveList); } + if (rc->darkframe != NULL) + ufraw_close_darkframe(rc); + gtk_widget_destroy(GTK_WIDGET(fileChooser)); ufraw_message(UFRAW_SET_PARENT, NULL); } diff -Nru ufraw-0.18/ufraw_conf.c ufraw-0.19.1/ufraw_conf.c --- ufraw-0.18/ufraw_conf.c 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/ufraw_conf.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_conf.c - handle configuration issues - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -89,6 +89,7 @@ ahd_interpolation, 0, /* interpolation, smoothing */ "", NULL, /* darkframeFile, darkframe */ -1, -1, -1, -1, /* Crop X1,Y1,X2,Y2 */ + 0.0, /* aspectRatio */ -1, /* orientation */ 0, /* rotationAngle */ 0, /* lightness adjustment count */ @@ -131,9 +132,11 @@ "", "", /* curvePath, profilePath */ FALSE, /* silent */ #ifdef WIN32 - "gimp-win-remote gimp-2.4.exe", /* remoteGimpCommand */ -#else + "gimp-win-remote gimp-2.8.exe", /* remoteGimpCommand */ +#elif HAVE_GIMP_2_6 "gimp", /* remoteGimpCommand */ +#else + "gimp-remote", /* remoteGimpCommand */ #endif /* EXIF data */ @@ -187,8 +190,8 @@ } parse_data; static void conf_parse_start(GMarkupParseContext *context, -const gchar *element, const gchar **names, const gchar **values, -gpointer user, GError **error) + const gchar *element, const gchar **names, const gchar **values, + gpointer user, GError **error) { parse_data *data = (parse_data *)user; conf_data *c = data->conf; @@ -200,30 +203,30 @@ if (strcmp(names[i], "Index") == 0) { if (!ufgroup_has(data->group, element)) { ufraw_message(UFRAW_WARNING, - "UFGroup '%s' does not contain UFArray '%s'", - ufobject_name(data->group), element); + "UFGroup '%s' does not contain UFArray '%s'", + ufobject_name(data->group), element); return; } data->group = ufgroup_element(data->group, element); if (!ufobject_set_string(data->group, values[i])) { ufraw_message(UFRAW_WARNING, - "UFArray set '%s' to string value '%s' failed", - ufobject_name(data->group), values[i]); + "UFArray set '%s' to string value '%s' failed", + ufobject_name(data->group), values[i]); } return; } else if (strcmp(names[i], "Label") == 0) { // We assume that only UFArray elements have a label. if (!ufgroup_has(data->group, values[i])) { ufraw_message(UFRAW_WARNING, - "UFArray '%s' does not contain UFObject '%s'", - ufobject_name(data->group), element); + "UFArray '%s' does not contain UFObject '%s'", + ufobject_name(data->group), element); return; } data->group = ufgroup_element(data->group, values[i]); if (strcmp(ufobject_name(data->group), element) != 0) g_set_error(error, data->ufrawQuark, UFRAW_ERROR, - "Expecting '%s' XML element and not '%s' XML element", - ufobject_name(data->group), element); + "Expecting '%s' XML element and not '%s' XML element", + ufobject_name(data->group), element); return; } } @@ -241,18 +244,18 @@ if (!strcmp(element, "UFRaw") && !strcmp(*names, "Version")) { if (int_value == 3) { ufraw_message(UFRAW_WARNING, - _("Trying to convert .ufrawrc from UFRaw-0.4 or earlier")); + _("Trying to convert .ufrawrc from UFRaw-0.4 or earlier")); c->version = int_value; } /* In version 7 temperature calculation has changed */ if (int_value == 5) { ufraw_message(UFRAW_WARNING, - _("Trying to convert .ufrawrc from UFRaw-0.6 or earlier")); + _("Trying to convert .ufrawrc from UFRaw-0.6 or earlier")); c->version = int_value; } if (int_value != c->version) g_set_error(error, data->ufrawQuark, UFRAW_RC_VERSION, - _("UFRaw version in .ufrawrc is not supported")); + _("UFRaw version in .ufrawrc is not supported")); } if (!strcmp(*names, "Current") && int_value != 0) { if (!strcmp("BaseManualCurve", element)) @@ -292,7 +295,7 @@ c->profileIndex[out_profile] = c->profileCount[out_profile]; if (!strcmp("DisplayProfile", element)) c->profileIndex[display_profile] = - c->profileCount[display_profile]; + c->profileCount[display_profile]; } names++; values++; @@ -342,7 +345,7 @@ } static void conf_parse_end(GMarkupParseContext *context, const gchar *element, -gpointer user, GError **error) + gpointer user, GError **error) { parse_data *data = (parse_data *)user; conf_data *c = data->conf; @@ -355,10 +358,10 @@ return; } if (c->BaseCurveCount <= 0 && - (!strcmp("BaseManualCurve", element) || - !strcmp("BaseLinearCurve", element) || - !strcmp("BaseCustomCurve", element) || - !strcmp("BaseCameraCurve", element))) { + (!strcmp("BaseManualCurve", element) || + !strcmp("BaseLinearCurve", element) || + !strcmp("BaseCustomCurve", element) || + !strcmp("BaseCameraCurve", element))) { if (c->BaseCurve[-c->BaseCurveCount].m_numAnchors == 0) c->BaseCurve[-c->BaseCurveCount].m_numAnchors = 2; c->BaseCurveCount = camera_curve + 1; @@ -369,8 +372,8 @@ c->BaseCurveCount = - c->BaseCurveCount + 1; } if (c->curveCount <= 0 && - (!strcmp("ManualCurve", element) || - !strcmp("LinearCurve", element))) { + (!strcmp("ManualCurve", element) || + !strcmp("LinearCurve", element))) { if (c->curve[-c->curveCount].m_numAnchors == 0) c->curve[-c->curveCount].m_numAnchors = 2; c->curveCount = linear_curve + 1; @@ -383,37 +386,37 @@ // For compatibility with ufraw-0.13 or older if (!strcmp("sRGBInputProfile", element)) c->profileCount[in_profile] = - conf_default.profileCount[in_profile]; + conf_default.profileCount[in_profile]; if (!strcmp("NoInputProfile", element)) c->profileCount[in_profile] = - conf_default.profileCount[in_profile]; + conf_default.profileCount[in_profile]; if (!strcmp("MatrixInputProfile", element)) c->profileCount[in_profile] = - conf_default.profileCount[in_profile]; + conf_default.profileCount[in_profile]; if (!strcmp("sRGBOutputProfile", element)) c->profileCount[out_profile] = - conf_default.profileCount[out_profile]; + conf_default.profileCount[out_profile]; if (!strcmp("sRGBEmbeddedOutputProfile", element)) c->profileCount[out_profile] = - conf_default.profileCount[out_profile]; + conf_default.profileCount[out_profile]; if (!strcmp("SystemDisplayProfile", element)) c->profileCount[display_profile] = - conf_default.profileCount[display_profile]; + conf_default.profileCount[display_profile]; if (!strcmp("sRGBDisplayProfile", element)) c->profileCount[display_profile] = - conf_default.profileCount[display_profile]; + conf_default.profileCount[display_profile]; if (c->profileCount[in_profile] <= 0 && strcmp("InputProfile", element) == 0) c->profileCount[in_profile] = -c->profileCount[in_profile] + 1; if (c->profileCount[out_profile] <= 0 && - strcmp("OutputProfile", element) == 0) + strcmp("OutputProfile", element) == 0) c->profileCount[out_profile] = - c->profileCount[out_profile] + 1; if (c->profileCount[display_profile] <= 0 && - strcmp("DisplayProfile", element) == 0) + strcmp("DisplayProfile", element) == 0) c->profileCount[display_profile] = -c->profileCount[display_profile] + 1; } static void conf_parse_text(GMarkupParseContext *context, const gchar *text, -gsize len, gpointer user, GError **error) + gsize len, gpointer user, GError **error) { parse_data *data = (parse_data *)user; conf_data *c = data->conf; @@ -423,7 +426,7 @@ int i; error = error; for (; len > 0 && g_ascii_isspace(*text); len--, text++); - for (; len > 0 && g_ascii_isspace(text[len-1]); len--); + for (; len > 0 && g_ascii_isspace(text[len - 1]); len--); if (len == 0) return; if (len > max_path - 1) len = max_path - 1; strncpy(temp, text, len); @@ -432,8 +435,8 @@ if (strcmp(ufobject_name(data->group), element) == 0) { if (!ufobject_set_string(data->group, text)) ufraw_message(UFRAW_WARNING, - "UFObject set '%s' to string value '%s' failed", - ufobject_name(data->group), text); + "UFObject set '%s' to string value '%s' failed", + ufobject_name(data->group), text); return; } if (c->curveCount <= 0) { @@ -457,18 +460,18 @@ if (!strcmp("AnchorXY", element)) { if (c->curve[i].m_numAnchors == max_anchors) { ufraw_message(UFRAW_WARNING, - _("Too many anchors for curve '%s'"), c->curve[i].name); + _("Too many anchors for curve '%s'"), c->curve[i].name); /* We try to keep the last anchor point */ c->curve[i].m_numAnchors--; } /* If one anchor is supplied then all anchors should be supplied */ sscanf(temp, "%lf %lf", - &c->curve[i].m_anchors[c->curve[i].m_numAnchors].x, - &c->curve[i].m_anchors[c->curve[i].m_numAnchors].y); + &c->curve[i].m_anchors[c->curve[i].m_numAnchors].x, + &c->curve[i].m_anchors[c->curve[i].m_numAnchors].y); c->curve[i].m_anchors[c->curve[i].m_numAnchors].x = - LIM(c->curve[i].m_anchors[c->curve[i].m_numAnchors].x, 0, 1); + LIM(c->curve[i].m_anchors[c->curve[i].m_numAnchors].x, 0, 1); c->curve[i].m_anchors[c->curve[i].m_numAnchors].y = - LIM(c->curve[i].m_anchors[c->curve[i].m_numAnchors].y, 0, 1); + LIM(c->curve[i].m_anchors[c->curve[i].m_numAnchors].y, 0, 1); c->curve[i].m_numAnchors++; } return; @@ -489,12 +492,12 @@ if (!strcmp("AnchorXY", element)) { /* If one anchor is supplied then all anchors should be supplied */ sscanf(temp, "%lf %lf", - &c->BaseCurve[i].m_anchors[c->BaseCurve[i].m_numAnchors].x, - &c->BaseCurve[i].m_anchors[c->BaseCurve[i].m_numAnchors].y); + &c->BaseCurve[i].m_anchors[c->BaseCurve[i].m_numAnchors].x, + &c->BaseCurve[i].m_anchors[c->BaseCurve[i].m_numAnchors].y); c->BaseCurve[i].m_anchors[c->BaseCurve[i].m_numAnchors].x = - LIM(c->BaseCurve[i].m_anchors[c->BaseCurve[i].m_numAnchors].x, 0, 1); + LIM(c->BaseCurve[i].m_anchors[c->BaseCurve[i].m_numAnchors].x, 0, 1); c->BaseCurve[i].m_anchors[c->BaseCurve[i].m_numAnchors].y = - LIM(c->BaseCurve[i].m_anchors[c->BaseCurve[i].m_numAnchors].y, 0, 1); + LIM(c->BaseCurve[i].m_anchors[c->BaseCurve[i].m_numAnchors].y, 0, 1); c->BaseCurve[i].m_numAnchors++; } return; @@ -539,7 +542,7 @@ } if (!strcmp("ProductName", element)) g_strlcpy(c->profile[display_profile][i].productName, temp, - max_name); + max_name); return; } if (!strcmp("BaseCurve", element)) { @@ -574,7 +577,7 @@ c->profileCount[display_profile] = - c->profileCount[display_profile]; i = - c->profileCount[display_profile]; c->profile[display_profile][i] = - conf_default.profile[display_profile][0]; + conf_default.profile[display_profile][0]; g_strlcpy(c->profile[display_profile][i].name, temp, max_name); } if (!strcmp("InputFilename", element)) { @@ -618,7 +621,7 @@ } } else { c->interpolation = conf_find_name(temp, interpolationNames, - conf_default.interpolation); + conf_default.interpolation); if (c->interpolation == obsolete_eahd_interpolation) { c->interpolation = ahd_interpolation; c->smoothing = 3; @@ -662,10 +665,10 @@ if (!strcmp("Saturation", element)) sscanf(temp, "%lf", &c->saturation); if (!strcmp("RestoreDetails", element)) c->restoreDetails = conf_find_name(temp, restoreDetailsNames, - conf_default.restoreDetails); + conf_default.restoreDetails); if (!strcmp("ClipHighlights", element)) c->clipHighlights = conf_find_name(temp, clipHighlightsNames, - conf_default.clipHighlights); + conf_default.clipHighlights); /* For compatibility with UFRaw-0.10 and earlier. */ if (!strcmp("Unclip", element)) { int unclip; @@ -686,50 +689,50 @@ /* Keep compatibility with numbers from ufraw-0.11 */ if (sscanf(temp, "%d", &i) == 1) c->intent[out_profile] = i; else c->intent[out_profile] = conf_find_name(temp, intentNames, - conf_default.intent[out_profile]); + conf_default.intent[out_profile]); } if (strcmp("LightnessAdjustment", element) == 0) { if (c->lightnessAdjustmentCount < max_adjustments) { lightness_adjustment *a = &c->lightnessAdjustment[c->lightnessAdjustmentCount]; sscanf(temp, "%lf %lf %lf", - &a->adjustment, &a->hue, &a->hueWidth); + &a->adjustment, &a->hue, &a->hueWidth); c->lightnessAdjustmentCount++; } else { ufraw_message(UFRAW_SET_ERROR, - _("Too many lightness adjustments in the ID file, ignored\n")); + _("Too many lightness adjustments in the ID file, ignored\n")); } } if (strcmp("GrayscaleMode", element) == 0) { c->grayscaleMode = (sscanf(temp, "%d", &i) == 1) - ? i - : conf_find_name(temp, grayscaleModeNames, - conf_default.grayscaleMode); + ? i + : conf_find_name(temp, grayscaleModeNames, + conf_default.grayscaleMode); } c->grayscaleMixerDefined = 0; if (strcmp("GrayscaleMixer", element) == 0) { sscanf(temp, "%lf %lf %lf", &c->grayscaleMixer[0], - &c->grayscaleMixer[1], &c->grayscaleMixer[2]); + &c->grayscaleMixer[1], &c->grayscaleMixer[2]); c->grayscaleMixerDefined = 1; } if (strcmp("DespeckleWindow", element) == 0) { sscanf(temp, "%lf %lf %lf", &c->despeckleWindow[0], - &c->despeckleWindow[1], &c->despeckleWindow[2]); + &c->despeckleWindow[1], &c->despeckleWindow[2]); } if (strcmp("DespeckleDecay", element) == 0) { sscanf(temp, "%lf %lf %lf", &c->despeckleDecay[0], - &c->despeckleDecay[1], &c->despeckleDecay[2]); + &c->despeckleDecay[1], &c->despeckleDecay[2]); } if (strcmp("DespecklePasses", element) == 0) { sscanf(temp, "%lf %lf %lf", &c->despecklePasses[0], - &c->despecklePasses[1], &c->despecklePasses[2]); + &c->despecklePasses[1], &c->despecklePasses[2]); } /* OutputIntent replaces Intent starting from ufraw-0.12. */ if (strcmp("OutputIntent", element) == 0) c->intent[out_profile] = conf_find_name(temp, intentNames, - conf_default.intent[out_profile]); + conf_default.intent[out_profile]); if (strcmp("DisplayIntent", element) == 0) c->intent[display_profile] = conf_find_name(temp, intentNames, - conf_default.intent[display_profile]); + conf_default.intent[display_profile]); if (!strcmp("Make", element)) g_strlcpy(c->make, temp, max_name); if (!strcmp("Model", element)) g_strlcpy(c->model, temp, max_name); if (!strcmp("Lens", element)) g_strlcpy(c->lensText, temp, max_name); @@ -743,7 +746,8 @@ } if (!strcmp("Orientation", element)) sscanf(temp, "%d", &c->orientation); if (!strcmp("Crop", element)) sscanf(temp, "%d %d %d %d", - &c->CropX1, &c->CropY1, &c->CropX2, &c->CropY2); + &c->CropX1, &c->CropY1, &c->CropX2, &c->CropY2); + if (!strcmp("AspectRatio", element)) sscanf(temp, "%lf", &c->aspectRatio); if (!strcmp("Rotation", element)) sscanf(temp, "%lf", &c->rotationAngle); if (!strcmp("Shrink", element)) sscanf(temp, "%d", &c->shrink); if (!strcmp("Size", element)) sscanf(temp, "%d", &c->size); @@ -813,8 +817,15 @@ user_data.group = ufgroup_element(c->ufobject, ufRawImage); user_data.ufrawQuark = g_quark_from_static_string("UFRaw"); context = g_markup_parse_context_new(&parser, 0, &user_data, NULL); - line[max_path-1] = '\0'; - char *dummy = fgets(line, max_path - 1, in); + line[max_path - 1] = '\0'; + if (fgets(line, max_path - 1, in) == NULL && !feof(in)) { + ufraw_message(UFRAW_ERROR, _("Error reading from file '%s'."), + confFilename); + uf_reset_locale(locale); + g_free(confFilename); + fclose(in); + return UFRAW_ERROR; + } while (!feof(in)) { if (!g_markup_parse_context_parse(context, line, strlen(line), &err)) { ufraw_message(UFRAW_ERROR, _("Error parsing '%s'\n%s"), @@ -829,7 +840,14 @@ g_error_free(err); return UFRAW_ERROR; } - dummy = fgets(line, max_path, in); + if (fgets(line, max_path, in) == NULL && !feof(in)) { + ufraw_message(UFRAW_ERROR, _("Error reading from file '%s'."), + confFilename); + uf_reset_locale(locale); + g_free(confFilename); + fclose(in); + return UFRAW_ERROR; + } } g_markup_parse_context_end_parse(context, NULL); g_markup_parse_context_free(context); @@ -883,12 +901,6 @@ ufraw_message(UFRAW_REPORT, NULL); conf->version = 0; } -#ifdef HAVE_LENSFUN - if (conf->ufobject != NULL) { - UFObject *lensfun = ufgroup_drop(conf->ufobject, ufLensfun); - ufobject_delete(lensfun); - } -#endif } } @@ -1249,6 +1261,8 @@ c->exifSource); buf = uf_markup_buf(buf, "%d %d %d %d\n", c->CropX1, c->CropY1, c->CropX2, c->CropY2); + if (c->aspectRatio != 0.0) + buf = uf_markup_buf(buf, "%lf\n", c->aspectRatio); buf = uf_markup_buf(buf, "%lf\n", c->rotationAngle); char *log = ufraw_message(UFRAW_GET_LOG, NULL); if (log != NULL) { @@ -1421,6 +1435,7 @@ dst->CropY1 = src->CropY1; dst->CropX2 = src->CropX2; dst->CropY2 = src->CropY2; + dst->aspectRatio = src->aspectRatio; dst->rotationAngle = src->rotationAngle; } @@ -1464,6 +1479,7 @@ if (cmd->embeddedImage != -1) conf->embeddedImage = cmd->embeddedImage; if (cmd->rotate != -1) conf->rotate = cmd->rotate; if (cmd->rotationAngle != NULLF) conf->rotationAngle = cmd->rotationAngle; + if (cmd->autoCrop != -1) conf->autoCrop = cmd->autoCrop; if (cmd->CropX1 != -1 || cmd->CropX2 != -1 || cmd->CropY1 != -1 || cmd->CropY2 != -1) conf->autoCrop = disabled_state; @@ -1471,6 +1487,7 @@ if (cmd->CropY1 != -1) conf->CropY1 = cmd->CropY1; if (cmd->CropX2 != -1) conf->CropX2 = cmd->CropX2; if (cmd->CropY2 != -1) conf->CropY2 = cmd->CropY2; + if (cmd->aspectRatio != 0.0) conf->aspectRatio = cmd->aspectRatio; if (cmd->silent != -1) conf->silent = cmd->silent; if (cmd->compression != NULLF) conf->compression = cmd->compression; if (cmd->autoExposure) { @@ -1579,7 +1596,7 @@ N_("The options which are related to the image manipulation are:\n"), "\n", N_("--wb=camera|auto White balance setting.\n"), - N_("--temperature=TEMP Color temperature in Kelvins (2000 - 7000).\n"), + N_("--temperature=TEMP Color temperature in Kelvin.\n"), N_("--green=GREEN Green color normalization.\n"), N_("--base-curve=manual|linear|camera|custom|CURVE\n" " Type of base tone curve to use. CURVE can be any\n" @@ -1638,13 +1655,16 @@ N_("--[no]exif Embed EXIF in output (default embed EXIF).\n"), N_("--[no]zip Enable [disable] TIFF zip compression (default nozip).\n"), N_("--embedded-image Extract the preview image embedded in the raw file\n" - " instead of converting the raw image.\n"), + " instead of converting the raw image. This option\n" + " is only valid with 'ufraw-batch'.\n"), N_("--rotate=camera|ANGLE|no\n" " Rotate image to camera's setting, by ANGLE degrees\n" " clockwise, or do not rotate the image (default camera).\n"), N_("--crop-(left|right|top|bottom)=PIXELS\n" " Crop the output to the given pixel range, relative to the\n" " raw image after rotation but before any scaling.\n"), + N_("--auto-crop Crop the output automatically.\n"), + N_("--aspect-ratio X:Y Set crop area aspect ratio.\n"), #ifdef HAVE_LENSFUN N_("--lensfun=none|auto Do not apply lens correction or try to apply\n" " correction by auto-detecting the lens (default none).\n"), @@ -1654,7 +1674,8 @@ N_("--darkframe=FILE Use FILE for raw darkframe subtraction.\n"), N_("--overwrite Overwrite existing files without asking (default no).\n"), N_("--maximize-window Force window to be maximized.\n"), - N_("--silent Do not display any messages during batch conversion.\n"), + N_("--silent Do not display any messages during conversion. This\n" + " option is only valid with 'ufraw-batch'.\n"), "\n", N_("UFRaw first reads the setting from the resource file $HOME/.ufrawrc.\n" "Then, if an ID file is specified, its setting are read. Next, the setting from\n" @@ -1672,7 +1693,7 @@ "EXIV2 " #ifdef HAVE_EXIV2 - EXV_PACKAGE_VERSION "\n" + "enabled.\n" #else "disabled.\n" #endif @@ -1684,6 +1705,13 @@ "disabled.\n" #endif + "JPEG2000 (libjasper) " +#ifdef HAVE_LIBJASPER + "enabled.\n" +#else + "disabled.\n" +#endif + "TIFF " #ifdef HAVE_LIBTIFF "enabled.\n" @@ -1711,6 +1739,20 @@ #else "disabled.\n" #endif + + "BZIP2 " +#ifdef HAVE_LIBBZ2 + "enabled.\n" +#else + "disabled.\n" +#endif + + "LENSFUN " +#ifdef HAVE_LENSFUN + "enabled.\n" +#else + "disabled.\n" +#endif ""; /* ufraw_process_args returns values: @@ -1771,6 +1813,7 @@ { "crop-top", 1, 0, '2'}, { "crop-right", 1, 0, '3'}, { "crop-bottom", 1, 0, '4'}, + { "aspect-ratio", 1, 0, 'P'}, /* Binary flags that don't have a value are here at the end */ { "zip", 0, 0, 'z'}, { "nozip", 0, 0, 'Z'}, @@ -1784,6 +1827,7 @@ { "help", 0, 0, 'h'}, { "version", 0, 0, 'v'}, { "batch", 0, 0, 'b'}, + { "auto-crop", 0, 0, '0'}, { 0, 0, 0, 0} }; UFObject *tmpImage = ufraw_image_new(); @@ -1808,7 +1852,8 @@ &outTypeName, &cmd->profile[1][0].BitDepth, &rotateName, &createIDName, &outPath, &output, &darkframeFile, &restoreName, &clipName, &conf, - &cmd->CropX1, &cmd->CropY1, &cmd->CropX2, &cmd->CropY2 + &cmd->CropX1, &cmd->CropY1, &cmd->CropX2, &cmd->CropY2, + &cmd->aspectRatio }; cmd->autoExposure = disabled_state; cmd->autoBlack = disabled_state; @@ -1837,6 +1882,8 @@ cmd->CropY1 = -1; cmd->CropX2 = -1; cmd->CropY2 = -1; + cmd->autoCrop = -1; + cmd->aspectRatio = 0.0; cmd->rotate = -1; cmd->smoothing = -1; @@ -1970,8 +2017,27 @@ return 0; case 'b': ufraw_message(UFRAW_ERROR, - _("--batch is obsolete. Use ufraw-batch instead.")); + _("--batch is obsolete. Use 'ufraw-batch' instead.")); return -1; + case '0': + cmd->autoCrop = enabled_state; + break; + case 'P': { + double num = 0.0, denom = 1.0; + locale = uf_set_locale_C(); + if (sscanf(optarg, "%lf:%lf", &num, &denom) < 2 && + sscanf(optarg, "%lf/%lf", &num, &denom) < 2 && + sscanf(optarg, "%lf", &num) == 0) { + ufraw_message(UFRAW_ERROR, + _("'%s' is not a valid value for the --%s option."), + optarg, options[index].name); + uf_reset_locale(locale); + return -1; + } + *(double *)optPointer[index] = num / denom; + uf_reset_locale(locale); + } + break; case '?': /* invalid option. Warning printed by getopt() */ return -1; default: diff -Nru ufraw-0.18/ufraw_delete.c ufraw-0.19.1/ufraw_delete.c --- ufraw-0.18/ufraw_delete.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_delete.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_delete.c - The GUI for choosing what files to delete. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -Nru ufraw-0.18/ufraw_developer.c ufraw-0.19.1/ufraw_developer.c --- ufraw-0.18/ufraw_developer.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_developer.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_developer.c - functions for developing images or more exactly pixels. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -776,11 +776,11 @@ else buf = g_alloca(count * 6); #ifdef _OPENMP -#pragma omp parallel \ + #pragma omp parallel \ if (count > 16) \ - default(none) \ - shared(d, buf, count, pix) \ - private(i, tmppix, c) + default(none) \ + shared(d, buf, count, pix) \ + private(i, tmppix, c) { int chunk = count / omp_get_num_threads() + 1; int offset = chunk * omp_get_thread_num(); @@ -788,7 +788,7 @@ for (i = offset; i < offset + width; i++) { develop_linear(pix + i * 4, tmppix, d); for (c = 0; c < 3; c++) - buf[i*3+c] = d->gammaCurve[tmppix[c]]; + buf[i * 3 + c] = d->gammaCurve[tmppix[c]]; } if (d->colorTransform != NULL) cmsDoTransform(d->colorTransform, @@ -798,7 +798,7 @@ for (i = 0; i < count; i++) { develop_linear(pix + i * 4, tmppix, d); for (c = 0; c < 3; c++) - buf[i*3+c] = d->gammaCurve[tmppix[c]]; + buf[i * 3 + c] = d->gammaCurve[tmppix[c]]; } if (d->colorTransform != NULL) cmsDoTransform(d->colorTransform, buf, buf, count); diff -Nru ufraw-0.18/ufraw_embedded.c ufraw-0.19.1/ufraw_embedded.c --- ufraw-0.18/ufraw_embedded.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_embedded.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_embedded.c - functions to output embedded preview image. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -200,8 +200,8 @@ for (c = 0; c < srcWidth; c++) { nc = c * dstWidth / srcWidth; for (m = 0; m < 3; m++) - uf->thumb.buffer[(nr*dstWidth+nc) * 3 + m] = - uf->thumb.buffer[(r*srcWidth+c) * 3 + m]; + uf->thumb.buffer[(nr * dstWidth + nc) * 3 + m] = + uf->thumb.buffer[(r * srcWidth + c) * 3 + m]; } } } @@ -226,7 +226,7 @@ else tmp = nr * width + nc; for (m = 0; m < 3; m++) { newBuffer[tmp * 3 + m] = - uf->thumb.buffer[(r*dstWidth+c) * 3 + m]; + uf->thumb.buffer[(r * dstWidth + c) * 3 + m]; } } } diff -Nru ufraw-0.18/ufraw_exiv2.cc ufraw-0.19.1/ufraw_exiv2.cc --- ufraw-0.18/ufraw_exiv2.cc 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_exiv2.cc 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_exiv2.cc - read the EXIF data from the RAW file using exiv2. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * Based on a sample program from exiv2 and neftags2jpg. * @@ -73,24 +73,12 @@ /* List of tag names taken from exiv2's printSummary() in actions.cpp */ Exiv2::ExifData::const_iterator pos; /* Read shutter time */ - if ((pos = exifData.findKey(Exiv2::ExifKey("Exif.Photo.ExposureTime"))) - != exifData.end()) { + if ((pos = Exiv2::exposureTime(exifData)) != exifData.end()) { uf_strlcpy_to_utf8(uf->conf->shutterText, max_name, pos, exifData); uf->conf->shutter = pos->toFloat(); - } else if ((pos = exifData.findKey( - Exiv2::ExifKey("Exif.Photo.ShutterSpeedValue"))) - != exifData.end()) { - uf_strlcpy_to_utf8(uf->conf->shutterText, max_name, pos, exifData); - uf->conf->shutter = 1.0 / pos->toFloat(); } /* Read aperture */ - if ((pos = exifData.findKey(Exiv2::ExifKey("Exif.Photo.FNumber"))) - != exifData.end()) { - uf_strlcpy_to_utf8(uf->conf->apertureText, max_name, pos, exifData); - uf->conf->aperture = pos->toFloat(); - } else if ((pos = exifData.findKey( - Exiv2::ExifKey("Exif.Photo.ApertureValue"))) - != exifData.end()) { + if ((pos = Exiv2::fNumber(exifData)) != exifData.end()) { uf_strlcpy_to_utf8(uf->conf->apertureText, max_name, pos, exifData); uf->conf->aperture = pos->toFloat(); } @@ -99,12 +87,7 @@ uf_strlcpy_to_utf8(uf->conf->isoText, max_name, pos, exifData); } /* Read focal length */ - if ((pos = exifData.findKey(Exiv2::ExifKey("Exif.Photo.FocalLength"))) - != exifData.end()) { - uf_strlcpy_to_utf8(uf->conf->focalLenText, max_name, pos, exifData); - uf->conf->focal_len = pos->toFloat(); - } else if ((pos = exifData.findKey(Exiv2::ExifKey( - "Exif.Canon.FocalLength"))) != exifData.end()) { + if ((pos = Exiv2::focalLength(exifData)) != exifData.end()) { uf_strlcpy_to_utf8(uf->conf->focalLenText, max_name, pos, exifData); uf->conf->focal_len = pos->toFloat(); } @@ -124,17 +107,14 @@ uf_strlcpy_to_utf8(uf->conf->flashText, max_name, pos, exifData); } /* Read White Balance Setting */ - if ((pos = exifData.findKey(Exiv2::ExifKey("Exif.Photo.WhiteBalance"))) - != exifData.end()) { + if ((pos = Exiv2::whiteBalance(exifData)) != exifData.end()) { uf_strlcpy_to_utf8(uf->conf->whiteBalanceText, max_name, pos, exifData); } - if ((pos = exifData.findKey(Exiv2::ExifKey("Exif.Image.Make"))) - != exifData.end()) { + if ((pos = Exiv2::make(exifData)) != exifData.end()) { uf_strlcpy_to_utf8(uf->conf->real_make, max_name, pos, exifData); } - if ((pos = exifData.findKey(Exiv2::ExifKey("Exif.Image.Model"))) - != exifData.end()) { + if ((pos = Exiv2::model(exifData)) != exifData.end()) { uf_strlcpy_to_utf8(uf->conf->real_model, max_name, pos, exifData); } @@ -232,6 +212,11 @@ != exifData.end()) exifData.erase(pos); + // DCRaw handles TIFF files as raw if DNGVersion is found. + if ((pos = exifData.findKey(Exiv2::ExifKey("Exif.Image.DNGVersion"))) + != exifData.end()) + exifData.erase(pos); + // DNG private data if ((pos = exifData.findKey(Exiv2::ExifKey("Exif.Image.DNGPrivateData"))) != exifData.end()) @@ -304,8 +289,19 @@ != exifData.end()) { exifData.erase(pos); ufraw_message(UFRAW_SET_LOG, - "buflen %d too big, erasing Exif.Photo.MakerNote\n", + "buflen %d too big, erasing Exif.Photo.MakerNote " + "and related decoded metadata\n", size + sizeof(ExifHeader)); + /* Delete decoded metadata associated with + * Exif.Photo.MakerNote, otherwise erasing it isn't + * effective. */ + for (pos = exifData.begin(); pos != exifData.end();) { + if (!strcmp(pos->ifdName(), "Makernote")) + pos = exifData.erase(pos); + else + pos++; + } + blob.clear(); Exiv2::ExifParser::encode(blob, Exiv2::bigEndian, exifData); size = blob.size(); } @@ -316,6 +312,7 @@ ufraw_message(UFRAW_SET_LOG, "buflen %d too big, erasing Thumbnail\n", size + sizeof(ExifHeader)); + blob.clear(); Exiv2::ExifParser::encode(blob, Exiv2::bigEndian, exifData); size = blob.size(); } diff -Nru ufraw-0.18/ufraw-gimp.c ufraw-0.19.1/ufraw-gimp.c --- ufraw-0.18/ufraw-gimp.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw-gimp.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw-gimp.c - The GIMP plug-in. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * based on the GIMP plug-in by Pawel T. Jochym jochym at ifj edu pl, * @@ -25,14 +25,25 @@ /* Fix some compatibility issues between CinePaint and GIMP */ typedef GimpRunModeType GimpRunMode; #define PLUGIN_MODE 2 +#define DEPTH_TO_BASETYPE(depth) (depth == 3 ? RGB : U16_RGB) +#define DEPTH_TO_IMAGETYPE(depth) (depth == 3 ? RGB_IMAGE : U16_RGB_IMAGE) +#else /* GIMP */ +#if HAVE_GIMP_2_9 +#include +#define PLUGIN_MODE 2 #else +#define PLUGIN_MODE 1 +#endif +#include #include #include #define GIMP_CONST const /* Missing and irrelevant definitions in GIMP */ #define U16_RGB 0 #define U16_RGB_IMAGE 0 -#define PLUGIN_MODE 1 +#define DEPTH_TO_BASETYPE(depth) GIMP_RGB +#define DEPTH_TO_IMAGETYPE(depth) GIMP_RGB_IMAGE +#define DEPTH_TO_PRECISION(depth) (depth == 3 ? GIMP_PRECISION_U8 : GIMP_PRECISION_U16) #endif #include #include @@ -82,7 +93,7 @@ "Udi Fuchs", "Copyright 2003 by Dave Coffin\n" "Copyright 2004 by Pawel Jochym\n" - "Copyright 2004-2011 by Udi Fuchs", + "Copyright 2004-2013 by Udi Fuchs", "ufraw-" VERSION, #ifndef UFRAW_CINEPAINT "raw image", @@ -103,7 +114,7 @@ "Loads thumbnails from digital camera raw files.", "Loads thumbnails from digital camera raw files.", "Udi Fuchs", - "Copyright 2004-2011 by Udi Fuchs", + "Copyright 2004-2013 by Udi Fuchs", "ufraw-" VERSION, NULL, NULL, @@ -146,11 +157,16 @@ conf_data rc; int status; +#if !GLIB_CHECK_VERSION(2,31,0) g_thread_init(NULL); +#endif gdk_threads_init(); gdk_threads_enter(); ufraw_binary = g_path_get_basename(gimp_get_progname()); uf_init_locale(gimp_get_progname()); +#if HAVE_GIMP_2_9 + gegl_init(NULL, NULL); +#endif *nreturn_vals = 1; *return_vals = values; @@ -236,7 +252,7 @@ ufraw_config(uf, &rc, NULL, NULL); sendToGimpMode = (uf->conf->createID == send_id); -#ifndef UFRAW_CINEPAINT +#if !defined(UFRAW_CINEPAINT) && !HAVE_GIMP_2_9 if (loadThumbnail) { uf->conf->size = size; uf->conf->embeddedImage = TRUE; @@ -272,6 +288,7 @@ if (sendToGimpMode) gimp_progress_update(0.3); ufraw_save_gimp_image(uf, NULL); if (sendToGimpMode) gimp_progress_update(1.0); + ufraw_close_darkframe(uf->conf); ufraw_close(uf); /* To make sure we don't delete the raw file by mistake we check * that the file is really an ID file. */ @@ -311,18 +328,29 @@ (void)grayscale; (void)bitDepth; +#if HAVE_GIMP_2_9 + gegl_buffer_set(out, GEGL_RECTANGLE(0, row, width, height), + 0, NULL, pixbuf, + GEGL_AUTO_ROWSTRIDE); +#else gimp_pixel_rgn_set_rect(out, pixbuf, 0, row, width, height); +#endif return UFRAW_SUCCESS; } long ufraw_save_gimp_image(ufraw_data *uf, GtkWidget *widget) { +#if HAVE_GIMP_2_9 + GeglBuffer *buffer; +#else GimpDrawable *drawable; GimpPixelRgn pixel_region; + int tile_height, row, nrows; +#endif gint32 layer; UFRectangle Crop; - int depth, tile_height, row, nrows; + int depth; (void)widget; uf->gimpImage = -1; @@ -339,7 +367,7 @@ if (ufraw_convert_image(uf) != UFRAW_SUCCESS) return UFRAW_ERROR; ufraw_get_scaled_crop(uf, &Crop); -#ifdef UFRAW_CINEPAINT +#if defined(UFRAW_CINEPAINT) || HAVE_GIMP_2_9 if (uf->conf->profile[out_profile] [uf->conf->profileIndex[out_profile]].BitDepth == 16) depth = 6; @@ -349,8 +377,15 @@ depth = 3; #endif } +#if HAVE_GIMP_2_9 + uf->gimpImage = + gimp_image_new_with_precision(Crop.width, Crop.height, + DEPTH_TO_BASETYPE(depth), + DEPTH_TO_PRECISION(depth)); +#else uf->gimpImage = gimp_image_new(Crop.width, Crop.height, - depth == 3 ? GIMP_RGB : U16_RGB); + DEPTH_TO_BASETYPE(depth)); +#endif if (uf->gimpImage == -1) { ufraw_message(UFRAW_ERROR, _("Can't allocate new image.")); return UFRAW_ERROR; @@ -359,28 +394,56 @@ /* Create the "background" layer to hold the image... */ layer = gimp_layer_new(uf->gimpImage, _("Background"), Crop.width, - Crop.height, depth == 3 ? GIMP_RGB_IMAGE : U16_RGB_IMAGE, + Crop.height, DEPTH_TO_IMAGETYPE(depth), 100.0, GIMP_NORMAL_MODE); +#ifdef UFRAW_CINEPAINT gimp_image_add_layer(uf->gimpImage, layer, 0); +#else +#if defined(GIMP_CHECK_VERSION) && GIMP_CHECK_VERSION(2,7,3) + gimp_image_insert_layer(uf->gimpImage, layer, 0, 0); +#else + gimp_image_add_layer(uf->gimpImage, layer, 0); +#endif +#endif /* Get the drawable and set the pixel region for our load... */ +#if HAVE_GIMP_2_9 + buffer = gimp_drawable_get_buffer(layer); +#else drawable = gimp_drawable_get(layer); gimp_pixel_rgn_init(&pixel_region, drawable, 0, 0, drawable->width, drawable->height, TRUE, FALSE); tile_height = gimp_tile_height(); +#endif if (uf->conf->embeddedImage) { +#if HAVE_GIMP_2_9 + gegl_buffer_set(buffer, + GEGL_RECTANGLE(0, 0, Crop.width, Crop.height), + 0, NULL, uf->thumb.buffer, + GEGL_AUTO_ROWSTRIDE); +#else for (row = 0; row < Crop.height; row += tile_height) { nrows = MIN(Crop.height - row, tile_height); gimp_pixel_rgn_set_rect(&pixel_region, uf->thumb.buffer + 3 * row * Crop.width, 0, row, Crop.width, nrows); } +#endif } else { +#if HAVE_GIMP_2_9 + ufraw_write_image_data(uf, buffer, &Crop, depth == 3 ? 8 : 16, 0, + gimp_row_writer); +#else ufraw_write_image_data(uf, &pixel_region, &Crop, depth == 3 ? 8 : 16, 0, gimp_row_writer); +#endif } +#if HAVE_GIMP_2_9 + gegl_buffer_flush(buffer); +#else gimp_drawable_flush(drawable); gimp_drawable_detach(drawable); +#endif if (uf->conf->embeddedImage) return UFRAW_SUCCESS; diff -Nru ufraw-0.18/ufraw.h ufraw-0.19.1/ufraw.h --- ufraw-0.18/ufraw.h 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw.h 2013-03-05 05:40:55.000000000 +0200 @@ -3,7 +3,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw.h - Common definitions for UFRaw. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -85,7 +85,7 @@ UFObject *ufraw_image_new(); #ifdef HAVE_LENSFUN UFObject *ufraw_lensfun_new(); - void ufraw_lensfun_init(UFObject *lensfun); + void ufraw_lensfun_init(UFObject *lensfun, UFBoolean reset); struct lfDatabase *ufraw_lensfun_db(); /* mount/camera/lens database */ const struct lfCamera *ufraw_lensfun_camera(const UFObject *lensfun); void ufraw_lensfun_set_camera(UFObject *lensfun, const struct lfCamera *camera); @@ -220,7 +220,7 @@ * CONF|ID: curve/profile are added to the list from RC. * CONF: inputFilename, outputFilename are ignored. * outputPath can only be specified in CMD or guessed in interactive mode. - * ID: createID==only_id is switched to also_id in case of ufraw-batch. + * ID: createID==only_id is switched to no_id in case of ufraw-batch. * ID: chanMul[] override wb, green, temperature. */ typedef struct { @@ -252,6 +252,7 @@ char darkframeFile[max_path]; struct ufraw_struct *darkframe; int CropX1, CropY1, CropX2, CropY2; + double aspectRatio; int orientation; double rotationAngle; int lightnessAdjustmentCount; @@ -379,6 +380,7 @@ gboolean bufferok); ufraw_image_data *ufraw_convert_image_area(ufraw_data *uf, unsigned saidx, UFRawPhase phase); + void ufraw_close_darkframe(conf_data *uf); void ufraw_close(ufraw_data *uf); void ufraw_flip_orientation(ufraw_data *uf, int flip); void ufraw_flip_image(ufraw_data *uf, int flip); diff -Nru ufraw-0.18/ufraw_icons.c ufraw-0.19.1/ufraw_icons.c --- ufraw-0.18/ufraw_icons.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_icons.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_icons.c - load icons for UFRaw's GUI. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -Nru ufraw-0.18/ufraw_lensfun.cc ufraw-0.19.1/ufraw_lensfun.cc --- ufraw-0.18/ufraw_lensfun.cc 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_lensfun.cc 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_lensfun.cc - define lensfun UFObject settings. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,8 +35,13 @@ static lfDatabase *_LensDB; public: lfCamera Camera; - lfLens Transformation; + // 'Interpolation' represents the lens the user choose from the LensDB. + // Its transformation values are interpolate according to the choice + // of FocalLegth, Aperture and Distance. lfLens Interpolation; + // 'Transformation' include the transformation the user choose from the + // 'Interpolation' lens. + lfLens Transformation; double FocalLengthValue; double ApertureValue; double DistanceValue; @@ -79,12 +84,24 @@ UFString &CameraModel = (*this)[ufCameraModel]; CameraModel.Set(fm); g_free(fm); + // After setting the camera model, we can retry finding the lens. + SetLensInterpolation(); } } void SetLensModel(const lfLens &lens); - void SetInterpolation(const lfLens &lens); + // Set the 'Interpolation' lens from the LensModel. + void SetLensInterpolation(); + // Interpolate the TCA, Vignetting and Distortion models. void Interpolate(); - void Init(); + // Mark settings as manual (not from LensDB). + void Manual() { + char *lens_model = g_strdup_printf("Generic, Crop factor %.4g", + Transformation.CropFactor); + (*this)[ufLensModel].Set(lens_model); + g_free(lens_model); + UFObject::Parent()[ufLensfunAuto].Set("no"); + } + void Init(bool reset); }; static void parse_maker_model(const char *txt, char *make, size_t sz_make, @@ -127,22 +144,18 @@ if (!HasParent()) return UFObject::Event(type); Lensfun &Lensfun = Lensfun::Parent(*this); - Lensfun.UFObject::Parent()[ufLensfunAuto].Set("no"); - char make[200], model[200]; - parse_maker_model(StringValue(), make, sizeof(make), - model, sizeof(model)); - const lfLens **lensList = Lensfun.LensDB()->FindLenses(&Lensfun.Camera, - make, model, LF_SEARCH_LOOSE); - if (lensList == NULL) { - lfLens emptyLens; - Lensfun.SetInterpolation(emptyLens); - return UFObject::Event(type); - } - Lensfun.SetInterpolation(*lensList[0]); + Lensfun.SetLensInterpolation(); Lensfun.Interpolate(); - lf_free(lensList); return UFObject::Event(type); } + void OriginalValueChangedEvent() { + if (!HasParent()) + return; + Lensfun &Lensfun = Lensfun::Parent(*this); + // While loading rc/cmd/conf data, do not reset the auto setting + if (ufraw_image_get_data(this) != NULL) + Lensfun.UFObject::Parent()[ufLensfunAuto].Set("no"); + } }; #define _buffer_size 80 @@ -174,14 +187,26 @@ { public: FocalLength() : UFArray(ufFocalLength) { } - void OriginalValueChangedEvent() { + void Event(UFEventType type) { + if (type == uf_default_changed && Index() == -1) { + // Default value is changed during Init. Reset to this default + // value if no other value was set. + Reset(); + } + if (type != uf_value_changed) + return UFObject::Event(type); + ufraw_data *uf = ufraw_image_get_data(this); + if (uf == NULL) + return UFObject::Event(type); if (!HasParent()) - return; + return UFObject::Event(type); double value; if (sscanf(StringValue(), "%lf", &value) != 1) - return; + return UFObject::Event(type); Lensfun::Parent(*this).FocalLengthValue = value; Lensfun::Parent(*this).Interpolate(); + ufraw_invalidate_layer(uf, ufraw_transform_phase); + return UFObject::Event(type); } void CreatePresets() { if (!HasParent()) @@ -218,14 +243,25 @@ { public: Aperture() : UFArray(ufAperture) { } - void OriginalValueChangedEvent() { + void Event(UFEventType type) { + if (type == uf_default_changed && Index() == -1) { + // Default value is changed during Init. Reset to this default + // value if no other value was set. + Reset(); + } + if (type != uf_value_changed) + return UFObject::Event(type); + ufraw_data *uf = ufraw_image_get_data(this); + if (uf == NULL) + return UFObject::Event(type); if (!HasParent()) - return; + return UFObject::Event(type); double value; if (sscanf(StringValue(), "%lf", &value) != 1) - return; + return UFObject::Event(type); Lensfun::Parent(*this).ApertureValue = value; Lensfun::Parent(*this).Interpolate(); + return UFObject::Event(type); } void CreatePresets() { if (!HasParent()) @@ -261,14 +297,25 @@ { public: Distance() : UFArray(ufDistance) { } - void OriginalValueChangedEvent() { + void Event(UFEventType type) { + if (type == uf_default_changed && Index() == -1) { + // Default value is changed during Init. Reset to this default + // value if no other value was set. + Reset(); + } + if (type != uf_value_changed) + return UFObject::Event(type); + ufraw_data *uf = ufraw_image_get_data(this); + if (uf == NULL) + return UFObject::Event(type); if (!HasParent()) - return; + return UFObject::Event(type); double value; if (sscanf(StringValue(), "%lf", &value) != 1) - return; + return UFObject::Event(type); Lensfun::Parent(*this).DistanceValue = value; Lensfun::Parent(*this).Interpolate(); + return UFObject::Event(type); } void CreatePresets() { Clear(); @@ -300,8 +347,11 @@ void OriginalValueChangedEvent() { if (!HasParent()) return; - lfLens emptyLens; - Lensfun::Parent(*this)[ufLensModel].Reset(); + // While loading rc/cmd/conf data, do not reset other settings + if (ufraw_image_get_data(this) == NULL) + return; + Lensfun &Lensfun = Lensfun::Parent(*this); + Lensfun.Manual(); } }; @@ -361,7 +411,6 @@ lfLensCalibTCA calib; if (!Lensfun.Interpolation.InterpolateTCA( Lensfun.FocalLengthValue, calib)) { - SetIndex(0); return; } SetIndex(calib.Model - LF_TCA_MODEL_NONE); @@ -438,7 +487,6 @@ if (!Lensfun.Interpolation.InterpolateVignetting( Lensfun.FocalLengthValue, Lensfun.ApertureValue, Lensfun.DistanceValue, calib)) { - SetIndex(0); return; } SetIndex(calib.Model - LF_VIGNETTING_MODEL_NONE); @@ -525,7 +573,6 @@ lfLensCalibDistortion calib; if (!Lensfun.Interpolation.InterpolateDistortion( Lensfun.FocalLengthValue, calib)) { - SetIndex(0); return; } SetIndex(calib.Model - LF_DIST_MODEL_NONE); @@ -556,22 +603,42 @@ *this << new UFString("Type", typeName); } } - void OriginalValueChangedEvent() { + void Event(UFEventType type) { + if (type != uf_value_changed) + return UFObject::Event(type); ufraw_data *uf = ufraw_image_get_data(this); if (uf == NULL) - return; + return UFObject::Event(type); Lensfun::Parent(*this).Transformation.Type = lfLensType(Index()); ufraw_invalidate_layer(uf, ufraw_transform_phase); + return UFObject::Event(type); + } + void OriginalValueChangedEvent() { + if (!HasParent()) + return; + // While loading rc/cmd/conf data, do not reset other settings + if (ufraw_image_get_data(this) == NULL) + return; + Lensfun &Lensfun = Lensfun::Parent(*this); + Lensfun.Manual(); } }; extern "C" { UFName ufTargetLensGeometry = "TargetLensGeometry"; } -class TargetLensGeometry : public LensGeometry +class TargetLensGeometry : public UFArray { public: - TargetLensGeometry() : LensGeometry(ufTargetLensGeometry) { } + explicit TargetLensGeometry(UFName name = ufTargetLensGeometry) : + UFArray(name, lfLens::GetLensTypeDesc(LF_UNKNOWN, NULL)) { + for (lfLensType type = LF_UNKNOWN; ; type = lfLensType(type + 1)) { + const char *typeName = lfLens::GetLensTypeDesc(type, NULL); + if (typeName == NULL) + break; // End of loop. + *this << new UFString("Type", typeName); + } + } void OriginalValueChangedEvent() { ufraw_data *uf = ufraw_image_get_data(this); if (uf == NULL) @@ -600,9 +667,39 @@ ; } -void Lensfun::SetInterpolation(const lfLens &lens) +void Lensfun::SetLensInterpolation() { - Interpolation = lens; + char make[200] = "", model[200] = ""; + parse_maker_model((*this)[ufLensModel].StringValue(), make, sizeof(make), + model, sizeof(model)); + double crop_factor = 1.0; + int count = sscanf(model, "Crop factor %lf", &crop_factor); + if ((strcmp(make, "Generic") == 0 && count == 1) || + (strcmp(make, "") == 0 && strcmp(model, "") == 0)) { + lfLens cropLens; + cropLens.SetMaker(make); + cropLens.SetModel(model); + cropLens.CropFactor = crop_factor; + cropLens.MinFocal = 1.0; + cropLens.MaxFocal = 800.0; + UFArray &LensGeometry = (*this)[ufLensGeometry]; + cropLens.Type = lfLensType(LensGeometry.Index()); + Interpolation = cropLens; + } else { + const lfLens **lensList = LensDB()->FindLenses(&Camera, + make, model, LF_SEARCH_LOOSE); + if (lensList == NULL || lensList[0] == NULL) { + lfLens emptyLens; + Interpolation = emptyLens; + } else { + Interpolation = *lensList[0]; + } + if (lensList != NULL) + lf_free(lensList); + } + Transformation.CropFactor = Interpolation.CropFactor; + UFArray &LensGeometry = (*this)[ufLensGeometry]; + LensGeometry.SetIndex(Interpolation.Type); static_cast((*this)[ufFocalLength]).CreatePresets(); static_cast((*this)[ufAperture]).CreatePresets(); static_cast((*this)[ufDistance]).CreatePresets(); @@ -619,7 +716,13 @@ fm = g_strdup_printf("%s, %s", maker, model); else fm = g_strdup_printf("%s", model); - LensModel.Set(fm); + if (LensModel.IsEqual(fm)) { + // Even if the lens has not changed, we still want to triger + // a change event. + LensModel.Event(uf_value_changed); + } else { + LensModel.Set(fm); + } g_free(fm); } } @@ -633,9 +736,11 @@ lfDatabase *Lensfun::_LensDB = NULL; -void Lensfun::Init() +void Lensfun::Init(bool reset) { ufraw_data *uf = ufraw_image_get_data(this); + if (uf == NULL) + return; UFGroup &Image = UFObject::Parent(); /* Set lens and camera from EXIF info, if possible */ @@ -658,7 +763,7 @@ UFArray &Distance = (*this)[ufDistance]; Distance.SetDefault(_StringNumber(buffer, uf->conf->subject_distance)); - if (uf->LoadingID) { + if (!reset) { (*this)[ufTCA].Event(uf_value_changed); (*this)[ufVignetting].Event(uf_value_changed); (*this)[ufDistortion].Event(uf_value_changed); @@ -674,8 +779,14 @@ NULL, uf->conf->lensText, LF_SEARCH_LOOSE); if (!CameraModel.IsEqual("") && lenses != NULL) { SetLensModel(*lenses[0]); + // Changing the lens reset Auto="no". So set it back. LensfunAuto.Set("yes"); lf_free(lenses); + // When loading a configuration file nothing changes, so we + // need to manually trigger the uf_value_changed event. + (*this)[ufTCA].Event(uf_value_changed); + (*this)[ufVignetting].Event(uf_value_changed); + (*this)[ufDistortion].Event(uf_value_changed); return; } } @@ -684,8 +795,14 @@ NULL, "Standard", LF_SEARCH_LOOSE); if (!CameraModel.IsEqual("") && lenses != NULL) { SetLensModel(*lenses[0]); + // Changing the lens reset Auto="no". So set it back. LensfunAuto.Set("yes"); lf_free(lenses); + // When loading a configuration file nothing changes, so we + // need to manually trigger the uf_value_changed event. + (*this)[ufTCA].Event(uf_value_changed); + (*this)[ufVignetting].Event(uf_value_changed); + (*this)[ufDistortion].Event(uf_value_changed); return; } } @@ -697,9 +814,9 @@ extern "C" { - void ufraw_lensfun_init(UFObject *lensfun) + void ufraw_lensfun_init(UFObject *lensfun, UFBoolean reset) { - static_cast(lensfun)->Init(); + static_cast(lensfun)->Init(reset); } void ufraw_convert_prepare_transform(ufraw_data *uf, diff -Nru ufraw-0.18/ufraw_lens_ui.c ufraw-0.19.1/ufraw_lens_ui.c --- ufraw-0.18/ufraw_lens_ui.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_lens_ui.c 2013-03-05 05:40:55.000000000 +0200 @@ -3,7 +3,7 @@ * * ufraw_lens_ui.c - User interface for interaction with lensfun, * a lens defect correction library. - * Copyright 2007-2011 by Andrew Zabolotny, Udi Fuchs + * Copyright 2007-2013 by Andrew Zabolotny, Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -Nru ufraw-0.18/ufraw_message.c ufraw-0.19.1/ufraw_message.c --- ufraw-0.18/ufraw_message.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_message.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_message.c - Error message handling functions - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ uf->message = g_strdup(message); return; } - if (uf->message[strlen(uf->message)-1] == '\n') + if (uf->message[strlen(uf->message) - 1] == '\n') uf->message = g_strconcat(uf->message, message, NULL); else uf->message = g_strconcat(uf->message, "\n", message, NULL); @@ -125,7 +125,7 @@ * Otherwise, the header will be printed only for the first line. */ if (g_strstr_len(message, strlen(message) - 1, "\n") == NULL) g_printerr("%s: ", ufraw_binary); - g_printerr("%s%c", message, message[strlen(message)-1] != '\n' ? '\n' : 0); + g_printerr("%s%c", message, message[strlen(message) - 1] != '\n' ? '\n' : 0); } char *ufraw_message(int code, const char *format, ...) diff -Nru ufraw-0.18/ufraw-mime.xml ufraw-0.19.1/ufraw-mime.xml --- ufraw-0.18/ufraw-mime.xml 2010-02-14 10:47:19.000000000 +0200 +++ ufraw-0.19.1/ufraw-mime.xml 2013-03-05 05:40:55.000000000 +0200 @@ -12,7 +12,7 @@ Digital raw image DCRaw - Digital camera Raw + Digital Camera Raw @@ -106,6 +106,15 @@ + + + + Nikon raw image + NRW + Nikon RaW + + + Olympus raw image @@ -125,6 +134,8 @@ Panasonic raw image + RAW + Panasonic RAW @@ -132,6 +143,18 @@ + + <_comment>Panasonic raw2 image + RW2 + Panasonic RaW format 2 + + + + + + + + @@ -178,9 +201,18 @@ ARW - Alpha Raw format + Alpha RaW Sony raw image + + + + SRW + Samsung RaW + Samsung raw image + + + diff -Nru ufraw-0.18/ufraw.pod ufraw-0.19.1/ufraw.pod --- ufraw-0.18/ufraw.pod 2013-03-09 23:27:39.000000000 +0200 +++ ufraw-0.19.1/ufraw.pod 2013-03-05 05:40:55.000000000 +0200 @@ -57,7 +57,8 @@ =item --silent -Do not display any messages during batch conversion. +Do not display any messages during conversion. This option is only +valid with 'ufraw-batch'. =item --conf= @@ -93,7 +94,7 @@ =item --temperature=TEMP -Manually set the color temperature in Kelvin (2000 - 7000). +Manually set the color temperature in Kelvin. =item --green=GREEN @@ -131,7 +132,7 @@ =item --saturation=SAT -Adjust the color saturation. Range 0.00 to 3.00. Default 1.0, +Adjust the color saturation. Range 0.00 to 8.00. Default 1.0, use 0 for black & white output. =item --wavelet-denoising-threshold=THRESHOLD @@ -311,7 +312,7 @@ =item --embedded-image Extract the preview image embedded in the raw file instead of converting -the raw image. +the raw image. This option is only valid with 'ufraw-batch'. =back diff -Nru ufraw-0.18/ufraw_preview.c ufraw-0.19.1/ufraw_preview.c --- ufraw-0.18/ufraw_preview.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_preview.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_preview.c - GUI for controlling all the image manipulations - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * based on the GIMP plug-in by Pawel T. Jochym jochym at ifj edu pl, * @@ -640,7 +640,7 @@ } /* Redraw the changed areas */ #ifdef _OPENMP -#pragma omp critical + #pragma omp critical { #endif GtkWidget *widget = data->PreviewWidget; @@ -804,11 +804,11 @@ gboolean update = FALSE; #ifdef _OPENMP -#pragma omp master + #pragma omp master #endif update = TRUE; #ifdef _OPENMP -#pragma omp critical(preview_progress) + #pragma omp critical(preview_progress) { #endif if (ticks < 0) { @@ -932,13 +932,17 @@ ufraw_invalidate_layer(data->UF, ufraw_transform_phase); ufraw_get_image_dimensions(data->UF); CFG->CropX1 = (data->UF->rotatedWidth - data->UF->autoCropWidth) / 2; - CFG->CropX2 = (data->UF->rotatedWidth + data->UF->autoCropWidth) / 2; + CFG->CropX2 = CFG->CropX1 + data->UF->autoCropWidth; CFG->CropY1 = (data->UF->rotatedHeight - data->UF->autoCropHeight) / 2; - CFG->CropY2 = (data->UF->rotatedHeight + data->UF->autoCropHeight) / 2; + CFG->CropY2 = CFG->CropY1 + data->UF->autoCropHeight; update_crop_ranges(data, FALSE); CFG->autoCrop = enabled_state; } + // We need to freeze the dialog in case an error message pops up in + // lcms error handler. + data->FreezeDialog = TRUE; ufraw_developer_prepare(data->UF, display_developer); + data->FreezeDialog = FALSE; render_init(data); /* This will trigger the untiled phases if necessary. The progress bar @@ -1014,8 +1018,8 @@ } /* Calculate the curves */ p8 = pix; - guint8 grayCurve[raw_his_size+1][4]; - guint8 pureCurve[raw_his_size+1][4]; + guint8 grayCurve[raw_his_size + 1][4]; + guint8 pureCurve[raw_his_size + 1][4]; for (x = 0; x < raw_his_size + 1; x++) { for (c = 0; c < colors; c++) { /* Value for pixel x of color c in a gray pixel */ @@ -1039,25 +1043,25 @@ for (c = 0, y0 = 0; c < colors; c++) { for (y = 0; y < raw_his[x][c]*hisHeight / raw_his_max; y++) for (cl = 0; cl < 3; cl++) - pixies[(hisHeight-y-y0)*rowstride - + 3*(x+1)+cl] = pen[c][cl]; + pixies[(hisHeight - y - y0)*rowstride + + 3 * (x + 1) + cl] = pen[c][cl]; y0 += y; } /* draw curves on the raw histogram */ for (c = 0; c < colors; c++) { y = grayCurve[x][c]; - y1 = grayCurve[x+1][c]; + y1 = grayCurve[x + 1][c]; for (; y <= y1; y++) for (cl = 0; cl < 3; cl++) - pixies[(hisHeight-y)*rowstride + 3*(x+1)+cl] = pen[c][cl]; + pixies[(hisHeight - y)*rowstride + 3 * (x + 1) + cl] = pen[c][cl]; y1 = pureCurve[x][c]; for (; y < y1; y++) for (cl = 0; cl < 3; cl++) - pixies[(hisHeight-y)*rowstride + 3*(x+1)+cl] = pen[c][cl] / 2; - y1 = pureCurve[x+1][c]; + pixies[(hisHeight - y)*rowstride + 3 * (x + 1) + cl] = pen[c][cl] / 2; + y1 = pureCurve[x + 1][c]; for (; y <= y1; y++) for (cl = 0; cl < 3; cl++) - pixies[(hisHeight-y)*rowstride + 3*(x+1)+cl] = pen[c][cl]; + pixies[(hisHeight - y)*rowstride + 3 * (x + 1) + cl] = pen[c][cl]; } } gtk_widget_queue_draw(data->RawHisto); @@ -1145,9 +1149,9 @@ for (i = 0; i < uf_omp_get_max_threads(); i++) subarea[i] = -1; #ifdef _OPENMP -#pragma omp parallel shared(chosen,data) reduction(||:again) + #pragma omp parallel shared(chosen,data) reduction(||:again) { -#pragma omp critical + #pragma omp critical #endif subarea[uf_omp_get_thread_num()] = choose_subarea(data, &chosen); if (subarea[uf_omp_get_thread_num()] < 0) { @@ -1207,12 +1211,12 @@ live_his[p8[c]][c]++; } if (CFG->histogram == luminosity_histogram) - live_his[(int)(0.3*p8[0] + 0.59 * p8[1] + 0.11 * p8[2])][3]++; + live_his[(int)(0.3 * p8[0] + 0.59 * p8[1] + 0.11 * p8[2])][3]++; if (CFG->histogram == value_histogram) live_his[max][3]++; if (CFG->histogram == saturation_histogram) { if (max == 0) live_his[0][3]++; - else live_his[255*(max-min)/max][3]++; + else live_his[255 * (max - min) / max][3]++; } } int hisHeight = MIN(data->LiveHisto->allocation.height - 2, his_max_height); @@ -1252,22 +1256,22 @@ for (x = 0; x < live_his_size; x++) for (y = 0; y < hisHeight; y++) if (CFG->histogram == r_g_b_histogram) { if (y * live_his_max < live_his[x][0]*hisHeight) - pixies[(hisHeight-y)*rowstride+3*(x+1)+0] = 255; + pixies[(hisHeight - y)*rowstride + 3 * (x + 1) + 0] = 255; else if (y * live_his_max < (live_his[x][0] + live_his[x][1])*hisHeight) - pixies[(hisHeight-y)*rowstride+3*(x+1)+1] = 255; + pixies[(hisHeight - y)*rowstride + 3 * (x + 1) + 1] = 255; else if (y * live_his_max < (live_his[x][0] + live_his[x][1] + live_his[x][2]) *hisHeight) - pixies[(hisHeight-y)*rowstride+3*(x+1)+2] = 255; + pixies[(hisHeight - y)*rowstride + 3 * (x + 1) + 2] = 255; } else { for (c = 0; c < 3; c++) if (CFG->histogram == rgb_histogram) { if (y * live_his_max < live_his[x][c]*hisHeight) - pixies[(hisHeight-y)*rowstride+3*(x+1)+c] = 255; + pixies[(hisHeight - y)*rowstride + 3 * (x + 1) + c] = 255; } else { if (y * live_his_max < live_his[x][3]*hisHeight) - pixies[(hisHeight-y)*rowstride+3*(x+1)+c] = 255; + pixies[(hisHeight - y)*rowstride + 3 * (x + 1) + c] = 255; } } @@ -1289,7 +1293,7 @@ rgb[c] = sqrt(sqr[c] / CropCount - rgb[c] * rgb[c]); color_labels_set(data->DevLabels, rgb); for (c = 0; c < 3; c++) - rgb[c] = 100.0 * live_his[live_his_size-1][c] / CropCount; + rgb[c] = 100.0 * live_his[live_his_size - 1][c] / CropCount; color_labels_set(data->OverLabels, rgb); for (c = 0; c < 3; c++) rgb[c] = 100.0 * live_his[0][c] / CropCount; @@ -1574,9 +1578,17 @@ static void auto_button_toggle(GtkToggleButton *button, gboolean *valuep) { if (gtk_toggle_button_get_active(button)) { + /* the button is inactive most of the time, + clicking on it activates it, but + we immediately deactivate it here + so this function is called again recursively + via callback from gtk_toggle_button_set_active */ *valuep = !*valuep; gtk_toggle_button_set_active(button, FALSE); } + /* if this function is called directly, + the condition above is false and we only + update the button image */ if (*valuep) gtk_button_set_image(GTK_BUTTON(button), gtk_image_new_from_stock( "object-automatic", GTK_ICON_SIZE_BUTTON)); @@ -1647,7 +1659,7 @@ long i = (long)user_data; for (; i < CFG->lightnessAdjustmentCount - 1; i++) { - CFG->lightnessAdjustment[i] = CFG->lightnessAdjustment[i+1]; + CFG->lightnessAdjustment[i] = CFG->lightnessAdjustment[i + 1]; widget_set_hue(data->LightnessHueSelectButton[i], CFG->lightnessAdjustment[i].hue); } @@ -2067,8 +2079,8 @@ CFG->CropY1 = 0; CFG->CropX2 = data->UF->rotatedWidth; CFG->CropY2 = data->UF->rotatedHeight; - data->AspectRatio = ((float)data->UF->rotatedWidth) / - data->UF->rotatedHeight; + CFG->aspectRatio = ((float)data->UF->rotatedWidth) / + data->UF->rotatedHeight; refresh_aspect(data); set_new_aspect(data); @@ -2217,20 +2229,17 @@ static void refresh_aspect(preview_data *data) { - int dy = CFG->CropY2 - CFG->CropY1; - data->AspectRatio = dy ? ((CFG->CropX2 - CFG->CropX1) / (float)dy) : 1.0; - // Look through a predefined list of aspect ratios size_t i; for (i = 0; i < sizeof(predef_aspects) / sizeof(predef_aspects[0]); i++) - if (data->AspectRatio >= predef_aspects[i].val * 0.999 && - data->AspectRatio <= predef_aspects[i].val * 1.001) { + if (CFG->aspectRatio >= predef_aspects[i].val * 0.999 && + CFG->aspectRatio <= predef_aspects[i].val * 1.001) { data->FreezeDialog++; gtk_entry_set_text(data->AspectEntry, predef_aspects[i].text); data->FreezeDialog--; return; } - char *text = g_strdup_printf("%.4g", data->AspectRatio); + char *text = g_strdup_printf("%.4g", CFG->aspectRatio); data->FreezeDialog++; gtk_entry_set_text(data->AspectEntry, text); data->FreezeDialog--; @@ -2258,13 +2267,16 @@ if (!CFG->LockAspect) { update_crop_ranges(data, render); + + int dy = CFG->CropY2 - CFG->CropY1; + CFG->aspectRatio = dy ? ((CFG->CropX2 - CFG->CropX1) / (float)dy) : 1.0; refresh_aspect(data); return; } - if (data->AspectRatio == 0) + if (CFG->aspectRatio == 0) aspect = ((double)data->UF->rotatedWidth) / data->UF->rotatedHeight; else - aspect = data->AspectRatio; + aspect = CFG->aspectRatio; switch (cursor) { case left_cursor: @@ -2387,27 +2399,27 @@ */ dx = CFG->CropX2 - cx; dy = CFG->CropY2 - cy; - if (dx / dy > data->AspectRatio) - dy = dx / data->AspectRatio; + if (dx / dy > CFG->aspectRatio) + dy = dx / CFG->aspectRatio; else - dx = dy * data->AspectRatio; + dx = dy * CFG->aspectRatio; if (dx > cx) { dx = cx; - dy = dx / data->AspectRatio; + dy = dx / CFG->aspectRatio; } if (cx + dx > data->UF->rotatedWidth) { dx = data->UF->rotatedWidth - cx; - dy = dx / data->AspectRatio; + dy = dx / CFG->aspectRatio; } if (dy > cy) { dy = cy; - dx = dy * data->AspectRatio; + dx = dy * CFG->aspectRatio; } if (cy + dy > data->UF->rotatedHeight) { dy = data->UF->rotatedHeight - cy; - dx = dy * data->AspectRatio; + dx = dy * CFG->aspectRatio; } CFG->CropX1 = floor(cx - dx + 0.5); @@ -2452,7 +2464,7 @@ sscanf(text, "%g", &aspect); } if (aspect >= 0.1 && aspect <= 10.0) - data->AspectRatio = aspect; + CFG->aspectRatio = aspect; } set_new_aspect(data); CFG->LockAspect = TRUE; @@ -2517,10 +2529,7 @@ if (data->FreezeDialog) return; if (CFG->darkframe == NULL) return; - ufraw_close(CFG->darkframe); - g_free(CFG->darkframe); - CFG->darkframe = NULL; - CFG->darkframeFile[0] = '\0'; + ufraw_close_darkframe(CFG); set_darkframe(data); (void)unused; @@ -2958,14 +2967,16 @@ if ((int *)valuep == &CFG->CropX1 || (int *)valuep == &CFG->CropX2 || (int *)valuep == &CFG->CropY1 || (int *)valuep == &CFG->CropY2) { - *((int *)valuep) = (int) gtk_adjustment_get_value(adj); - CursorType cursor = left_cursor; - if ((int *)valuep == &CFG->CropX1) cursor = left_cursor; - if ((int *)valuep == &CFG->CropX2) cursor = right_cursor; - if ((int *)valuep == &CFG->CropY1) cursor = top_cursor; - if ((int *)valuep == &CFG->CropY2) cursor = bottom_cursor; - fix_crop_aspect(data, cursor, TRUE); + /* values set by update_crop_ranges are ok and + do not have to be fixed */ if (!data->FreezeDialog) { + *((int *)valuep) = (int) gtk_adjustment_get_value(adj); + CursorType cursor = left_cursor; + if ((int *)valuep == &CFG->CropX1) cursor = left_cursor; + if ((int *)valuep == &CFG->CropX2) cursor = right_cursor; + if ((int *)valuep == &CFG->CropY1) cursor = top_cursor; + if ((int *)valuep == &CFG->CropY2) cursor = bottom_cursor; + fix_crop_aspect(data, cursor, TRUE); CFG->autoCrop = disabled_state; auto_button_toggle(data->AutoCropButton, &CFG->autoCrop); } @@ -3055,9 +3066,10 @@ double newAspect = (double)data->UF->rotatedWidth / data->UF->rotatedHeight; // Allow 1/aspect switch even if aspect is locked. - if (fabs(data->AspectRatio - 1 / newAspect) < 0.0001) { + if (fabs(CFG->aspectRatio - 1 / newAspect) < 0.0001) { CFG->CropX2 = data->UF->rotatedWidth; CFG->CropY2 = data->UF->rotatedHeight; + CFG->aspectRatio = newAspect; refresh_aspect(data); } } else { // Keep full crop @@ -3411,7 +3423,7 @@ else if (CFG->profileIndex[type] > index) CFG->profileIndex[type]--; for (; index < CFG->profileCount[type]; index++) - CFG->profile[type][index] = CFG->profile[type][index+1]; + CFG->profile[type][index] = CFG->profile[type][index + 1]; gtk_combo_box_set_active(data->ProfileCombo[type], CFG->profileIndex[type]); } else if (type == profile_types + base_curve) { @@ -3427,7 +3439,7 @@ if (CFG->BaseCurveIndex == camera_curve && !CFG_cameraCurve) CFG->BaseCurveIndex = linear_curve; for (; index < CFG->BaseCurveCount; index++) - CFG->BaseCurve[index] = CFG->BaseCurve[index+1]; + CFG->BaseCurve[index] = CFG->BaseCurve[index + 1]; if (CFG->BaseCurveIndex > camera_curve && !CFG_cameraCurve) gtk_combo_box_set_active(data->BaseCurveCombo, CFG->BaseCurveIndex - 2); @@ -3444,7 +3456,7 @@ else if (CFG->curveIndex > index) CFG->curveIndex--; for (; index < CFG->curveCount; index++) - CFG->curve[index] = CFG->curve[index+1]; + CFG->curve[index] = CFG->curve[index + 1]; gtk_combo_box_set_active(data->CurveCombo, CFG->curveIndex); curveeditor_widget_set_curve(data->CurveWidget, &CFG->curve[CFG->curveIndex]); @@ -3453,12 +3465,14 @@ gtk_dialog_response(dialog, GTK_RESPONSE_APPLY); } -// Duplicate CFG into RC, except for ufobject which is copied elegantly +// Duplicate CFG into RC, except for transform data, which is reset and +// ufobject which is copied elegantly static void copy_conf_to_rc(preview_data *data) { UFObject *tmp = RC->ufobject; *RC = *data->UF->conf; RC->ufobject = tmp; + conf_copy_transform(RC, &conf_default); UFObject *image = ufgroup_element(RC->ufobject, ufRawImage); ufobject_copy(image, data->UF->conf->ufobject); } @@ -4999,13 +5013,12 @@ gtk_widget_set_tooltip_text(GTK_WIDGET(data->AutoCropButton), _("Auto fit crop area")); auto_button_toggle(data->AutoCropButton, &CFG->autoCrop); - gtk_toggle_button_set_active(data->AutoCropButton, CFG->autoCrop); g_signal_connect(G_OBJECT(data->AutoCropButton), "toggled", G_CALLBACK(auto_button_toggled), &CFG->autoCrop); // Crop reset button: button = reset_button( - _("Reset the crop region"), G_CALLBACK(crop_reset), NULL); + _("Reset the crop area"), G_CALLBACK(crop_reset), NULL); gtk_table_attach(table, button, 5, 6, 1, 2, 0, 0, 0, 0); /* Aspect ratio controls */ @@ -5042,6 +5055,12 @@ lock_aspect(data->LockAspectButton, &CFG->LockAspect); /* Get initial aspect ratio */ + if (CFG->aspectRatio != 0.0) + set_new_aspect(data); + else { + int dy = CFG->CropY2 - CFG->CropY1; + CFG->aspectRatio = dy ? ((CFG->CropX2 - CFG->CropX1) / (float)dy) : 1.0; + } refresh_aspect(data); /* Size/shrink controls */ @@ -5430,7 +5449,6 @@ data->DrawnCropY1 = 0; data->DrawnCropY2 = 99999; - data->AspectRatio = 0.0; data->BlinkTimer = 0; data->DrawCropID = 0; for (i = 0; i < num_buttons; i++) { @@ -5898,6 +5916,8 @@ strcpy(RC->outputFilename, ""); } // UFRAW_RESPONSE_DELETE requires no special action + if (rc->darkframe != data->UF->conf->darkframe) + ufraw_close_darkframe(data->UF->conf); ufraw_close(data->UF); g_free(data->SpotLabels); g_free(data->AvrLabels); diff -Nru ufraw-0.18/ufraw_routines.c ufraw-0.19.1/ufraw_routines.c --- ufraw-0.18/ufraw_routines.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_routines.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_routines.c - general routines - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -165,12 +165,14 @@ } } -const char raw_ext[] = "3fr,arw,bay,bmq,cine,cr2,crw,cs1,dc2,dcr,dng,erf,fff," - "hdr,ia,jpg,k25,kc2,kdc,mdc,mef,mos,mrw,nef,nrw,orf,pef,pxn,qtk,raf," - "raw,rdc,rw2,rwl,sr2,srf,srw,sti,tif,ufraw,x3f"; +const char raw_ext[] = "3fr,ari,arw,cap,cine,cr2,crw,cs1,dc2,dcr,dng,erf,fff," + "hdr,ia,iiq,jpeg,jpg,k25,kc2,kdc,mdc,mef,mos,mrw,nef," + "nrw,orf,pef,pxn,qtk,r3d,raf,raw,rdc,rw2,rwl,sr2,srf," + "srw,sti,tif,tiff,ufraw,x3f"; const char *file_type[] = { ".ppm", ".ppm", ".tif", ".tif", ".jpg", - ".png", ".png", ".embedded.jpg", ".embedded.png", ".fits" + ".png", ".png", ".embedded.jpg", ".embedded.png", + ".fits" }; /* Set locale of LC_NUMERIC to "C" to make sure that printf behaves correctly.*/ @@ -231,7 +233,7 @@ /* Convert between Temperature and RGB. * Base on information from http://www.brucelindbloom.com/ - * The fit for D-illuminant between 4000K and 15000K are from CIE + * The fit for D-illuminant between 4000K and 23000K are from CIE * The generalization to 2000K < T < 4000K and the blackbody fits * are my own and should be taken with a grain of salt. */ @@ -278,7 +280,7 @@ { double Tmax, Tmin, testRGB[3]; Tmin = 2000; - Tmax = 15000; + Tmax = 23000; for (*T = (Tmax + Tmin) / 2; Tmax - Tmin > 0.1; *T = (Tmax + Tmin) / 2) { Temperature_to_RGB(*T, testRGB); if (testRGB[2] / testRGB[0] > RGB[2] / RGB[0]) @@ -342,7 +344,7 @@ char temp[max_path]; error = error; for (; len > 0 && g_ascii_isspace(*text); len--, text++); - for (; len > 0 && g_ascii_isspace(text[len-1]); len--); + for (; len > 0 && g_ascii_isspace(text[len - 1]); len--); if (len == 0) return; if (len > max_path - 1) len = max_path - 1; strncpy(temp, text, len); @@ -407,8 +409,14 @@ } locale = uf_set_locale_C(); context = g_markup_parse_context_new(&parser, 0, cp, NULL); - line[max_path-1] = '\0'; - char *dummy = fgets(line, max_path - 1, in); + line[max_path - 1] = '\0'; + if (fgets(line, max_path - 1, in) == NULL && !feof(in)) { + ufraw_message(UFRAW_ERROR, _("Error reading from file '%s'."), + filename); + uf_reset_locale(locale); + fclose(in); + return UFRAW_ERROR; + } while (!feof(in)) { if (!g_markup_parse_context_parse(context, line, strlen(line), &err)) { @@ -420,7 +428,13 @@ g_error_free(err); return UFRAW_ERROR; } - dummy = fgets(line, max_path, in); + if (fgets(line, max_path, in) == NULL && !feof(in)) { + ufraw_message(UFRAW_ERROR, _("Error reading from file '%s'."), + filename); + uf_reset_locale(locale); + fclose(in); + return UFRAW_ERROR; + } } g_markup_parse_context_end_parse(context, NULL); g_markup_parse_context_free(context); diff -Nru ufraw-0.18/ufraw_saver.c ufraw-0.19.1/ufraw_saver.c --- ufraw-0.18/ufraw_saver.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_saver.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_saver.c - The GUI file saver. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -120,7 +120,7 @@ if (strcmp(uf->conf->remoteGimpCommand, conf_default.remoteGimpCommand) == 0) { /* If the user didn't play with the remoteGimpCommand, - * try to run Gimp-2.6 instead of Gimp-2.4 */ + * try to run Gimp-2.6 instead of Gimp-2.8 */ g_strlcpy(uf->conf->remoteGimpCommand, "gimp-2.6.exe", max_path); commandLine = g_strdup_printf("%s \"%s\"", uf->conf->remoteGimpCommand, fullConfFilename); diff -Nru ufraw-0.18/ufraw_settings.cc ufraw-0.19.1/ufraw_settings.cc --- ufraw-0.18/ufraw_settings.cc 2011-02-20 09:56:56.000000000 +0200 +++ ufraw-0.19.1/ufraw_settings.cc 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_settings.cc - define all UFObject settings. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -198,7 +198,7 @@ class Temperature : public UFNumber { public: - Temperature() : UFNumber(ufTemperature, 2000, 15000, 6500, 0, 50, 200) { } + Temperature() : UFNumber(ufTemperature, 2000, 23000, 6500, 0, 50, 200) { } void OriginalValueChangedEvent() { if (HasParent()) ParentImage(this).SetWB(uf_manual_wb); @@ -225,7 +225,8 @@ { public: ChannelMultipliers() : UFNumberArray(ufChannelMultipliers, 4, - 0.100, 99.000, 1.0, 3, 0.001, 0.001) { }; + 0.010, 99.000, 1.0, 3, 0.001, + 0.001) { }; void Event(UFEventType type) { if (type != uf_value_changed) return UFObject::Event(type); @@ -297,8 +298,8 @@ #ifdef HAVE_LENSFUN if (!Parent().Has(ufLensfun)) return; - if (IsDefault()) - ufraw_lensfun_init(&Parent()[ufLensfun]); + if (IsEqual("yes")) + ufraw_lensfun_init(&Parent()[ufLensfun], TRUE); #endif } }; @@ -356,8 +357,12 @@ if (strcmp(uf->conf->make, raw->make) != 0 || strcmp(uf->conf->model, raw->model) != 0) uf->WBDirty = TRUE; // Re-calculate channel multipliers. + if (uf->LoadingID) + uf->WBDirty = TRUE; // Re-calculate channel multipliers. g_strlcpy(uf->conf->make, raw->make, max_name); g_strlcpy(uf->conf->model, raw->model, max_name); + if (!uf->LoadingID) + uf->WBDirty = TRUE; // Re-calculate channel multipliers. const wb_data *lastPreset = NULL; uf->wb_presets_make_model_match = FALSE; diff -Nru ufraw-0.18/ufraw-setup.iss.in ufraw-0.19.1/ufraw-setup.iss.in --- ufraw-0.18/ufraw-setup.iss.in 2010-03-10 05:28:27.000000000 +0200 +++ ufraw-0.19.1/ufraw-setup.iss.in 2013-03-08 05:34:45.000000000 +0200 @@ -8,8 +8,8 @@ AppPublisherURL=http://ufraw.sourceforge.net/ AppSupportURL=http://ufraw.sourceforge.net/ AppUpdatesURL=http://ufraw.sourceforge.net/ -DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinGimp-2.0_is1,InstallLocation|{pf}\UFRaw} -DefaultGroupName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinGimp-2.0_is1,Inno Setup: Icon Group|UFRaw} +DefaultDirName={pf}\UFRaw +DefaultGroupName=(Default) AllowNoIcons=yes Compression=lzma SolidCompression=yes @@ -25,7 +25,6 @@ [Tasks] Name: "unplug"; Description: "Attempt to delete old versions of the UFRaw plug-in" -; that were installed in the user's folders. This option only deletes ufraw-gimp.exe from the current user folders. You should make sure that there are no other copies of ufraw-gimp.exe in any of the user's folders that wish to use the new version of the UFRaw plug-in." ; GroupDescription: "Delete previous plug-in versions:"; Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}" ; GroupDescription: "{cm:AdditionalIcons}"; @@ -34,16 +33,18 @@ Name: "UFRawAssociation"; Description: "UFRaw ID files"; GroupDescription: "Associate the following file types with UFRaw:" Name: "DNGAssociation"; Description: "DNG - Adobe Digital Negative"; GroupDescription: "Associate the following file types with UFRaw:" Name: "CRWAssociation"; Description: "CRW,CR2 - Canon Raw"; GroupDescription: "Associate the following file types with UFRaw:" -Name: "NEFAssociation"; Description: "NEF - Nikon Electronic Format"; GroupDescription: "Associate the following file types with UFRaw:" +Name: "NEFAssociation"; Description: "NEF,NRW - Nikon Raw"; GroupDescription: "Associate the following file types with UFRaw:" Name: "PEFAssociation"; Description: "PEF - Pentax Electronic Format"; GroupDescription: "Associate the following file types with UFRaw:" Name: "RAFAssociation"; Description: "RAF - Fuji Raw Format"; GroupDescription: "Associate the following file types with UFRaw:" Name: "ORFAssociation"; Description: "ORF - Olympus Raw Format"; GroupDescription: "Associate the following file types with UFRaw:" Name: "MRWAssociation"; Description: "MRW - Minolta Raw"; GroupDescription: "Associate the following file types with UFRaw:" -Name: "ARWAssociation"; Description: "ARW - Sony DSLR Raw"; GroupDescription: "Associate the following file types with UFRaw:" +Name: "ARWAssociation"; Description: "ARW,SRF,SR2 - Sony Raw"; GroupDescription: "Associate the following file types with UFRaw:" +Name: "SRWAssociation"; Description: "SRW - Samsung Raw"; GroupDescription: "Associate the following file types with UFRaw:" [Files] Source: "ufraw.exe"; DestDir: "{app}\bin"; Flags: ignoreversion Source: "ufraw-batch.exe"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "ufraw-gimp.exe"; DestDir: "{app}\lib\gimp\2.0\plug-ins"; Flags: ignoreversion Source: "po\ca.mo"; DestDir: "{app}\lib\locale\ca\LC_MESSAGES\"; DestName: "ufraw.mo"; Flags: ignoreversion Source: "po\cs.mo"; DestDir: "{app}\lib\locale\cs\LC_MESSAGES\"; DestName: "ufraw.mo"; Flags: ignoreversion Source: "po\da.mo"; DestDir: "{app}\lib\locale\da\LC_MESSAGES\"; DestName: "ufraw.mo"; Flags: ignoreversion @@ -62,9 +63,36 @@ Source: "po\sr@latin.mo"; DestDir: "{app}\lib\locale\sr@latin\LC_MESSAGES\"; DestName: "ufraw.mo"; Flags: ignoreversion Source: "po\sv.mo"; DestDir: "{app}\lib\locale\sv\LC_MESSAGES\"; DestName: "ufraw.mo"; Flags: ignoreversion Source: "po\zh_CN.mo"; DestDir: "{app}\lib\locale\zh_CN\LC_MESSAGES\"; DestName: "ufraw.mo"; Flags: ignoreversion -Source: "@DOSPREFIX@\bin\liblcms-1-ufraw.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "po\zh_TW.mo"; DestDir: "{app}\lib\locale\zh_TW\LC_MESSAGES\"; DestName: "ufraw.mo"; Flags: ignoreversion + Source: "@DOSPREFIX@\bin\bzip2.dll"; DestDir: "{app}\bin"; Flags: ignoreversion -Source: "ufraw-gimp.exe"; DestDir: "{app}\lib\gimp\2.0\plug-ins"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\freetype6.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\intl.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\jpeg62.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libatk-1.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libcairo-2.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libexpat-1.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libfontconfig-1.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libgdk_pixbuf-2.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libgdk-win32-2.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libgio-2.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libglib-2.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libgmodule-2.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libgobject-2.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libgthread-2.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libgtk-win32-2.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\liblcms-1.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\liblensfun.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libpango-1.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libpangocairo-1.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libpangoft2-1.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libpangowin32-1.0-0.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libpng14-14.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\libtiff3.dll"; DestDir: "{app}\bin"; Flags: ignoreversion +Source: "@DOSPREFIX@\bin\zlib1.dll"; DestDir: "{app}\bin"; Flags: ignoreversion + +Source: "@DOSPREFIX@\share\lensfun\*.xml"; DestDir: "{app}\share\lensfun"; Flags: ignoreversion +Source: "@DOSPREFIX@\share\locale\*"; DestDir: "{app}\lib\locale\"; Flags: ignoreversion recursesubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] @@ -73,21 +101,20 @@ Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\UFRaw"; Filename: "{app}\bin\ufraw.exe"; Tasks: quicklaunchicon [Registry] -Root: HKLM; SubKey: "Software\Microsoft\Windows\CurrentVersion\App Paths\ufraw.exe"; ValueType: string; ValueName: ""; ValueData: "{app}\bin\ufraw.exe"; -Root: HKLM; SubKey: "Software\Microsoft\Windows\CurrentVersion\App Paths\ufraw.exe"; ValueType: string; ValueName: "Path"; ValueData: "{app}\bin;{reg:HKLM\SOFTWARE\GTK\2.0,DllPath|none}"; -Root: HKLM; SubKey: "Software\Microsoft\Windows\CurrentVersion\App Paths\ufraw-batch.exe"; ValueType: string; ValueName: ""; ValueData: "{app}\bin\ufraw-batch.exe"; -Root: HKLM; SubKey: "Software\Microsoft\Windows\CurrentVersion\App Paths\ufraw-batch.exe"; ValueType: string; ValueName: "Path"; ValueData: "{app}\bin;{reg:HKLM\SOFTWARE\GTK\2.0,DllPath|none}"; - Root: HKCR; Subkey: ".ufraw"; ValueType: string; ValueName: ""; ValueData: "UFRawID"; Flags: uninsdeletevalue; Tasks: UFRAWAssociation Root: HKCR; Subkey: ".dng"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: DNGAssociation Root: HKCR; Subkey: ".crw"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: CRWAssociation Root: HKCR; Subkey: ".cr2"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: CRWAssociation Root: HKCR; Subkey: ".nef"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: NEFAssociation +Root: HKCR; Subkey: ".nrw"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: NEFAssociation Root: HKCR; Subkey: ".pef"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: PEFAssociation Root: HKCR; Subkey: ".raf"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: RAFAssociation Root: HKCR; Subkey: ".orf"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: ORFAssociation Root: HKCR; Subkey: ".mrw"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: MRWAssociation Root: HKCR; Subkey: ".arw"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: ARWAssociation +Root: HKCR; Subkey: ".srf"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: ARWAssociation +Root: HKCR; Subkey: ".sr2"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: ARWAssociation +Root: HKCR; Subkey: ".srw"; ValueType: string; ValueName: ""; ValueData: "UFRaw"; Flags: uninsdeletevalue; Tasks: SRWAssociation Root: HKCR; Subkey: "UFRawID"; ValueType: string; ValueName: ""; ValueData: "UFRawID"; Flags: uninsdeletekey Root: HKCR; Subkey: "UFRawID"; ValueType: string; ValueName: ""; ValueData: "UFRaw ID file"; Flags: uninsdeletevalue @@ -108,7 +135,5 @@ Type: files; Name: {app}\bin\liblcms-1-16-ufraw.dll; [messages] -SelectDirDesc=[name] should be installed in the GIMP directory. Hopefully, the wizard will guess your GIMP directory correctly. -SelectDirLabel3=Setup will install [name] into the following folder. Do not change this folder unless you really know what you are doing. -WelcomeLabel2=%nThis wizard will install [name/ver] on your computer.%n%nYou must install GIMP (at least version 2.4.6) before installing [name]. GIMP can be downloaded from http://gimp-win.sourceforge.net/%n%nIt is recommended that you will not run the GIMP application during this installation. +WelcomeLabel2=%nThis wizard will install [name/ver] on your computer. SelectTasksLabel2=Select the additional tasks you would like to perform while installing UFRaw: diff -Nru ufraw-0.18/ufraw_ufraw.c ufraw-0.19.1/ufraw_ufraw.c --- ufraw-0.18/ufraw_ufraw.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_ufraw.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_ufraw.c - program interface to all the components - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -38,11 +38,12 @@ static void ufraw_convert_image_vignetting(ufraw_data *uf, ufraw_image_data *img, UFRectangle *area); static void ufraw_convert_image_tca(ufraw_data *uf, ufraw_image_data *img, - ufraw_image_data *outimg, UFRectangle *area); + ufraw_image_data *outimg, + UFRectangle *area); void ufraw_prepare_tca(ufraw_data *uf); #endif static void ufraw_image_format(int *colors, int *bytes, ufraw_image_data *img, - const char *formats, const char *caller); + const char *formats, const char *caller); static void ufraw_convert_image_raw(ufraw_data *uf, UFRawPhase phase); static void ufraw_convert_image_first(ufraw_data *uf, UFRawPhase phase); static void ufraw_convert_image_transform(ufraw_data *uf, ufraw_image_data *img, @@ -52,7 +53,8 @@ static void ufraw_convert_prepare_transform_buffer(ufraw_data *uf, ufraw_image_data *img, int width, int height); static void ufraw_convert_reverse_wb(ufraw_data *uf, UFRawPhase phase); -static void ufraw_convert_import_buffer(ufraw_data *uf, UFRawPhase phase, dcraw_image_data *dcimg); +static void ufraw_convert_import_buffer(ufraw_data *uf, UFRawPhase phase, + dcraw_image_data *dcimg); static int make_temporary(char *basefilename, char **tmpfilename) { @@ -281,7 +283,7 @@ if (strcmp(uf->conf->darkframeFile, uf->conf->darkframe->filename) == 0) return UFRAW_SUCCESS; // Otherwise we need to close the previous darkframe - ufraw_close(uf->conf->darkframe); + ufraw_close_darkframe(uf->conf); } ufraw_data *dark = uf->conf->darkframe = ufraw_open(uf->conf->darkframeFile); @@ -293,6 +295,8 @@ } dark->conf = g_new(conf_data, 1); conf_init(dark->conf); + /* initialize ufobject member */ + dark->conf->ufobject = ufraw_image_new(); /* disable all auto settings on darkframe */ dark->conf->autoExposure = disabled_state; dark->conf->autoBlack = disabled_state; @@ -359,6 +363,35 @@ if (uf->conf->CropY1 < 0) uf->conf->CropY1 = 0; if (uf->conf->CropX2 < 0) uf->conf->CropX2 = uf->rotatedWidth; if (uf->conf->CropY2 < 0) uf->conf->CropY2 = uf->rotatedHeight; + + if (uf->conf->aspectRatio <= 0) { + if (uf->conf->autoCrop) + /* preserve the initial aspect ratio - this should be consistent + with ufraw_convert_prepare_transform */ + uf->conf->aspectRatio = ((double)uf->initialWidth) / uf->initialHeight; + else + /* full rotated image / manually entered crop */ + uf->conf->aspectRatio = ((double)uf->conf->CropX2 - uf->conf->CropX1) + / (uf->conf->CropY2 - uf->conf->CropY1); + } else { + /* given aspectRatio */ + int cropWidth = uf->conf->CropX2 - uf->conf->CropX1; + int cropHeight = uf->conf->CropY2 - uf->conf->CropY1; + + if (cropWidth != (int)floor(cropHeight * uf->conf->aspectRatio + 0.5)) { + /* aspectRatio does not match the crop area - shrink the area */ + + if ((double)cropWidth / cropHeight > uf->conf->aspectRatio) { + cropWidth = floor(cropHeight * uf->conf->aspectRatio + 0.5); + uf->conf->CropX1 = (uf->conf->CropX1 + uf->conf->CropX2 - cropWidth) / 2; + uf->conf->CropX2 = uf->conf->CropX1 + cropWidth; + } else { + cropHeight = floor(cropWidth / uf->conf->aspectRatio + 0.5); + uf->conf->CropY1 = (uf->conf->CropY1 + uf->conf->CropY2 - cropHeight) / 2; + uf->conf->CropY2 = uf->conf->CropY1 + cropHeight; + } + } + } } /* Get scaled crop coordinates in final image coordinates */ @@ -433,7 +466,8 @@ if (ufraw_exif_read_input(uf) != UFRAW_SUCCESS) { ufraw_message(UFRAW_SET_LOG, "Error reading EXIF data from %s\n", uf->filename); - } else { + // If exiv2 fails to read the EXIF data, use the EXIF tags read + // by dcraw. g_strlcpy(uf->conf->exifSource, "DCRaw", max_name); uf->conf->iso_speed = raw->iso_speed; g_snprintf(uf->conf->isoText, max_name, "%d", @@ -455,7 +489,16 @@ } ufraw_image_set_data(uf->conf->ufobject, uf); #ifdef HAVE_LENSFUN - ufraw_lensfun_init(ufgroup_element(uf->conf->ufobject, ufLensfun)); + // Do not reset lensfun settings while loading ID. + UFBoolean reset = !uf->LoadingID; + if (conf != NULL && conf->version > 0 && conf->ufobject != NULL) { + UFObject *conf_lensfun_auto = ufgroup_element(conf->ufobject, + ufLensfunAuto); + // Do not reset lensfun settings from conf file. + if (ufstring_is_equal(conf_lensfun_auto, "no")) + reset = FALSE; + } + ufraw_lensfun_init(ufgroup_element(uf->conf->ufobject, ufLensfun), reset); #endif char *absname = uf_file_set_absolute(uf->filename); @@ -498,8 +541,8 @@ /* POSIX.1c version of ctime_r() */ ctime_r(&raw->timestamp, uf->conf->timestampText); #endif - if (uf->conf->timestampText[strlen(uf->conf->timestampText)-1] == '\n') - uf->conf->timestampText[strlen(uf->conf->timestampText)-1] = '\0'; + if (uf->conf->timestampText[strlen(uf->conf->timestampText) - 1] == '\n') + uf->conf->timestampText[strlen(uf->conf->timestampText) - 1] = '\0'; uf->conf->timestamp = raw->timestamp; @@ -680,6 +723,17 @@ return UFRAW_SUCCESS; } +/* Free any darkframe associated with conf */ +void ufraw_close_darkframe(conf_data *conf) +{ + if (conf && conf->darkframe != NULL) { + ufraw_close(conf->darkframe); + g_free(conf->darkframe); + conf->darkframe = NULL; + conf->darkframeFile[0] = '\0'; + } +} + void ufraw_close(ufraw_data *uf) { dcraw_close(uf->raw); @@ -699,10 +753,6 @@ lf_modifier_destroy(uf->TCAmodifier); lf_modifier_destroy(uf->modifier); #endif - if (uf->conf->darkframe != NULL) { - ufraw_close(uf->conf->darkframe); - g_free(uf->conf->darkframe); - } ufobject_delete(uf->conf->ufobject); g_free(uf->conf); ufraw_message_reset(uf); @@ -729,8 +779,7 @@ /* Return the subarea index given some X,Y image coordinates. */ -unsigned ufraw_img_get_subarea_idx( - ufraw_image_data *img, int x, int y) +unsigned ufraw_img_get_subarea_idx(ufraw_image_data *img, int x, int y) { int saw = (img->width + 3) / 4; int sah = (img->height + 7) / 8; @@ -792,6 +841,13 @@ *img = *img2; img2->buffer = NULL; } + if (uf->conf->autoCrop && !uf->LoadingID) { + ufraw_get_image_dimensions(uf); + uf->conf->CropX1 = (uf->rotatedWidth - uf->autoCropWidth) / 2; + uf->conf->CropX2 = uf->conf->CropX1 + uf->autoCropWidth; + uf->conf->CropY1 = (uf->rotatedHeight - uf->autoCropHeight) / 2; + uf->conf->CropY2 = uf->conf->CropY1 + uf->autoCropHeight; + } return UFRAW_SUCCESS; } @@ -849,7 +905,7 @@ gint32 yy = (gint32)srcY; // TODO: better handling of the borders. if (xx < 0 || yy < 0 || xx + 1 >= img->width || yy + 1 >= img->height) { - for (c = 0; c < 3; c++) + for (c = 0; c < uf->colors; c++) cur[c] = 0; continue; } @@ -860,7 +916,7 @@ for (c = 0; c < uf->colors; c++) cur[c] = ((4096 - dy) * ((4096 - dx) * src[0][c] + dx * src[1][c]) + dy * ((4096 - dx) * src[img->width][c] - + (dx) * src[img->width+1][c])) >> 24; + + (dx) * src[img->width + 1][c])) >> 24; } } } @@ -882,7 +938,8 @@ * - use uf->rgbMax (check, must be about 64k) */ static void ufraw_shave_hotpixels(ufraw_data *uf, dcraw_image_type *img, - int width, int height, int colors, unsigned rgbMax) + int width, int height, int colors, + unsigned rgbMax) { int w, h, c, i, count; unsigned delta, t, v, hi; @@ -894,10 +951,10 @@ delta = rgbMax / (uf->conf->hotpixel + 1.0); count = 0; #ifdef _OPENMP -#pragma omp parallel for schedule(static) default(none) \ - shared(uf,img,width,height,colors,rgbMax,delta) \ - reduction(+:count) \ - private(h,p,w,c,t,v,hi,i) + #pragma omp parallel for schedule(static) default(none) \ + shared(uf,img,width,height,colors,rgbMax,delta) \ +reduction(+:count) \ + private(h,p,w,c,t,v,hi,i) #endif for (h = 1; h < height - 1; ++h) { p = img + 1 + h * width; @@ -942,7 +999,7 @@ } static void ufraw_despeckle_line(guint16 *base, int step, int size, int window, - double decay, int colors, int c) + double decay, int colors, int c) { unsigned lum[size]; int i, j, start, end, next, v, cold, hot, coldj, hotj, fix; @@ -1022,7 +1079,7 @@ if (pass >= passes[c]) continue; #ifdef _OPENMP -#pragma omp parallel for default(shared) private(i,base) + #pragma omp parallel for default(shared) private(i,base) #endif for (i = 0; i < img->height; ++i) { base = (guint16 *)img->buffer + i * rowstride; @@ -1030,7 +1087,7 @@ decay[c], colors, c); } #ifdef _OPENMP -#pragma omp parallel for default(shared) private(i,base) + #pragma omp parallel for default(shared) private(i,base) #endif for (i = 0; i < img->width; ++i) { base = (guint16 *)img->buffer + i * depth; @@ -1055,6 +1112,13 @@ static int ufraw_calculate_scale(ufraw_data *uf) { + /* In the first call to ufraw_calculate_scale() the crop coordinates + * are not set. They cannot be set, since uf->rotatedHeight/Width are + * only calculated later in ufraw_convert_prepare_transform_buffer(). + * Therefore, if size > 0, scale = 1 will be returned. + * Since the first call is from ufraw_convert_prepare_first_buffer(), + * this is not a real issue. There should always be a second call to + * this function before the actual buffer allocation. */ dcraw_data *raw = uf->raw; int scale = 1; @@ -1065,8 +1129,8 @@ scale = uf->conf->shrink * MIN(raw->pixel_aspect, 1 / raw->pixel_aspect); } else if (uf->conf->interpolation == half_interpolation) { scale = 2; - /* Wanted size is smaller than raw size (size is after a raw->shrink) - * (assuming there are filters). */ + /* Wanted size is smaller than raw size (size is after a raw->shrink) + * (assuming there are filters). */ } else if (uf->conf->size > 0 && uf->HaveFilters) { int cropHeight = uf->conf->CropY2 - uf->conf->CropY1; int cropWidth = uf->conf->CropX2 - uf->conf->CropX1; @@ -1096,9 +1160,15 @@ scale * MAX(final->height, final->width) / uf->conf->shrink); } if (uf->conf->size > 0) { - int cropHeight = uf->conf->CropY2 - uf->conf->CropY1; - int cropWidth = uf->conf->CropX2 - uf->conf->CropX1; - int cropSize = MAX(cropHeight, cropWidth); + int finalSize = scale * MAX(final->height, final->width); + int cropSize; + if (uf->conf->CropX1 == -1) { + cropSize = finalSize; + } else { + int cropHeight = uf->conf->CropY2 - uf->conf->CropY1; + int cropWidth = uf->conf->CropX2 - uf->conf->CropX1; + cropSize = MAX(cropHeight, cropWidth); + } // cropSize needs to be a integer multiplier of scale cropSize = cropSize / scale * scale; if (uf->conf->size > cropSize) { @@ -1108,7 +1178,6 @@ /* uf->conf->size holds the size of the cropped image. * We need to calculate from it the desired size of * the uncropped image. */ - int finalSize = scale * MAX(final->height, final->width); dcraw_image_resize(final, uf->conf->size * finalSize / cropSize); } } @@ -1168,7 +1237,7 @@ raw->raw.image = rawimage; dcraw_flip_image(&final, uf->conf->orientation); - // The 'out' image contains the predictated image dimensions. + // The 'out' image contains the predicted image dimensions. // We want to be sure that our predictions were correct. if (out->height != final.height) { g_warning("ufraw_convert_image_first: height mismatch %d!=%d", @@ -1202,9 +1271,9 @@ mul[i] = (guint64)0x10000 * 0x10000 / uf->developer->rgbWB[i]; size = img->height * img->width; #ifdef _OPENMP -#pragma omp parallel for schedule(static) default(none) \ - shared(uf,phase,img,mul,size) \ - private(i,p16,c,px) + #pragma omp parallel for schedule(static) default(none) \ + shared(uf,phase,img,mul,size) \ + private(i,p16,c,px) #endif for (i = 0; i < size; ++i) { p16 = (guint16 *)&img->buffer[i * img->depth]; @@ -1220,14 +1289,15 @@ #ifdef HAVE_LENSFUN /* Apply TCA */ static void ufraw_convert_image_tca(ufraw_data *uf, ufraw_image_data *img, - ufraw_image_data *outimg, UFRectangle *area) + ufraw_image_data *outimg, + UFRectangle *area) { if (uf->TCAmodifier == NULL) return; int y; #ifdef _OPENMP -#pragma omp parallel for schedule(static) default(none) \ - shared(uf,img,outimg,area) + #pragma omp parallel for schedule(static) default(none) \ + shared(uf,img,outimg,area) #endif for (y = area->y; y < area->y + area->height; y++) { guint16 *dst = (guint16*)(outimg->buffer + y * outimg->rowstride + @@ -1261,7 +1331,7 @@ dst[c] = ((4096 - dy) * ((4096 - dx) * lf_src[0][c] + dx * lf_src[1][c]) + dy * ((4096 - dx) * lf_src[img->width][c] - + (dx) * lf_src[img->width+1][c])) >> 24; + + (dx) * lf_src[img->width + 1][c])) >> 24; } modcoord -= 2; // Green channels are intact @@ -1272,7 +1342,8 @@ } #endif // HAVE_LENSFUN -static void ufraw_convert_import_buffer(ufraw_data *uf, UFRawPhase phase, dcraw_image_data *dcimg) +static void ufraw_convert_import_buffer(ufraw_data *uf, UFRawPhase phase, + dcraw_image_data *dcimg) { ufraw_image_data *img = &uf->Images[phase]; @@ -1285,7 +1356,7 @@ } static void ufraw_image_init(ufraw_image_data *img, - int width, int height, int bitdepth) + int width, int height, int bitdepth) { if (img->height == height && img->width == width && img->depth == bitdepth && img->buffer != NULL) @@ -1314,9 +1385,15 @@ img->height = img->height * scale / uf->conf->shrink; } if (uf->conf->size > 0) { - int cropHeight = uf->conf->CropY2 - uf->conf->CropY1; - int cropWidth = uf->conf->CropX2 - uf->conf->CropX1; - int cropSize = MAX(cropHeight, cropWidth); + int finalSize = scale * MAX(img->height, img->width); + int cropSize; + if (uf->conf->CropX1 == -1) { + cropSize = finalSize; + } else { + int cropHeight = uf->conf->CropY2 - uf->conf->CropY1; + int cropWidth = uf->conf->CropX2 - uf->conf->CropX1; + cropSize = MAX(cropHeight, cropWidth); + } // cropSize needs to be a integer multiplier of scale cropSize = cropSize / scale * scale; if (uf->conf->size > cropSize) { @@ -1326,7 +1403,6 @@ /* uf->conf->size holds the size of the cropped image. * We need to calculate from it the desired size of * the uncropped image. */ - int finalSize = scale * MAX(img->height, img->width); int mul = uf->conf->size * finalSize / cropSize; int div = MAX(img->height, img->width); img->height = img->height * mul / div; @@ -1337,7 +1413,8 @@ #ifdef HAVE_LENSFUN void ufraw_convert_prepare_transform(ufraw_data *uf, - int width, int height, gboolean reverse, float scale); + int width, int height, gboolean reverse, + float scale); #endif static void ufraw_convert_prepare_transform_buffer(ufraw_data *uf, @@ -1345,6 +1422,12 @@ { const int iWidth = uf->initialWidth; const int iHeight = uf->initialHeight; + + double aspectRatio = uf->conf->aspectRatio; + + if (aspectRatio == 0) + aspectRatio = ((double)iWidth) / iHeight; + #ifdef HAVE_LENSFUN ufraw_convert_prepare_transform(uf, iWidth, iHeight, TRUE, 1.0); if (uf->conf->rotationAngle == 0 && @@ -1364,12 +1447,16 @@ uf->rotatedHeight = iHeight; uf->autoCropWidth = iWidth; uf->autoCropHeight = iHeight; + if ((double)uf->autoCropWidth / uf->autoCropHeight > aspectRatio) + uf->autoCropWidth = floor(uf->autoCropHeight * aspectRatio + 0.5); + else + uf->autoCropHeight = floor(uf->autoCropWidth / aspectRatio + 0.5); + return; } const double sine = sin(uf->conf->rotationAngle * 2 * M_PI / 360); const double cosine = cos(uf->conf->rotationAngle * 2 * M_PI / 360); - const float aspectRatio = (float)(uf->conf->CropX2 - uf->conf->CropX1) / - (uf->conf->CropY2 - uf->conf->CropY1); + const float midX = iWidth / 2.0 - 0.5; const float midY = iHeight / 2.0 - 0.5; #ifdef HAVE_LENSFUN @@ -1416,14 +1503,17 @@ } float scale = sqrt((iWidth - 1) * (iHeight - 1) / area); // Do not allow increasing canvas size by more than a factor of 2 - uf->rotatedWidth = MIN(ceil(2 * maxX) * scale, 2 * iWidth); - uf->rotatedHeight = MIN(ceil(2 * maxY) * scale, 2 * iHeight); - if (minX / minY > aspectRatio) - minX = minY * aspectRatio; - else - minY = minX / aspectRatio; + uf->rotatedWidth = MIN(ceil(2 * maxX + 1.0) * scale, 2 * iWidth); + uf->rotatedHeight = MIN(ceil(2 * maxY + 1.0) * scale, 2 * iHeight); + uf->autoCropWidth = MIN(floor(2 * minX) * scale, 2 * iWidth); uf->autoCropHeight = MIN(floor(2 * minY) * scale, 2 * iHeight); + + if ((double)uf->autoCropWidth / uf->autoCropHeight > aspectRatio) + uf->autoCropWidth = floor(uf->autoCropHeight * aspectRatio + 0.5); + else + uf->autoCropHeight = floor(uf->autoCropWidth / aspectRatio + 0.5); + int newWidth = uf->rotatedWidth * width / iWidth; int newHeight = uf->rotatedHeight * height / iHeight; ufraw_image_init(img, newWidth, newHeight, 8); @@ -1446,8 +1536,8 @@ int width = 0, height = 0; if (phase > ufraw_first_phase) { ufraw_convert_prepare_buffers(uf, phase - 1); - width = uf->Images[phase-1].width; - height = uf->Images[phase-1].height; + width = uf->Images[phase - 1].width; + height = uf->Images[phase - 1].height; } switch (phase) { case ufraw_raw_phase: @@ -1484,7 +1574,7 @@ * constants by variables may turn off some compiler optimizations. */ static void ufraw_image_format(int *colors, int *bytes, ufraw_image_data *img, - const char *formats, const char *caller) + const char *formats, const char *caller) { int b, c; @@ -1517,7 +1607,7 @@ } ufraw_image_data *ufraw_get_image(ufraw_data *uf, UFRawPhase phase, - gboolean bufferok) + gboolean bufferok) { ufraw_convert_prepare_buffers(uf, phase); // Find the closest phase that is actually rendered: @@ -1639,7 +1729,7 @@ } #ifdef _OPENMP -#pragma omp critical + #pragma omp critical #endif // Mark the subarea as valid out->valid |= (1 << saidx); @@ -2186,7 +2276,7 @@ for (c = 0, p = 0; c < 3; c++) p = MAX(p, p16[c]); stop += uf->RawCount * pow(decay, i) / norm; /* Skip adding point if slope is too big (more than 4) */ - if (j > 0 && p - curve->m_anchors[j-1].x * 0x10000 < (i + 1 - j) * 0x04000 / steps) + if (j > 0 && p - curve->m_anchors[j - 1].x * 0x10000 < (i + 1 - j) * 0x04000 / steps) continue; curve->m_anchors[j].x = (double)p / 0x10000; curve->m_anchors[j].y = (double)i / steps; @@ -2199,10 +2289,10 @@ /* The last point can be up to twice the height of a linear * interpolation of the last two points */ if (j > 1) { - curve->m_anchors[j].y = curve->m_anchors[j-1].y + - 2 * (1.0 - curve->m_anchors[j-1].x) * - (curve->m_anchors[j-1].y - curve->m_anchors[j-2].y) / - (curve->m_anchors[j-1].x - curve->m_anchors[j-2].x); + curve->m_anchors[j].y = curve->m_anchors[j - 1].y + + 2 * (1.0 - curve->m_anchors[j - 1].x) * + (curve->m_anchors[j - 1].y - curve->m_anchors[j - 2].y) / + (curve->m_anchors[j - 1].x - curve->m_anchors[j - 2].x); if (curve->m_anchors[j].y > 1.0) curve->m_anchors[j].y = 1.0; } else { curve->m_anchors[j].y = 1.0; diff -Nru ufraw-0.18/ufraw_ui.h ufraw-0.19.1/ufraw_ui.h --- ufraw-0.18/ufraw_ui.h 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_ui.h 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_ui.h - Common definitions for UFRaw's GUI. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -159,7 +159,6 @@ int HisMinHeight; int UnnormalizedOrientation; /* Original aspect ratio (0) or actual aspect ratio */ - float AspectRatio; /* The aspect ratio entry field */ GtkEntry *AspectEntry; /* Output base filename (without the path) */ diff -Nru ufraw-0.18/ufraw_writer.c ufraw-0.19.1/ufraw_writer.c --- ufraw-0.18/ufraw_writer.c 2011-02-20 09:56:15.000000000 +0200 +++ ufraw-0.19.1/ufraw_writer.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_writer.c - functions to output image files in different formats. - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -70,7 +70,7 @@ pixbuf16[i] = g_htons(pixbuf16[i]); } for (i = 0; i < height; i++) { - if ((int)fwrite(pixbuf + i * width*(bitDepth > 8 ? 6 : 3), rowStride, 1, out) < 1) { + if ((int)fwrite(pixbuf + i * width * (bitDepth > 8 ? 6 : 3), rowStride, 1, out) < 1) { ufraw_set_error(uf, _("Error creating file '%s'."), uf->conf->outputFilename); ufraw_set_error(uf, g_strerror(errno)); @@ -214,13 +214,13 @@ for (row0 = 0; row0 < Crop->height; row0 += DEVELOP_BATCH) { progress(PROGRESS_SAVE, DEVELOP_BATCH); #ifdef _OPENMP -#pragma omp parallel for default(shared) private(row) + #pragma omp parallel for default(shared) private(row) #endif for (row = 0; row < DEVELOP_BATCH; row++) { if (row + row0 >= Crop->height) continue; guint8 *rowbuf = &pixbuf8[row * Crop->width * 3 * byteDepth]; - develop(rowbuf, rawImage[(Crop->y+row+row0)*rowStride+Crop->x], + develop(rowbuf, rawImage[(Crop->y + row + row0)*rowStride + Crop->x], uf->developer, bitDepth, Crop->width); if (grayscaleMode) grayscale_buffer(rowbuf, Crop->width, bitDepth); @@ -254,6 +254,13 @@ } } if (uf->conf->createID == only_id) { + if (uf->conf->autoCrop && !uf->LoadingID) { + ufraw_get_image_dimensions(uf); + uf->conf->CropX1 = (uf->rotatedWidth - uf->autoCropWidth) / 2; + uf->conf->CropX2 = uf->conf->CropX1 + uf->autoCropWidth; + uf->conf->CropY1 = (uf->rotatedHeight - uf->autoCropHeight) / 2; + uf->conf->CropY2 = uf->conf->CropY1 + uf->autoCropHeight; + } int status = conf_save(uf->conf, confFilename, NULL); g_free(confFilename); return status; @@ -296,7 +303,13 @@ int status = 0; char *filename = uf_win32_locale_filename_from_utf8(uf->conf->outputFilename); - fits_create_file(&fitsFile, filename, &status); + if (strcmp(filename, "-") != 0) + // Use fits_create_diskfile() to allow more characters in + // filenames. + fits_create_diskfile(&fitsFile, filename, &status); + else + // fits_create_file() can write to stdout. + fits_create_file(&fitsFile, filename, &status); uf_win32_locale_filename_free(filename); if (status) { ufraw_set_error(uf, _("Error creating file '%s'."), @@ -608,11 +621,11 @@ progress(PROGRESS_SAVE, 1); for (i = 0; i < Crop.width; i++) { offset = row * Crop.width + i; - develop_linear(rawImage[(Crop.y+row)*rowStride+Crop.x+i], pixbuf16, + develop_linear(rawImage[(Crop.y + row)*rowStride + Crop.x + i], pixbuf16, uf->developer); int c; for (c = 0; c < 3; c++) { - sum[c] += image[c*dim + offset] = pixbuf16[c]; + sum[c] += image[c * dim + offset] = pixbuf16[c]; max[c] = MAX(pixbuf16[c], max[c]); min[c] = MIN(pixbuf16[c], min[c]); } @@ -812,7 +825,12 @@ *dp++ = '\n'; *dp = '\0'; +#if ((PNG_LIBPNG_VER_MAJOR > 1) || ((PNG_LIBPNG_VER_MAJOR == 1) && \ +(PNG_LIBPNG_VER_MINOR > 2))) && (defined(INT_MAX) && (INT_MAX > 0x7ffffffeL)) + g_snprintf(dp, allocated_length - strlen(text[0].text), "%8u ", length); +#else g_snprintf(dp, allocated_length - strlen(text[0].text), "%8lu ", length); +#endif dp += 8; diff -Nru ufraw-0.18/wb_presets.c ufraw-0.19.1/wb_presets.c --- ufraw-0.18/wb_presets.c 2011-02-19 06:29:33.000000000 +0200 +++ ufraw-0.19.1/wb_presets.c 2013-03-05 05:40:55.000000000 +0200 @@ -2,7 +2,7 @@ * UFRaw - Unidentified Flying Raw converter for digital camera images * * wb_presets.c - White balance preset values for various cameras - * Copyright 2004-2011 by Udi Fuchs + * Copyright 2004-2013 by Udi Fuchs * * Thanks goes for all the people who sent in the preset values * for their cameras. @@ -144,6 +144,14 @@ { "Canon", "PowerShot G11", Flash, 0, { 1.985556, 1, 1.703333, 0 } }, { "Canon", "PowerShot G11", Underwater, 0, { 2.225624, 1, 1.577098, 0 } }, + { "Canon", "PowerShot G12", Daylight, 0, { 1.785877, 1, 2.042141, 0 } }, + { "Canon", "PowerShot G12", Cloudy, 0, { 1.804323, 1, 2.021615, 0 } }, + { "Canon", "PowerShot G12", Tungsten, 0, { 1.310127, 1, 3.170886, 0 } }, + { "Canon", "PowerShot G12", Fluorescent, 0, { 1.771139, 1, 2.064262, 0 } }, + { "Canon", "PowerShot G12", FluorescentHigh, 0, { 1.806122, 1, 2.032880, 0 } }, + { "Canon", "PowerShot G12", Flash, 0, { 2.102157, 1, 1.706016, 0 } }, + { "Canon", "PowerShot G12", Underwater, 0, { 1.807650, 1, 2.112568, 0 } }, + /* Canon PowerShot S3 IS does not support native WB presets. These are made as custom WB presets. */ { "Canon", "PowerShot S3 IS", Daylight, 0, { 1.627271, 1, 1.823491, 0 } }, @@ -196,6 +204,22 @@ { "Canon", "PowerShot S90", Flash, 0, { 2.045784, 1, 1.671692, 0 } }, { "Canon", "PowerShot S90", Underwater, 0, { 2.022297, 1, 1.830546, 0 } }, + { "Canon", "PowerShot S95", Daylight, 0, { 1.6182, 1, 2.1430, 0 } }, + { "Canon", "PowerShot S95", Cloudy, 0, { 1.6920, 1, 2.0179, 0 } }, + { "Canon", "PowerShot S95", Tungsten, 0, { 1.2314, 1, 3.1015, 0 } }, + { "Canon", "PowerShot S95", Fluorescent, 0, { 1.6593, 1, 2.0940, 0 } }, + { "Canon", "PowerShot S95", FluorescentHigh, 0, { 1.7272, 1, 1.9811, 0 } }, + { "Canon", "PowerShot S95", Flash, 0, { 1.9955, 1, 1.7768, 0 } }, + { "Canon", "PowerShot S95", Underwater, 0, { 1.7607, 1, 2.1224, 0 } }, + + { "Canon", "PowerShot S100", Daylight, 0, { 2.077707, 1, 2.551592, 0 } }, + { "Canon", "PowerShot S100", Cloudy, 0, { 2.276402, 1, 2.393742, 0 } }, + { "Canon", "PowerShot S100", Tungsten, 0, { 1.267936, 1, 4.224012, 0 } }, + { "Canon", "PowerShot S100", Fluorescent, 0, { 1.815115, 1, 3.093117, 0 } }, + { "Canon", "PowerShot S100", FluorescentHigh, 0, { 2.398148, 1, 2.374339, 0 } }, + { "Canon", "PowerShot S100", Flash, 0, { 2.615783, 1, 2.001294, 0 } }, + { "Canon", "PowerShot S100", Underwater, 0, { 2.248391, 1, 2.338481, 0 } }, + { "Canon", "PowerShot Pro1", Daylight, 0, { 1.829238, 1, 1.571253, 0 } }, { "Canon", "PowerShot Pro1", Cloudy, 0, { 1.194139, 1, 2.755800, 0 } }, { "Canon", "PowerShot Pro1", Tungsten, 0, { 1.701416, 1, 2.218790, 0 } }, @@ -339,25 +363,247 @@ { "Canon", "EOS 5D Mark II", Flash, 8, { 2.653320, 1, 1.339844, 0 } }, { "Canon", "EOS 5D Mark II", Flash, 9, { 2.680664, 1, 1.321289, 0 } }, + /* Canon EOS 5D Mark III Firmware Version 1.1.3 */ + /* Fine-tuning is the camera's Amber-Blue bracketing. */ + { "Canon", "EOS 5D Mark III", Daylight, -9, { 1.784180, 1, 1.907227, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, -8, { 1.805664, 1, 1.878906, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, -7, { 1.828125, 1, 1.848633, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, -6, { 1.855469, 1, 1.818359, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, -5, { 1.882813, 1, 1.790039, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, -4, { 1.910156, 1, 1.759766, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, -3, { 1.931641, 1, 1.726563, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, -2, { 1.958008, 1, 1.695313, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, -1, { 1.980469, 1, 1.665039, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, 0, { 2.007813, 1, 1.630859, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, 1, { 2.036133, 1, 1.607422, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, 2, { 2.064453, 1, 1.583008, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, 3, { 2.093750, 1, 1.556641, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, 4, { 2.124023, 1, 1.533203, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, 5, { 2.160156, 1, 1.507813, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, 6, { 2.183594, 1, 1.486328, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, 7, { 2.211914, 1, 1.462891, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, 8, { 2.240234, 1, 1.440430, 0 } }, + { "Canon", "EOS 5D Mark III", Daylight, 9, { 2.275391, 1, 1.416016, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, -9, { 2.032227, 1, 1.610352, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, -8, { 2.060547, 1, 1.584961, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, -7, { 2.089844, 1, 1.558594, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, -6, { 2.120117, 1, 1.535156, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, -5, { 2.156250, 1, 1.510742, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, -4, { 2.183594, 1, 1.488281, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, -3, { 2.211914, 1, 1.464844, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, -2, { 2.240234, 1, 1.442383, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, -1, { 2.270508, 1, 1.417969, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, 0, { 2.306641, 1, 1.393555, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, 1, { 2.337891, 1, 1.374023, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, 2, { 2.370117, 1, 1.352539, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, 3, { 2.403320, 1, 1.332031, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, 4, { 2.444336, 1, 1.307617, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, 5, { 2.479492, 1, 1.286133, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, 6, { 2.509766, 1, 1.267578, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, 7, { 2.541016, 1, 1.246094, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, 8, { 2.579102, 1, 1.224609, 0 } }, + { "Canon", "EOS 5D Mark III", Shade, 9, { 2.612305, 1, 1.203125, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, -9, { 1.914063, 1, 1.753906, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, -8, { 1.935547, 1, 1.723633, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, -7, { 1.958008, 1, 1.692383, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, -6, { 1.984375, 1, 1.659180, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, -5, { 2.011719, 1, 1.627930, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, -4, { 2.040039, 1, 1.605469, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, -3, { 2.068359, 1, 1.578125, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, -2, { 2.098633, 1, 1.553711, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, -1, { 2.128906, 1, 1.528320, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, 0, { 2.160156, 1, 1.503906, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, 1, { 2.188477, 1, 1.484375, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, 2, { 2.216797, 1, 1.460938, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, 3, { 2.246094, 1, 1.436523, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, 4, { 2.280273, 1, 1.412109, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, 5, { 2.316406, 1, 1.389648, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, 6, { 2.342773, 1, 1.369141, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, 7, { 2.375977, 1, 1.347656, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, 8, { 2.415039, 1, 1.326172, 0 } }, + { "Canon", "EOS 5D Mark III", Cloudy, 9, { 2.456055, 1, 1.302734, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, -9, { 1.283203, 1, 2.782227, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, -8, { 1.297852, 1, 2.752930, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, -7, { 1.314453, 1, 2.723633, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, -6, { 1.333008, 1, 2.694336, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, -5, { 1.350586, 1, 2.666992, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, -4, { 1.371094, 1, 2.632813, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, -3, { 1.387695, 1, 2.579102, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, -2, { 1.404297, 1, 2.528320, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, -1, { 1.423828, 1, 2.479492, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, 0, { 1.442383, 1, 2.426758, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, 1, { 1.460938, 1, 2.392578, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, 2, { 1.479492, 1, 2.354492, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, 3, { 1.501953, 1, 2.316406, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, 4, { 1.523438, 1, 2.280273, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, 5, { 1.546875, 1, 2.240234, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, 6, { 1.568359, 1, 2.207031, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, 7, { 1.587891, 1, 2.169922, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, 8, { 1.610352, 1, 2.133789, 0 } }, + { "Canon", "EOS 5D Mark III", Tungsten, 9, { 1.632813, 1, 2.098633, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, -9, { 1.551758, 1, 2.702148, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, -8, { 1.573242, 1, 2.673828, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, -7, { 1.592773, 1, 2.645508, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, -6, { 1.615234, 1, 2.592773, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, -5, { 1.638672, 1, 2.541016, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, -4, { 1.662109, 1, 2.491211, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, -3, { 1.684570, 1, 2.438477, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, -2, { 1.709961, 1, 2.398438, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, -1, { 1.732422, 1, 2.365234, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, 0, { 1.759766, 1, 2.322266, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, 1, { 1.787109, 1, 2.286133, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, 2, { 1.809570, 1, 2.250977, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, 3, { 1.832031, 1, 2.211914, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, 4, { 1.858398, 1, 2.178711, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, 5, { 1.885742, 1, 2.142578, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, 6, { 1.914063, 1, 2.107422, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, 7, { 1.935547, 1, 2.068359, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, 8, { 1.961914, 1, 2.040039, 0 } }, + { "Canon", "EOS 5D Mark III", WhiteFluorescent, 9, { 1.988281, 1, 2.007813, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, -9, { 1.976563, 1, 1.717773, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, -8, { 2.003906, 1, 1.686523, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, -7, { 2.032227, 1, 1.654297, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, -6, { 2.060547, 1, 1.623047, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, -5, { 2.089844, 1, 1.599609, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, -4, { 2.120117, 1, 1.573242, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, -3, { 2.151367, 1, 1.548828, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, -2, { 2.178711, 1, 1.523438, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, -1, { 2.207031, 1, 1.501953, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, 0, { 2.235352, 1, 1.477539, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, 1, { 2.270508, 1, 1.457031, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, 2, { 2.306641, 1, 1.432617, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, 3, { 2.337891, 1, 1.408203, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, 4, { 2.370117, 1, 1.385742, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, 5, { 2.403320, 1, 1.365234, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, 6, { 2.444336, 1, 1.343750, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, 7, { 2.479492, 1, 1.321289, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, 8, { 2.509766, 1, 1.297852, 0 } }, + { "Canon", "EOS 5D Mark III", Flash, 9, { 2.541016, 1, 1.278320, 0 } }, + + /* Canon EOS 6D Firmware Version 1.0.9 */ + { "Canon", "EOS 6D", Daylight, 0, { 1.976562, 1, 1.635742, 0 } }, + { "Canon", "EOS 6D", Shade, 0, { 2.265625, 1, 1.371094, 0 } }, + { "Canon", "EOS 6D", Cloudy, 0, { 2.128906, 1, 1.497070, 0 } }, + { "Canon", "EOS 6D", Tungsten, 0, { 1.412109, 1, 2.473633, 0 } }, + { "Canon", "EOS 6D", Fluorescent, 0, { 1.726562, 1, 2.337891, 0 } }, + { "Canon", "EOS 6D", Flash, 0, { 2.192383, 1, 1.458984, 0 } }, + + /* Canon EOS 7D Firmware Version 2.0.3 */ /* Fine-tuning for the 7D are the camera's Amber-Blue bracketing. */ - { "Canon", "EOS 7D", Daylight, -3, { 2.036, 1, 1.595, 0 } }, - { "Canon", "EOS 7D", Daylight, 0, { 2.120, 1, 1.506, 0 } }, - { "Canon", "EOS 7D", Daylight, 3, { 2.217, 1, 1.437, 0 } }, - { "Canon", "EOS 7D", Shade, -3, { 2.349, 1, 1.348, 0 } }, - { "Canon", "EOS 7D", Shade, 0, { 2.468, 1, 1.276, 0 } }, - { "Canon", "EOS 7D", Shade, 3, { 2.573, 1, 1.228, 0 } }, - { "Canon", "EOS 7D", Cloudy, -3, { 2.188, 1, 1.457, 0 } }, - { "Canon", "EOS 7D", Cloudy, 0, { 2.286, 1, 1.384, 0 } }, - { "Canon", "EOS 7D", Cloudy, 3, { 2.393, 1, 1.319, 0 } }, - { "Canon", "EOS 7D", Tungsten, -3, { 1.426, 1, 2.398, 0 } }, - { "Canon", "EOS 7D", Tungsten, 0, { 1.490, 1, 2.261, 0 } }, - { "Canon", "EOS 7D", Tungsten, 3, { 1.557, 1, 2.156, 0 } }, - { "Canon", "EOS 7D", WhiteFluorescent, -3, { 1.771, 1, 2.235, 0 } }, - { "Canon", "EOS 7D", WhiteFluorescent, 0, { 1.858, 1, 2.124, 0 } }, - { "Canon", "EOS 7D", WhiteFluorescent, 3, { 1.936, 1, 2.023, 0 } }, - { "Canon", "EOS 7D", Flash, -3, { 2.240, 1, 1.448, 0 } }, - { "Canon", "EOS 7D", Flash, 0, { 2.338, 1, 1.376, 0 } }, - { "Canon", "EOS 7D", Flash, 3, { 2.462, 1, 1.312, 0 } }, + { "Canon", "EOS 7D", Daylight, -9, { 1.8281, 1, 1.8281, 0 } }, + { "Canon", "EOS 7D", Daylight, -8, { 1.8516, 1, 1.7969, 0 } }, + { "Canon", "EOS 7D", Daylight, -7, { 1.8750, 1, 1.7656, 0 } }, + { "Canon", "EOS 7D", Daylight, -6, { 1.9033, 1, 1.7354, 0 } }, + { "Canon", "EOS 7D", Daylight, -5, { 1.9316, 1, 1.7041, 0 } }, + { "Canon", "EOS 7D", Daylight, -4, { 1.9619, 1, 1.6729, 0 } }, + { "Canon", "EOS 7D", Daylight, -3, { 1.9844, 1, 1.6406, 0 } }, + { "Canon", "EOS 7D", Daylight, -2, { 2.0117, 1, 1.6123, 0 } }, + { "Canon", "EOS 7D", Daylight, -1, { 2.0361, 1, 1.5801, 0 } }, + { "Canon", "EOS 7D", Daylight, 0, { 2.0645, 1, 1.5488, 0 } }, + { "Canon", "EOS 7D", Daylight, 1, { 2.0938, 1, 1.5234, 0 } }, + { "Canon", "EOS 7D", Daylight, 2, { 2.1289, 1, 1.4990, 0 } }, + { "Canon", "EOS 7D", Daylight, 3, { 2.1602, 1, 1.4736, 0 } }, + { "Canon", "EOS 7D", Daylight, 4, { 2.1924, 1, 1.4482, 0 } }, + { "Canon", "EOS 7D", Daylight, 5, { 2.2266, 1, 1.4219, 0 } }, + { "Canon", "EOS 7D", Daylight, 6, { 2.2559, 1, 1.4004, 0 } }, + { "Canon", "EOS 7D", Daylight, 7, { 2.2910, 1, 1.3779, 0 } }, + { "Canon", "EOS 7D", Daylight, 8, { 2.3271, 1, 1.3545, 0 } }, + { "Canon", "EOS 7D", Daylight, 9, { 2.3652, 1, 1.3301, 0 } }, + { "Canon", "EOS 7D", Shade, -9, { 2.0938, 1, 1.5283, 0 } }, + { "Canon", "EOS 7D", Shade, -8, { 2.1240, 1, 1.5020, 0 } }, + { "Canon", "EOS 7D", Shade, -7, { 2.1562, 1, 1.4756, 0 } }, + { "Canon", "EOS 7D", Shade, -6, { 2.1885, 1, 1.4502, 0 } }, + { "Canon", "EOS 7D", Shade, -5, { 2.2217, 1, 1.4258, 0 } }, + { "Canon", "EOS 7D", Shade, -4, { 2.2510, 1, 1.4023, 0 } }, + { "Canon", "EOS 7D", Shade, -3, { 2.2861, 1, 1.3799, 0 } }, + { "Canon", "EOS 7D", Shade, -2, { 2.3223, 1, 1.3564, 0 } }, + { "Canon", "EOS 7D", Shade, -1, { 2.3594, 1, 1.3330, 0 } }, + { "Canon", "EOS 7D", Shade, 0, { 2.4033, 1, 1.3076, 0 } }, + { "Canon", "EOS 7D", Shade, 1, { 2.4326, 1, 1.2930, 0 } }, + { "Canon", "EOS 7D", Shade, 2, { 2.4678, 1, 1.2754, 0 } }, + { "Canon", "EOS 7D", Shade, 3, { 2.4980, 1, 1.2568, 0 } }, + { "Canon", "EOS 7D", Shade, 4, { 2.5342, 1, 1.2383, 0 } }, + { "Canon", "EOS 7D", Shade, 5, { 2.5664, 1, 1.2188, 0 } }, + { "Canon", "EOS 7D", Shade, 6, { 2.5928, 1, 1.2021, 0 } }, + { "Canon", "EOS 7D", Shade, 7, { 2.6260, 1, 1.1826, 0 } }, + { "Canon", "EOS 7D", Shade, 8, { 2.6602, 1, 1.1641, 0 } }, + { "Canon", "EOS 7D", Shade, 9, { 2.6943, 1, 1.1416, 0 } }, + { "Canon", "EOS 7D", Cloudy, -9, { 1.9658, 1, 1.6680, 0 } }, + { "Canon", "EOS 7D", Cloudy, -8, { 1.9883, 1, 1.6387, 0 } }, + { "Canon", "EOS 7D", Cloudy, -7, { 2.0117, 1, 1.6074, 0 } }, + { "Canon", "EOS 7D", Cloudy, -6, { 2.0400, 1, 1.5781, 0 } }, + { "Canon", "EOS 7D", Cloudy, -5, { 2.0684, 1, 1.5469, 0 } }, + { "Canon", "EOS 7D", Cloudy, -4, { 2.0986, 1, 1.5215, 0 } }, + { "Canon", "EOS 7D", Cloudy, -3, { 2.1338, 1, 1.4951, 0 } }, + { "Canon", "EOS 7D", Cloudy, -2, { 2.1650, 1, 1.4687, 0 } }, + { "Canon", "EOS 7D", Cloudy, -1, { 2.1924, 1, 1.4443, 0 } }, + { "Canon", "EOS 7D", Cloudy, 0, { 2.2266, 1, 1.4180, 0 } }, + { "Canon", "EOS 7D", Cloudy, 1, { 2.2607, 1, 1.3975, 0 } }, + { "Canon", "EOS 7D", Cloudy, 2, { 2.2959, 1, 1.3740, 0 } }, + { "Canon", "EOS 7D", Cloudy, 3, { 2.3330, 1, 1.3506, 0 } }, + { "Canon", "EOS 7D", Cloudy, 4, { 2.3701, 1, 1.3281, 0 } }, + { "Canon", "EOS 7D", Cloudy, 5, { 2.4150, 1, 1.3047, 0 } }, + { "Canon", "EOS 7D", Cloudy, 6, { 2.4443, 1, 1.2881, 0 } }, + { "Canon", "EOS 7D", Cloudy, 7, { 2.4736, 1, 1.2705, 0 } }, + { "Canon", "EOS 7D", Cloudy, 8, { 2.5098, 1, 1.2520, 0 } }, + { "Canon", "EOS 7D", Cloudy, 9, { 2.5469, 1, 1.2334, 0 } }, + { "Canon", "EOS 7D", Tungsten, -9, { 1.2686, 1, 2.7158, 0 } }, + { "Canon", "EOS 7D", Tungsten, -8, { 1.2861, 1, 2.6807, 0 } }, + { "Canon", "EOS 7D", Tungsten, -7, { 1.3047, 1, 2.6533, 0 } }, + { "Canon", "EOS 7D", Tungsten, -6, { 1.3232, 1, 2.6191, 0 } }, + { "Canon", "EOS 7D", Tungsten, -5, { 1.3418, 1, 2.5859, 0 } }, + { "Canon", "EOS 7D", Tungsten, -4, { 1.3633, 1, 2.5469, 0 } }, + { "Canon", "EOS 7D", Tungsten, -3, { 1.3838, 1, 2.4980, 0 } }, + { "Canon", "EOS 7D", Tungsten, -2, { 1.4023, 1, 2.4502, 0 } }, + { "Canon", "EOS 7D", Tungsten, -1, { 1.4258, 1, 2.3984, 0 } }, + { "Canon", "EOS 7D", Tungsten, 0, { 1.4482, 1, 2.3486, 0 } }, + { "Canon", "EOS 7D", Tungsten, 1, { 1.4687, 1, 2.3115, 0 } }, + { "Canon", "EOS 7D", Tungsten, 2, { 1.4902, 1, 2.2754, 0 } }, + { "Canon", "EOS 7D", Tungsten, 3, { 1.5127, 1, 2.2354, 0 } }, + { "Canon", "EOS 7D", Tungsten, 4, { 1.5352, 1, 2.1973, 0 } }, + { "Canon", "EOS 7D", Tungsten, 5, { 1.5605, 1, 2.1602, 0 } }, + { "Canon", "EOS 7D", Tungsten, 6, { 1.5850, 1, 2.1240, 0 } }, + { "Canon", "EOS 7D", Tungsten, 7, { 1.6104, 1, 2.0859, 0 } }, + { "Canon", "EOS 7D", Tungsten, 8, { 1.6328, 1, 2.0518, 0 } }, + { "Canon", "EOS 7D", Tungsten, 9, { 1.6592, 1, 2.0156, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, -9, { 1.5850, 1, 2.5859, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, -8, { 1.6104, 1, 2.5469, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, -7, { 1.6328, 1, 2.4980, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, -6, { 1.6621, 1, 2.4502, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, -5, { 1.6895, 1, 2.3984, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, -4, { 1.7119, 1, 2.3486, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, -3, { 1.7383, 1, 2.3115, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, -2, { 1.7656, 1, 2.2754, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, -1, { 1.7969, 1, 2.2354, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, 0, { 1.8252, 1, 2.1924, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, 1, { 1.8486, 1, 2.1562, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, 2, { 1.8750, 1, 2.1201, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, 3, { 1.9033, 1, 2.0859, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, 4, { 1.9316, 1, 2.0518, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, 5, { 1.9619, 1, 2.0156, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, 6, { 1.9844, 1, 1.9805, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, 7, { 2.0078, 1, 1.9502, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, 8, { 2.0361, 1, 1.9209, 0 } }, + { "Canon", "EOS 7D", WhiteFluorescent, 9, { 2.0645, 1, 1.8896, 0 } }, + { "Canon", "EOS 7D", Flash, -9, { 2.0039, 1, 1.6572, 0 } }, + { "Canon", "EOS 7D", Flash, -8, { 2.0322, 1, 1.6279, 0 } }, + { "Canon", "EOS 7D", Flash, -7, { 2.0605, 1, 1.5977, 0 } }, + { "Canon", "EOS 7D", Flash, -6, { 2.0898, 1, 1.5654, 0 } }, + { "Canon", "EOS 7D", Flash, -5, { 2.1201, 1, 1.5371, 0 } }, + { "Canon", "EOS 7D", Flash, -4, { 2.1562, 1, 1.5127, 0 } }, + { "Canon", "EOS 7D", Flash, -3, { 2.1836, 1, 1.4863, 0 } }, + { "Canon", "EOS 7D", Flash, -2, { 2.2168, 1, 1.4609, 0 } }, + { "Canon", "EOS 7D", Flash, -1, { 2.2510, 1, 1.4365, 0 } }, + { "Canon", "EOS 7D", Flash, 0, { 2.2803, 1, 1.4102, 0 } }, + { "Canon", "EOS 7D", Flash, 1, { 2.3164, 1, 1.3896, 0 } }, + { "Canon", "EOS 7D", Flash, 2, { 2.3594, 1, 1.3672, 0 } }, + { "Canon", "EOS 7D", Flash, 3, { 2.4033, 1, 1.3438, 0 } }, + { "Canon", "EOS 7D", Flash, 4, { 2.4326, 1, 1.3184, 0 } }, + { "Canon", "EOS 7D", Flash, 5, { 2.4619, 1, 1.2998, 0 } }, + { "Canon", "EOS 7D", Flash, 6, { 2.4980, 1, 1.2812, 0 } }, + { "Canon", "EOS 7D", Flash, 7, { 2.5342, 1, 1.2646, 0 } }, + { "Canon", "EOS 7D", Flash, 8, { 2.5664, 1, 1.2461, 0 } }, + { "Canon", "EOS 7D", Flash, 9, { 2.5928, 1, 1.2266, 0 } }, { "Canon", "EOS 10D", Daylight, 0, { 2.159856, 1, 1.218750, 0 } }, { "Canon", "EOS 10D", Shade, 0, { 2.533654, 1, 1.036058, 0 } }, @@ -533,26 +779,65 @@ { "Canon", "EOS Kiss Digital", Fluorescent, 0, { 1.794664, 1, 1.711137, 0 } }, { "Canon", "EOS Kiss Digital", Flash, 0, { 2.326923, 1, 1.098558, 0 } }, - { "Canon", "EOS 350D DIGITAL", Tungsten, 0, { 1.451524, 1, 2.333333, 0 } }, - { "Canon", "EOS 350D DIGITAL", Daylight, 0, { 2.202756, 1, 1.488189, 0 } }, - { "Canon", "EOS 350D DIGITAL", Fluorescent, 0, { 1.846004, 1, 1.987329, 0 } }, - { "Canon", "EOS 350D DIGITAL", Shade, 0, { 2.617126, 1, 1.235236, 0 } }, - { "Canon", "EOS 350D DIGITAL", Flash, 0, { 2.508858, 1, 1.297244, 0 } }, - { "Canon", "EOS 350D DIGITAL", Cloudy, 0, { 2.409449, 1, 1.344488, 0 } }, - - { "Canon", "EOS DIGITAL REBEL XT", Tungsten, 0, { 1.451524, 1, 2.333333, 0 } }, - { "Canon", "EOS DIGITAL REBEL XT", Daylight, 0, { 2.202756, 1, 1.488189, 0 } }, - { "Canon", "EOS DIGITAL REBEL XT", Fluorescent, 0, { 1.846004, 1, 1.987329, 0 } }, - { "Canon", "EOS DIGITAL REBEL XT", Shade, 0, { 2.617126, 1, 1.235236, 0 } }, - { "Canon", "EOS DIGITAL REBEL XT", Flash, 0, { 2.508858, 1, 1.297244, 0 } }, - { "Canon", "EOS DIGITAL REBEL XT", Cloudy, 0, { 2.409449, 1, 1.344488, 0 } }, - - { "Canon", "EOS Kiss Digital N", Tungsten, 0, { 1.451524, 1, 2.333333, 0 } }, - { "Canon", "EOS Kiss Digital N", Daylight, 0, { 2.202756, 1, 1.488189, 0 } }, - { "Canon", "EOS Kiss Digital N", Fluorescent, 0, { 1.846004, 1, 1.987329, 0 } }, - { "Canon", "EOS Kiss Digital N", Shade, 0, { 2.617126, 1, 1.235236, 0 } }, - { "Canon", "EOS Kiss Digital N", Flash, 0, { 2.508858, 1, 1.297244, 0 } }, - { "Canon", "EOS Kiss Digital N", Cloudy, 0, { 2.409449, 1, 1.344488, 0 } }, + // Firmware version 1.0.3. Fine tuning is from A9 to B9 on amber-blue. + { "Canon", "EOS 350D DIGITAL", Daylight, -9, { 2.7436, 1, 1.2240, 0 } }, + { "Canon", "EOS 350D DIGITAL", Daylight, 0, { 2.3605, 1, 1.4450, 0 } }, + { "Canon", "EOS 350D DIGITAL", Daylight, 9, { 2.0138, 1, 1.7151, 0 } }, + { "Canon", "EOS 350D DIGITAL", Shade, -9, { 3.1857, 1, 1.0285, 0 } }, + { "Canon", "EOS 350D DIGITAL", Shade, 0, { 2.7888, 1, 1.2024, 0 } }, + { "Canon", "EOS 350D DIGITAL", Shade, 9, { 2.3988, 1, 1.4214, 0 } }, + { "Canon", "EOS 350D DIGITAL", Cloudy, -9, { 2.9912, 1, 1.1169, 0 } }, + { "Canon", "EOS 350D DIGITAL", Cloudy, 0, { 2.5727, 1, 1.3075, 0 } }, + { "Canon", "EOS 350D DIGITAL", Cloudy, 9, { 2.2033, 1, 1.5589, 0 } }, + { "Canon", "EOS 350D DIGITAL", Tungsten, -9, { 1.5589, 1, 1.9205, 0 } }, + { "Canon", "EOS 350D DIGITAL", Tungsten, 0, { 1.5343, 1, 2.2880, 0 } }, + { "Canon", "EOS 350D DIGITAL", Tungsten, 9, { 1.3145, 1, 2.6873, 0 } }, + { "Canon", "EOS 350D DIGITAL", Fluorescent, -9, { 2.3124, 1, 1.6356, 0 } }, + { "Canon", "EOS 350D DIGITAL", Fluorescent, 0, { 1.9754, 1, 1.9303, 0 } }, + { "Canon", "EOS 350D DIGITAL", Fluorescent, 9, { 1.6657, 1, 2.3034, 0 } }, + { "Canon", "EOS 350D DIGITAL", Flash, -9, { 3.0904, 1, 1.0756, 0 } }, + { "Canon", "EOS 350D DIGITAL", Flash, 0, { 2.6729, 1, 1.2613, 0 } }, + { "Canon", "EOS 350D DIGITAL", Flash, 9, { 2.3026, 1, 1.4961, 0 } }, + + // Firmware version 1.0.3. Fine tuning is from A9 to B9 on amber-blue. + { "Canon", "EOS DIGITAL REBEL XT", Daylight, -9, { 2.7436, 1, 1.2240, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Daylight, 0, { 2.3605, 1, 1.4450, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Daylight, 9, { 2.0138, 1, 1.7151, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Shade, -9, { 3.1857, 1, 1.0285, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Shade, 0, { 2.7888, 1, 1.2024, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Shade, 9, { 2.3988, 1, 1.4214, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Cloudy, -9, { 2.9912, 1, 1.1169, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Cloudy, 0, { 2.5727, 1, 1.3075, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Cloudy, 9, { 2.2033, 1, 1.5589, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Tungsten, -9, { 1.5589, 1, 1.9205, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Tungsten, 0, { 1.5343, 1, 2.2880, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Tungsten, 9, { 1.3145, 1, 2.6873, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Fluorescent, -9, { 2.3124, 1, 1.6356, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Fluorescent, 0, { 1.9754, 1, 1.9303, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Fluorescent, 9, { 1.6657, 1, 2.3034, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Flash, -9, { 3.0904, 1, 1.0756, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Flash, 0, { 2.6729, 1, 1.2613, 0 } }, + { "Canon", "EOS DIGITAL REBEL XT", Flash, 9, { 2.3026, 1, 1.4961, 0 } }, + + // Firmware version 1.0.3. Fine tuning is from A9 to B9 on amber-blue. + { "Canon", "EOS Kiss Digital N", Daylight, -9, { 2.7436, 1, 1.2240, 0 } }, + { "Canon", "EOS Kiss Digital N", Daylight, 0, { 2.3605, 1, 1.4450, 0 } }, + { "Canon", "EOS Kiss Digital N", Daylight, 9, { 2.0138, 1, 1.7151, 0 } }, + { "Canon", "EOS Kiss Digital N", Shade, -9, { 3.1857, 1, 1.0285, 0 } }, + { "Canon", "EOS Kiss Digital N", Shade, 0, { 2.7888, 1, 1.2024, 0 } }, + { "Canon", "EOS Kiss Digital N", Shade, 9, { 2.3988, 1, 1.4214, 0 } }, + { "Canon", "EOS Kiss Digital N", Cloudy, -9, { 2.9912, 1, 1.1169, 0 } }, + { "Canon", "EOS Kiss Digital N", Cloudy, 0, { 2.5727, 1, 1.3075, 0 } }, + { "Canon", "EOS Kiss Digital N", Cloudy, 9, { 2.2033, 1, 1.5589, 0 } }, + { "Canon", "EOS Kiss Digital N", Tungsten, -9, { 1.5589, 1, 1.9205, 0 } }, + { "Canon", "EOS Kiss Digital N", Tungsten, 0, { 1.5343, 1, 2.2880, 0 } }, + { "Canon", "EOS Kiss Digital N", Tungsten, 9, { 1.3145, 1, 2.6873, 0 } }, + { "Canon", "EOS Kiss Digital N", Fluorescent, -9, { 2.3124, 1, 1.6356, 0 } }, + { "Canon", "EOS Kiss Digital N", Fluorescent, 0, { 1.9754, 1, 1.9303, 0 } }, + { "Canon", "EOS Kiss Digital N", Fluorescent, 9, { 1.6657, 1, 2.3034, 0 } }, + { "Canon", "EOS Kiss Digital N", Flash, -9, { 3.0904, 1, 1.0756, 0 } }, + { "Canon", "EOS Kiss Digital N", Flash, 0, { 2.6729, 1, 1.2613, 0 } }, + { "Canon", "EOS Kiss Digital N", Flash, 9, { 2.3026, 1, 1.4961, 0 } }, // Canon EOS 400D (firmware 1.1.1) white balance presets, 5 mireds per step { "Canon", "EOS 400D DIGITAL", Daylight, -9, { 1.972656, 1, 1.735352, 0 } }, @@ -942,26 +1227,432 @@ { "Canon", "EOS Kiss Digital X3", Fluorescent, 0, { 1.799224, 1, 1.824442, 0 } }, { "Canon", "EOS Kiss Digital X3", Flash, 0, { 2.207031, 1, 1.295898, 0 } }, - { "Canon", "EOS 550D", Daylight, 0, { 2.1426, 1, 1.5488, 0 } }, - { "Canon", "EOS 550D", Shade, 0, { 2.4619, 1, 1.3193, 0 } }, - { "Canon", "EOS 550D", Cloudy, 0, { 2.3066, 1, 1.4258, 0 } }, - { "Canon", "EOS 550D", Tungsten, 0, { 1.5264, 1, 2.3428, 0 } }, - { "Canon", "EOS 550D", WhiteFluorescent, 0, { 1.9072, 1, 2.1973, 0 } }, - { "Canon", "EOS 550D", Flash, 0, { 2.3701, 1, 1.4141, 0 } }, - - { "Canon", "EOS REBEL T2i", Daylight, 0, { 2.1426, 1, 1.5488, 0 } }, - { "Canon", "EOS REBEL T2i", Shade, 0, { 2.4619, 1, 1.3193, 0 } }, - { "Canon", "EOS REBEL T2i", Cloudy, 0, { 2.3066, 1, 1.4258, 0 } }, - { "Canon", "EOS REBEL T2i", Tungsten, 0, { 1.5264, 1, 2.3428, 0 } }, - { "Canon", "EOS REBEL T2i", WhiteFluorescent, 0, { 1.9072, 1, 2.1973, 0 } }, - { "Canon", "EOS REBEL T2i", Flash, 0, { 2.3701, 1, 1.4141, 0 } }, - - { "Canon", "EOS Kiss Digital X4", Daylight, 0, { 2.1426, 1, 1.5488, 0 } }, - { "Canon", "EOS Kiss Digital X4", Shade, 0, { 2.4619, 1, 1.3193, 0 } }, - { "Canon", "EOS Kiss Digital X4", Cloudy, 0, { 2.3066, 1, 1.4258, 0 } }, - { "Canon", "EOS Kiss Digital X4", Tungsten, 0, { 1.5264, 1, 2.3428, 0 } }, - { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 0, { 1.9072, 1, 2.1973, 0 } }, - { "Canon", "EOS Kiss Digital X4", Flash, 0, { 2.3701, 1, 1.4141, 0 } }, + /* Canon EOS 550D Firmware Version 1.0.9 */ + /* Fine-tuning is the camera's Amber-Blue bracketing. */ + { "Canon", "EOS 550D", Daylight, -9, { 1.903320, 1, 1.784180, 0 } }, + { "Canon", "EOS 550D", Daylight, -8, { 1.924805, 1, 1.756836, 0 } }, + { "Canon", "EOS 550D", Daylight, -7, { 1.950195, 1, 1.729492, 0 } }, + { "Canon", "EOS 550D", Daylight, -6, { 1.980469, 1, 1.701172, 0 } }, + { "Canon", "EOS 550D", Daylight, -5, { 2.007813, 1, 1.672852, 0 } }, + { "Canon", "EOS 550D", Daylight, -4, { 2.040039, 1, 1.646484, 0 } }, + { "Canon", "EOS 550D", Daylight, -3, { 2.064453, 1, 1.615234, 0 } }, + { "Canon", "EOS 550D", Daylight, -2, { 2.089844, 1, 1.587891, 0 } }, + { "Canon", "EOS 550D", Daylight, -1, { 2.120117, 1, 1.556641, 0 } }, + { "Canon", "EOS 550D", Daylight, 0, { 2.146484, 1, 1.526367, 0 } }, + { "Canon", "EOS 550D", Daylight, 1, { 2.178711, 1, 1.503906, 0 } }, + { "Canon", "EOS 550D", Daylight, 2, { 2.211914, 1, 1.481445, 0 } }, + { "Canon", "EOS 550D", Daylight, 3, { 2.246094, 1, 1.458984, 0 } }, + { "Canon", "EOS 550D", Daylight, 4, { 2.280273, 1, 1.436523, 0 } }, + { "Canon", "EOS 550D", Daylight, 5, { 2.316406, 1, 1.412109, 0 } }, + { "Canon", "EOS 550D", Daylight, 6, { 2.342773, 1, 1.391602, 0 } }, + { "Canon", "EOS 550D", Daylight, 7, { 2.375977, 1, 1.373047, 0 } }, + { "Canon", "EOS 550D", Daylight, 8, { 2.409180, 1, 1.350586, 0 } }, + { "Canon", "EOS 550D", Daylight, 9, { 2.444336, 1, 1.328125, 0 } }, + { "Canon", "EOS 550D", Shade, -9, { 2.173828, 1, 1.507813, 0 } }, + { "Canon", "EOS 550D", Shade, -8, { 2.207031, 1, 1.484375, 0 } }, + { "Canon", "EOS 550D", Shade, -7, { 2.240234, 1, 1.460938, 0 } }, + { "Canon", "EOS 550D", Shade, -6, { 2.275391, 1, 1.438477, 0 } }, + { "Canon", "EOS 550D", Shade, -5, { 2.311523, 1, 1.414063, 0 } }, + { "Canon", "EOS 550D", Shade, -4, { 2.342773, 1, 1.395508, 0 } }, + { "Canon", "EOS 550D", Shade, -3, { 2.370117, 1, 1.374023, 0 } }, + { "Canon", "EOS 550D", Shade, -2, { 2.403320, 1, 1.352539, 0 } }, + { "Canon", "EOS 550D", Shade, -1, { 2.444336, 1, 1.332031, 0 } }, + { "Canon", "EOS 550D", Shade, 0, { 2.479492, 1, 1.307617, 0 } }, + { "Canon", "EOS 550D", Shade, 1, { 2.509766, 1, 1.292969, 0 } }, + { "Canon", "EOS 550D", Shade, 2, { 2.541016, 1, 1.276367, 0 } }, + { "Canon", "EOS 550D", Shade, 3, { 2.573242, 1, 1.259766, 0 } }, + { "Canon", "EOS 550D", Shade, 4, { 2.612305, 1, 1.241211, 0 } }, + { "Canon", "EOS 550D", Shade, 5, { 2.645508, 1, 1.223633, 0 } }, + { "Canon", "EOS 550D", Shade, 6, { 2.673828, 1, 1.206055, 0 } }, + { "Canon", "EOS 550D", Shade, 7, { 2.702148, 1, 1.187500, 0 } }, + { "Canon", "EOS 550D", Shade, 8, { 2.738281, 1, 1.168945, 0 } }, + { "Canon", "EOS 550D", Shade, 9, { 2.782227, 1, 1.148438, 0 } }, + { "Canon", "EOS 550D", Cloudy, -9, { 2.043945, 1, 1.640625, 0 } }, + { "Canon", "EOS 550D", Cloudy, -8, { 2.068359, 1, 1.612305, 0 } }, + { "Canon", "EOS 550D", Cloudy, -7, { 2.093750, 1, 1.583008, 0 } }, + { "Canon", "EOS 550D", Cloudy, -6, { 2.120117, 1, 1.553711, 0 } }, + { "Canon", "EOS 550D", Cloudy, -5, { 2.151367, 1, 1.523438, 0 } }, + { "Canon", "EOS 550D", Cloudy, -4, { 2.183594, 1, 1.501953, 0 } }, + { "Canon", "EOS 550D", Cloudy, -3, { 2.216797, 1, 1.477539, 0 } }, + { "Canon", "EOS 550D", Cloudy, -2, { 2.250977, 1, 1.454102, 0 } }, + { "Canon", "EOS 550D", Cloudy, -1, { 2.280273, 1, 1.432617, 0 } }, + { "Canon", "EOS 550D", Cloudy, 0, { 2.316406, 1, 1.408203, 0 } }, + { "Canon", "EOS 550D", Cloudy, 1, { 2.348633, 1, 1.389648, 0 } }, + { "Canon", "EOS 550D", Cloudy, 2, { 2.381836, 1, 1.369141, 0 } }, + { "Canon", "EOS 550D", Cloudy, 3, { 2.415039, 1, 1.347656, 0 } }, + { "Canon", "EOS 550D", Cloudy, 4, { 2.450195, 1, 1.326172, 0 } }, + { "Canon", "EOS 550D", Cloudy, 5, { 2.491211, 1, 1.304688, 0 } }, + { "Canon", "EOS 550D", Cloudy, 6, { 2.515625, 1, 1.290039, 0 } }, + { "Canon", "EOS 550D", Cloudy, 7, { 2.546875, 1, 1.272461, 0 } }, + { "Canon", "EOS 550D", Cloudy, 8, { 2.579102, 1, 1.254883, 0 } }, + { "Canon", "EOS 550D", Cloudy, 9, { 2.619141, 1, 1.236328, 0 } }, + { "Canon", "EOS 550D", Tungsten, -9, { 1.345703, 1, 2.605469, 0 } }, + { "Canon", "EOS 550D", Tungsten, -8, { 1.361328, 1, 2.579102, 0 } }, + { "Canon", "EOS 550D", Tungsten, -7, { 1.379883, 1, 2.546875, 0 } }, + { "Canon", "EOS 550D", Tungsten, -6, { 1.398438, 1, 2.515625, 0 } }, + { "Canon", "EOS 550D", Tungsten, -5, { 1.417969, 1, 2.491211, 0 } }, + { "Canon", "EOS 550D", Tungsten, -4, { 1.440430, 1, 2.456055, 0 } }, + { "Canon", "EOS 550D", Tungsten, -3, { 1.460938, 1, 2.409180, 0 } }, + { "Canon", "EOS 550D", Tungsten, -2, { 1.479492, 1, 2.365234, 0 } }, + { "Canon", "EOS 550D", Tungsten, -1, { 1.503906, 1, 2.322266, 0 } }, + { "Canon", "EOS 550D", Tungsten, 0, { 1.526367, 1, 2.275391, 0 } }, + { "Canon", "EOS 550D", Tungsten, 1, { 1.546875, 1, 2.240234, 0 } }, + { "Canon", "EOS 550D", Tungsten, 2, { 1.568359, 1, 2.207031, 0 } }, + { "Canon", "EOS 550D", Tungsten, 3, { 1.589844, 1, 2.169922, 0 } }, + { "Canon", "EOS 550D", Tungsten, 4, { 1.612305, 1, 2.137695, 0 } }, + { "Canon", "EOS 550D", Tungsten, 5, { 1.638672, 1, 2.102539, 0 } }, + { "Canon", "EOS 550D", Tungsten, 6, { 1.662109, 1, 2.068359, 0 } }, + { "Canon", "EOS 550D", Tungsten, 7, { 1.684570, 1, 2.032227, 0 } }, + { "Canon", "EOS 550D", Tungsten, 8, { 1.707031, 1, 2.000000, 0 } }, + { "Canon", "EOS 550D", Tungsten, 9, { 1.732422, 1, 1.965820, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, -9, { 1.662109, 1, 2.473633, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, -8, { 1.684570, 1, 2.432617, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, -7, { 1.709961, 1, 2.392578, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, -6, { 1.735352, 1, 2.342773, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, -5, { 1.762695, 1, 2.300781, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, -4, { 1.787109, 1, 2.260742, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, -3, { 1.812500, 1, 2.226563, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, -2, { 1.841797, 1, 2.188477, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, -1, { 1.872070, 1, 2.156250, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, 0, { 1.899414, 1, 2.115234, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, 1, { 1.924805, 1, 2.081055, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, 2, { 1.950195, 1, 2.051758, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, 3, { 1.976563, 1, 2.015625, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, 4, { 2.007813, 1, 1.984375, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, 5, { 2.040039, 1, 1.950195, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, 6, { 2.064453, 1, 1.920898, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, 7, { 2.089844, 1, 1.889648, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, 8, { 2.120117, 1, 1.862305, 0 } }, + { "Canon", "EOS 550D", WhiteFluorescent, 9, { 2.146484, 1, 1.832031, 0 } }, + { "Canon", "EOS 550D", Flash, -9, { 2.098633, 1, 1.625000, 0 } }, + { "Canon", "EOS 550D", Flash, -8, { 2.124023, 1, 1.594727, 0 } }, + { "Canon", "EOS 550D", Flash, -7, { 2.156250, 1, 1.565430, 0 } }, + { "Canon", "EOS 550D", Flash, -6, { 2.188477, 1, 1.535156, 0 } }, + { "Canon", "EOS 550D", Flash, -5, { 2.221680, 1, 1.510742, 0 } }, + { "Canon", "EOS 550D", Flash, -4, { 2.255859, 1, 1.488281, 0 } }, + { "Canon", "EOS 550D", Flash, -3, { 2.286133, 1, 1.464844, 0 } }, + { "Canon", "EOS 550D", Flash, -2, { 2.322266, 1, 1.442383, 0 } }, + { "Canon", "EOS 550D", Flash, -1, { 2.354492, 1, 1.419922, 0 } }, + { "Canon", "EOS 550D", Flash, 0, { 2.381836, 1, 1.397461, 0 } }, + { "Canon", "EOS 550D", Flash, 1, { 2.420898, 1, 1.377930, 0 } }, + { "Canon", "EOS 550D", Flash, 2, { 2.456055, 1, 1.356445, 0 } }, + { "Canon", "EOS 550D", Flash, 3, { 2.491211, 1, 1.334961, 0 } }, + { "Canon", "EOS 550D", Flash, 4, { 2.522461, 1, 1.312500, 0 } }, + { "Canon", "EOS 550D", Flash, 5, { 2.553711, 1, 1.295898, 0 } }, + { "Canon", "EOS 550D", Flash, 6, { 2.585938, 1, 1.280273, 0 } }, + { "Canon", "EOS 550D", Flash, 7, { 2.625977, 1, 1.262695, 0 } }, + { "Canon", "EOS 550D", Flash, 8, { 2.653320, 1, 1.244141, 0 } }, + { "Canon", "EOS 550D", Flash, 9, { 2.680664, 1, 1.226563, 0 } }, + + { "Canon", "EOS REBEL T2i", Daylight, -9, { 1.903320, 1, 1.784180, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, -8, { 1.924805, 1, 1.756836, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, -7, { 1.950195, 1, 1.729492, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, -6, { 1.980469, 1, 1.701172, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, -5, { 2.007813, 1, 1.672852, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, -4, { 2.040039, 1, 1.646484, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, -3, { 2.064453, 1, 1.615234, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, -2, { 2.089844, 1, 1.587891, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, -1, { 2.120117, 1, 1.556641, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, 0, { 2.146484, 1, 1.526367, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, 1, { 2.178711, 1, 1.503906, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, 2, { 2.211914, 1, 1.481445, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, 3, { 2.246094, 1, 1.458984, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, 4, { 2.280273, 1, 1.436523, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, 5, { 2.316406, 1, 1.412109, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, 6, { 2.342773, 1, 1.391602, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, 7, { 2.375977, 1, 1.373047, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, 8, { 2.409180, 1, 1.350586, 0 } }, + { "Canon", "EOS REBEL T2i", Daylight, 9, { 2.444336, 1, 1.328125, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, -9, { 2.173828, 1, 1.507813, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, -8, { 2.207031, 1, 1.484375, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, -7, { 2.240234, 1, 1.460938, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, -6, { 2.275391, 1, 1.438477, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, -5, { 2.311523, 1, 1.414063, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, -4, { 2.342773, 1, 1.395508, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, -3, { 2.370117, 1, 1.374023, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, -2, { 2.403320, 1, 1.352539, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, -1, { 2.444336, 1, 1.332031, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, 0, { 2.479492, 1, 1.307617, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, 1, { 2.509766, 1, 1.292969, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, 2, { 2.541016, 1, 1.276367, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, 3, { 2.573242, 1, 1.259766, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, 4, { 2.612305, 1, 1.241211, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, 5, { 2.645508, 1, 1.223633, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, 6, { 2.673828, 1, 1.206055, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, 7, { 2.702148, 1, 1.187500, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, 8, { 2.738281, 1, 1.168945, 0 } }, + { "Canon", "EOS REBEL T2i", Shade, 9, { 2.782227, 1, 1.148438, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, -9, { 2.043945, 1, 1.640625, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, -8, { 2.068359, 1, 1.612305, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, -7, { 2.093750, 1, 1.583008, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, -6, { 2.120117, 1, 1.553711, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, -5, { 2.151367, 1, 1.523438, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, -4, { 2.183594, 1, 1.501953, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, -3, { 2.216797, 1, 1.477539, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, -2, { 2.250977, 1, 1.454102, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, -1, { 2.280273, 1, 1.432617, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, 0, { 2.316406, 1, 1.408203, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, 1, { 2.348633, 1, 1.389648, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, 2, { 2.381836, 1, 1.369141, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, 3, { 2.415039, 1, 1.347656, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, 4, { 2.450195, 1, 1.326172, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, 5, { 2.491211, 1, 1.304688, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, 6, { 2.515625, 1, 1.290039, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, 7, { 2.546875, 1, 1.272461, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, 8, { 2.579102, 1, 1.254883, 0 } }, + { "Canon", "EOS REBEL T2i", Cloudy, 9, { 2.619141, 1, 1.236328, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, -9, { 1.345703, 1, 2.605469, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, -8, { 1.361328, 1, 2.579102, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, -7, { 1.379883, 1, 2.546875, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, -6, { 1.398438, 1, 2.515625, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, -5, { 1.417969, 1, 2.491211, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, -4, { 1.440430, 1, 2.456055, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, -3, { 1.460938, 1, 2.409180, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, -2, { 1.479492, 1, 2.365234, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, -1, { 1.503906, 1, 2.322266, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, 0, { 1.526367, 1, 2.275391, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, 1, { 1.546875, 1, 2.240234, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, 2, { 1.568359, 1, 2.207031, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, 3, { 1.589844, 1, 2.169922, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, 4, { 1.612305, 1, 2.137695, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, 5, { 1.638672, 1, 2.102539, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, 6, { 1.662109, 1, 2.068359, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, 7, { 1.684570, 1, 2.032227, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, 8, { 1.707031, 1, 2.000000, 0 } }, + { "Canon", "EOS REBEL T2i", Tungsten, 9, { 1.732422, 1, 1.965820, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, -9, { 1.662109, 1, 2.473633, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, -8, { 1.684570, 1, 2.432617, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, -7, { 1.709961, 1, 2.392578, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, -6, { 1.735352, 1, 2.342773, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, -5, { 1.762695, 1, 2.300781, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, -4, { 1.787109, 1, 2.260742, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, -3, { 1.812500, 1, 2.226563, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, -2, { 1.841797, 1, 2.188477, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, -1, { 1.872070, 1, 2.156250, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, 0, { 1.899414, 1, 2.115234, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, 1, { 1.924805, 1, 2.081055, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, 2, { 1.950195, 1, 2.051758, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, 3, { 1.976563, 1, 2.015625, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, 4, { 2.007813, 1, 1.984375, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, 5, { 2.040039, 1, 1.950195, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, 6, { 2.064453, 1, 1.920898, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, 7, { 2.089844, 1, 1.889648, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, 8, { 2.120117, 1, 1.862305, 0 } }, + { "Canon", "EOS REBEL T2i", WhiteFluorescent, 9, { 2.146484, 1, 1.832031, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, -9, { 2.098633, 1, 1.625000, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, -8, { 2.124023, 1, 1.594727, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, -7, { 2.156250, 1, 1.565430, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, -6, { 2.188477, 1, 1.535156, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, -5, { 2.221680, 1, 1.510742, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, -4, { 2.255859, 1, 1.488281, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, -3, { 2.286133, 1, 1.464844, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, -2, { 2.322266, 1, 1.442383, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, -1, { 2.354492, 1, 1.419922, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, 0, { 2.381836, 1, 1.397461, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, 1, { 2.420898, 1, 1.377930, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, 2, { 2.456055, 1, 1.356445, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, 3, { 2.491211, 1, 1.334961, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, 4, { 2.522461, 1, 1.312500, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, 5, { 2.553711, 1, 1.295898, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, 6, { 2.585938, 1, 1.280273, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, 7, { 2.625977, 1, 1.262695, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, 8, { 2.653320, 1, 1.244141, 0 } }, + { "Canon", "EOS REBEL T2i", Flash, 9, { 2.680664, 1, 1.226563, 0 } }, + + { "Canon", "EOS Kiss Digital X4", Daylight, -9, { 1.903320, 1, 1.784180, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, -8, { 1.924805, 1, 1.756836, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, -7, { 1.950195, 1, 1.729492, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, -6, { 1.980469, 1, 1.701172, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, -5, { 2.007813, 1, 1.672852, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, -4, { 2.040039, 1, 1.646484, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, -3, { 2.064453, 1, 1.615234, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, -2, { 2.089844, 1, 1.587891, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, -1, { 2.120117, 1, 1.556641, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, 0, { 2.146484, 1, 1.526367, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, 1, { 2.178711, 1, 1.503906, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, 2, { 2.211914, 1, 1.481445, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, 3, { 2.246094, 1, 1.458984, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, 4, { 2.280273, 1, 1.436523, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, 5, { 2.316406, 1, 1.412109, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, 6, { 2.342773, 1, 1.391602, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, 7, { 2.375977, 1, 1.373047, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, 8, { 2.409180, 1, 1.350586, 0 } }, + { "Canon", "EOS Kiss Digital X4", Daylight, 9, { 2.444336, 1, 1.328125, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, -9, { 2.173828, 1, 1.507813, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, -8, { 2.207031, 1, 1.484375, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, -7, { 2.240234, 1, 1.460938, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, -6, { 2.275391, 1, 1.438477, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, -5, { 2.311523, 1, 1.414063, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, -4, { 2.342773, 1, 1.395508, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, -3, { 2.370117, 1, 1.374023, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, -2, { 2.403320, 1, 1.352539, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, -1, { 2.444336, 1, 1.332031, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, 0, { 2.479492, 1, 1.307617, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, 1, { 2.509766, 1, 1.292969, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, 2, { 2.541016, 1, 1.276367, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, 3, { 2.573242, 1, 1.259766, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, 4, { 2.612305, 1, 1.241211, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, 5, { 2.645508, 1, 1.223633, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, 6, { 2.673828, 1, 1.206055, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, 7, { 2.702148, 1, 1.187500, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, 8, { 2.738281, 1, 1.168945, 0 } }, + { "Canon", "EOS Kiss Digital X4", Shade, 9, { 2.782227, 1, 1.148438, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, -9, { 2.043945, 1, 1.640625, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, -8, { 2.068359, 1, 1.612305, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, -7, { 2.093750, 1, 1.583008, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, -6, { 2.120117, 1, 1.553711, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, -5, { 2.151367, 1, 1.523438, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, -4, { 2.183594, 1, 1.501953, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, -3, { 2.216797, 1, 1.477539, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, -2, { 2.250977, 1, 1.454102, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, -1, { 2.280273, 1, 1.432617, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, 0, { 2.316406, 1, 1.408203, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, 1, { 2.348633, 1, 1.389648, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, 2, { 2.381836, 1, 1.369141, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, 3, { 2.415039, 1, 1.347656, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, 4, { 2.450195, 1, 1.326172, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, 5, { 2.491211, 1, 1.304688, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, 6, { 2.515625, 1, 1.290039, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, 7, { 2.546875, 1, 1.272461, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, 8, { 2.579102, 1, 1.254883, 0 } }, + { "Canon", "EOS Kiss Digital X4", Cloudy, 9, { 2.619141, 1, 1.236328, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, -9, { 1.345703, 1, 2.605469, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, -8, { 1.361328, 1, 2.579102, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, -7, { 1.379883, 1, 2.546875, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, -6, { 1.398438, 1, 2.515625, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, -5, { 1.417969, 1, 2.491211, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, -4, { 1.440430, 1, 2.456055, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, -3, { 1.460938, 1, 2.409180, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, -2, { 1.479492, 1, 2.365234, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, -1, { 1.503906, 1, 2.322266, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, 0, { 1.526367, 1, 2.275391, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, 1, { 1.546875, 1, 2.240234, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, 2, { 1.568359, 1, 2.207031, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, 3, { 1.589844, 1, 2.169922, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, 4, { 1.612305, 1, 2.137695, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, 5, { 1.638672, 1, 2.102539, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, 6, { 1.662109, 1, 2.068359, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, 7, { 1.684570, 1, 2.032227, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, 8, { 1.707031, 1, 2.000000, 0 } }, + { "Canon", "EOS Kiss Digital X4", Tungsten, 9, { 1.732422, 1, 1.965820, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, -9, { 1.662109, 1, 2.473633, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, -8, { 1.684570, 1, 2.432617, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, -7, { 1.709961, 1, 2.392578, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, -6, { 1.735352, 1, 2.342773, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, -5, { 1.762695, 1, 2.300781, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, -4, { 1.787109, 1, 2.260742, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, -3, { 1.812500, 1, 2.226563, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, -2, { 1.841797, 1, 2.188477, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, -1, { 1.872070, 1, 2.156250, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 0, { 1.899414, 1, 2.115234, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 1, { 1.924805, 1, 2.081055, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 2, { 1.950195, 1, 2.051758, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 3, { 1.976563, 1, 2.015625, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 4, { 2.007813, 1, 1.984375, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 5, { 2.040039, 1, 1.950195, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 6, { 2.064453, 1, 1.920898, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 7, { 2.089844, 1, 1.889648, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 8, { 2.120117, 1, 1.862305, 0 } }, + { "Canon", "EOS Kiss Digital X4", WhiteFluorescent, 9, { 2.146484, 1, 1.832031, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, -9, { 2.098633, 1, 1.625000, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, -8, { 2.124023, 1, 1.594727, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, -7, { 2.156250, 1, 1.565430, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, -6, { 2.188477, 1, 1.535156, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, -5, { 2.221680, 1, 1.510742, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, -4, { 2.255859, 1, 1.488281, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, -3, { 2.286133, 1, 1.464844, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, -2, { 2.322266, 1, 1.442383, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, -1, { 2.354492, 1, 1.419922, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, 0, { 2.381836, 1, 1.397461, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, 1, { 2.420898, 1, 1.377930, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, 2, { 2.456055, 1, 1.356445, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, 3, { 2.491211, 1, 1.334961, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, 4, { 2.522461, 1, 1.312500, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, 5, { 2.553711, 1, 1.295898, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, 6, { 2.585938, 1, 1.280273, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, 7, { 2.625977, 1, 1.262695, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, 8, { 2.653320, 1, 1.244141, 0 } }, + { "Canon", "EOS Kiss Digital X4", Flash, 9, { 2.680664, 1, 1.226563, 0 } }, + + // Canon EOS 600D firmware version 1.0.2 + { "Canon", "EOS 600D", Daylight, 0, { 2.235352, 1, 1.612305, 0 } }, + { "Canon", "EOS 600D", Shade, 0, { 2.592773, 1, 1.377930, 0 } }, + { "Canon", "EOS 600D", Cloudy, 0, { 2.409180, 1, 1.486328, 0 } }, + { "Canon", "EOS 600D", Tungsten, 0, { 1.597656, 1, 2.409180, 0 } }, + { "Canon", "EOS 600D", Fluorescent, 0, { 1.958008, 1, 2.260742, 0 } }, + { "Canon", "EOS 600D", Flash, 0, { 2.509766, 1, 1.464844, 0 } }, + + { "Canon", "EOS REBEL T3i", Daylight, 0, { 2.235352, 1, 1.612305, 0 } }, + { "Canon", "EOS REBEL T3i", Shade, 0, { 2.592773, 1, 1.377930, 0 } }, + { "Canon", "EOS REBEL T3i", Cloudy, 0, { 2.409180, 1, 1.486328, 0 } }, + { "Canon", "EOS REBEL T3i", Tungsten, 0, { 1.597656, 1, 2.409180, 0 } }, + { "Canon", "EOS REBEL T3i", Fluorescent, 0, { 1.958008, 1, 2.260742, 0 } }, + { "Canon", "EOS REBEL T3i", Flash, 0, { 2.509766, 1, 1.464844, 0 } }, + + { "Canon", "EOS Kiss Digital X5", Daylight, 0, { 2.235352, 1, 1.612305, 0 } }, + { "Canon", "EOS Kiss Digital X5", Shade, 0, { 2.592773, 1, 1.377930, 0 } }, + { "Canon", "EOS Kiss Digital X5", Cloudy, 0, { 2.409180, 1, 1.486328, 0 } }, + { "Canon", "EOS Kiss Digital X5", Tungsten, 0, { 1.597656, 1, 2.409180, 0 } }, + { "Canon", "EOS Kiss Digital X5", Fluorescent, 0, { 1.958008, 1, 2.260742, 0 } }, + { "Canon", "EOS Kiss Digital X5", Flash, 0, { 2.509766, 1, 1.464844, 0 } }, + + /* Fine-tuning is the camera's Amber-Blue bracketing. */ + { "Canon", "EOS 650D", Daylight, -3, { 1.9502, 1, 1.7539, 0 } }, + { "Canon", "EOS 650D", Daylight, 0, { 2.0322, 1, 1.6572, 0 } }, + { "Canon", "EOS 650D", Daylight, 3, { 2.1152, 1, 1.5850, 0 } }, + { "Canon", "EOS 650D", Shade, -3, { 2.2305, 1, 1.4951, 0 } }, + { "Canon", "EOS 650D", Shade, 0, { 2.3379, 1, 1.4238, 0 } }, + { "Canon", "EOS 650D", Shade, 3, { 2.4443, 1, 1.3604, 0 } }, + { "Canon", "EOS 650D", Cloudy, -3, { 2.0898, 1, 1.6074, 0 } }, + { "Canon", "EOS 650D", Cloudy, 0, { 2.1787, 1, 1.5332, 0 } }, + { "Canon", "EOS 650D", Cloudy, 3, { 2.2705, 1, 1.4668, 0 } }, + { "Canon", "EOS 650D", Tungsten, -3, { 1.3975, 1, 2.5928, 0 } }, + { "Canon", "EOS 650D", Tungsten, 0, { 1.4541, 1, 2.4561, 0 } }, + { "Canon", "EOS 650D", Tungsten, 3, { 1.5127, 1, 2.3428, 0 } }, + { "Canon", "EOS 650D", Fluorescent, -3, { 1.6982, 1, 2.4268, 0 } }, + { "Canon", "EOS 650D", Fluorescent, 0, { 1.7715, 1, 2.3066, 0 } }, + { "Canon", "EOS 650D", Fluorescent, 3, { 1.8486, 1, 2.1973, 0 } }, + { "Canon", "EOS 650D", Flash, -3, { 2.1699, 1, 1.5879, 0 } }, + { "Canon", "EOS 650D", Flash, 0, { 2.2607, 1, 1.5166, 0 } }, + { "Canon", "EOS 650D", Flash, 3, { 2.3701, 1, 1.4502, 0 } }, + + { "Canon", "EOS REBEL T4i", Daylight, -3, { 1.9502, 1, 1.7539, 0 } }, + { "Canon", "EOS REBEL T4i", Daylight, 0, { 2.0322, 1, 1.6572, 0 } }, + { "Canon", "EOS REBEL T4i", Daylight, 3, { 2.1152, 1, 1.5850, 0 } }, + { "Canon", "EOS REBEL T4i", Shade, -3, { 2.2305, 1, 1.4951, 0 } }, + { "Canon", "EOS REBEL T4i", Shade, 0, { 2.3379, 1, 1.4238, 0 } }, + { "Canon", "EOS REBEL T4i", Shade, 3, { 2.4443, 1, 1.3604, 0 } }, + { "Canon", "EOS REBEL T4i", Cloudy, -3, { 2.0898, 1, 1.6074, 0 } }, + { "Canon", "EOS REBEL T4i", Cloudy, 0, { 2.1787, 1, 1.5332, 0 } }, + { "Canon", "EOS REBEL T4i", Cloudy, 3, { 2.2705, 1, 1.4668, 0 } }, + { "Canon", "EOS REBEL T4i", Tungsten, -3, { 1.3975, 1, 2.5928, 0 } }, + { "Canon", "EOS REBEL T4i", Tungsten, 0, { 1.4541, 1, 2.4561, 0 } }, + { "Canon", "EOS REBEL T4i", Tungsten, 3, { 1.5127, 1, 2.3428, 0 } }, + { "Canon", "EOS REBEL T4i", Fluorescent, -3, { 1.6982, 1, 2.4268, 0 } }, + { "Canon", "EOS REBEL T4i", Fluorescent, 0, { 1.7715, 1, 2.3066, 0 } }, + { "Canon", "EOS REBEL T4i", Fluorescent, 3, { 1.8486, 1, 2.1973, 0 } }, + { "Canon", "EOS REBEL T4i", Flash, -3, { 2.1699, 1, 1.5879, 0 } }, + { "Canon", "EOS REBEL T4i", Flash, 0, { 2.2607, 1, 1.5166, 0 } }, + { "Canon", "EOS REBEL T4i", Flash, 3, { 2.3701, 1, 1.4502, 0 } }, + + { "Canon", "EOS Kiss Digital X6i", Daylight, -3, { 1.9502, 1, 1.7539, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Daylight, 0, { 2.0322, 1, 1.6572, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Daylight, 3, { 2.1152, 1, 1.5850, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Shade, -3, { 2.2305, 1, 1.4951, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Shade, 0, { 2.3379, 1, 1.4238, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Shade, 3, { 2.4443, 1, 1.3604, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Cloudy, -3, { 2.0898, 1, 1.6074, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Cloudy, 0, { 2.1787, 1, 1.5332, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Cloudy, 3, { 2.2705, 1, 1.4668, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Tungsten, -3, { 1.3975, 1, 2.5928, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Tungsten, 0, { 1.4541, 1, 2.4561, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Tungsten, 3, { 1.5127, 1, 2.3428, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Fluorescent, -3, { 1.6982, 1, 2.4268, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Fluorescent, 0, { 1.7715, 1, 2.3066, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Fluorescent, 3, { 1.8486, 1, 2.1973, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Flash, -3, { 2.1699, 1, 1.5879, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Flash, 0, { 2.2607, 1, 1.5166, 0 } }, + { "Canon", "EOS Kiss Digital X6i", Flash, 3, { 2.3701, 1, 1.4502, 0 } }, { "Canon", "EOS 1000D", Daylight, 0, { 2.183594, 1, 1.526367, 0 } }, { "Canon", "EOS 1000D", Shade, 0, { 2.553711, 1, 1.262695, 0 } }, @@ -984,6 +1675,34 @@ { "Canon", "EOS Kiss Digital F", Fluorescent, 0, { 1.889648, 1, 2.133789, 0 } }, { "Canon", "EOS Kiss Digital F", Flash, 0, { 2.541830, 1, 1.769099, 0 } }, + { "Canon", "EOS 1100D", Daylight, 0, { 2.2559, 1, 1.4844, 0 } }, + { "Canon", "EOS 1100D", Shade, 0, { 2.6455, 1, 1.2725, 0 } }, + { "Canon", "EOS 1100D", Cloudy, 0, { 2.4443, 1, 1.3652, 0 } }, + { "Canon", "EOS 1100D", Tungsten, 0, { 1.5654, 1, 2.2402, 0 } }, + { "Canon", "EOS 1100D", WhiteFluorescent, 0, { 1.9541, 1, 2.0732, 0 } }, + { "Canon", "EOS 1100D", Flash, 0, { 2.5283, 1, 1.3584, 0 } }, + + { "Canon", "EOS REBEL T3", Daylight, 0, { 2.2559, 1, 1.4844, 0 } }, + { "Canon", "EOS REBEL T3", Shade, 0, { 2.6455, 1, 1.2725, 0 } }, + { "Canon", "EOS REBEL T3", Cloudy, 0, { 2.4443, 1, 1.3652, 0 } }, + { "Canon", "EOS REBEL T3", Tungsten, 0, { 1.5654, 1, 2.2402, 0 } }, + { "Canon", "EOS REBEL T3", WhiteFluorescent, 0, { 1.9541, 1, 2.0732, 0 } }, + { "Canon", "EOS REBEL T3", Flash, 0, { 2.5283, 1, 1.3584, 0 } }, + + { "Canon", "EOS Kiss Digital X50", Daylight, 0, { 2.2559, 1, 1.4844, 0 } }, + { "Canon", "EOS Kiss Digital X50", Shade, 0, { 2.6455, 1, 1.2725, 0 } }, + { "Canon", "EOS Kiss Digital X50", Cloudy, 0, { 2.4443, 1, 1.3652, 0 } }, + { "Canon", "EOS Kiss Digital X50", Tungsten, 0, { 1.5654, 1, 2.2402, 0 } }, + { "Canon", "EOS Kiss Digital X50", WhiteFluorescent, 0, { 1.9541, 1, 2.0732, 0 } }, + { "Canon", "EOS Kiss Digital X50", Flash, 0, { 2.5283, 1, 1.3584, 0 } }, + + { "Canon", "EOS-1DS", Daylight, 0, { 1.6133, 1, 1.2500, 0 } }, /* 5302K */ + { "Canon", "EOS-1DS", Shade, 0, { 1.8477, 1, 1.0684, 0 } }, /* 6685K */ + { "Canon", "EOS-1DS", Cloudy, 0, { 1.7285, 1, 1.1504, 0 } }, /* 5940K */ + { "Canon", "EOS-1DS", Tungsten, 0, { 1.1270, 1, 1.9199, 0 } }, /* 3334K */ + { "Canon", "EOS-1DS", Fluorescent, 0, { 1.2012, 1, 1.7168, 0 } }, /* 3643K */ + { "Canon", "EOS-1DS", Flash, 0, { 1.7793, 1, 1.1445, 0 } }, /* 6184K */ + // Firmware Version 1.1.6 { "Canon", "EOS-1Ds Mark II", Daylight, 0, { 1.992188, 1, 1.503906, 0 } }, { "Canon", "EOS-1Ds Mark II", Shade, 0, { 2.300781, 1, 1.243164, 0 } }, @@ -1014,118 +1733,173 @@ { "Canon", "EOS-1D Mark IV", Fluorescent, 0, { 1.767892, 1, 2.205029, 0 } }, { "Canon", "EOS-1D Mark IV", Flash, 0, { 2.230469, 1, 1.423828, 0 } }, - { "FUJIFILM", "FinePix E900", Daylight, 0, { 1.571875, 1, 1.128125, 0 } }, - { "FUJIFILM", "FinePix E900", Shade, 0, { 1.668750, 1, 1.006250, 0 } }, - { "FUJIFILM", "FinePix E900", DaylightFluorescent, 0, { 1.907609, 1, 1.016304, 0 } }, - { "FUJIFILM", "FinePix E900", WarmWhiteFluorescent, 0, { 1.654891, 1, 1.241848, 0 } }, - { "FUJIFILM", "FinePix E900", CoolWhiteFluorescent, 0, { 1.554348, 1, 1.519022, 0 } }, - { "FUJIFILM", "FinePix E900", Incandescent, 0, { 1.037611, 1, 1.842920, 0 } }, - - { "FUJIFILM", "FinePix F700", Daylight, 0, { 1.725000, 1, 1.500000, 0 } }, - { "FUJIFILM", "FinePix F700", Shade, 0, { 1.950000, 1, 1.325000, 0 } }, - { "FUJIFILM", "FinePix F700", DaylightFluorescent, 0, { 2.032609, 1, 1.336957, 0 } }, - { "FUJIFILM", "FinePix F700", WarmWhiteFluorescent, 0, { 1.706522, 1, 1.663043, 0 } }, - { "FUJIFILM", "FinePix F700", CoolWhiteFluorescent, 0, { 1.684783, 1, 2.152174, 0 } }, - { "FUJIFILM", "FinePix F700", Incandescent, 0, { 1.168142, 1, 2.477876, 0 } }, - - { "FUJIFILM", "FinePix S100FS", Daylight, 0, { 1.702381, 1, 1.845238, 0 } }, - { "FUJIFILM", "FinePix S100FS", Shade, 0, { 1.830357, 1, 1.601190, 0 } }, - { "FUJIFILM", "FinePix S100FS", DaylightFluorescent, 0, { 1.895833, 1, 1.461309, 0 } }, - { "FUJIFILM", "FinePix S100FS", WarmWhiteFluorescent, 0, { 1.574405, 1, 1.818452, 0 } }, - { "FUJIFILM", "FinePix S100FS", CoolWhiteFluorescent, 0, { 1.663690, 1, 2.309524, 0 } }, - { "FUJIFILM", "FinePix S100FS", Incandescent, 0, { 1.107143, 1, 2.815476, 0 } }, - - { "FUJIFILM", "FinePix S20Pro", Daylight, 0, { 1.712500, 1, 1.500000, 0 } }, - { "FUJIFILM", "FinePix S20Pro", Cloudy, 0, { 1.887500, 1, 1.262500, 0 } }, - { "FUJIFILM", "FinePix S20Pro", DaylightFluorescent, 0, { 2.097826, 1, 1.304348, 0 } }, - { "FUJIFILM", "FinePix S20Pro", WarmWhiteFluorescent, 0, { 1.782609, 1, 1.619565, 0 } }, - { "FUJIFILM", "FinePix S20Pro", CoolWhiteFluorescent, 0, { 1.670213, 1, 2.063830, 0 } }, - { "FUJIFILM", "FinePix S20Pro", Incandescent, 0, { 1.069565, 1, 2.486957 } }, - - { "FUJIFILM", "FinePix S2Pro", Daylight, 0, { 1.509804, 1, 1.401961, 0 } }, - { "FUJIFILM", "FinePix S2Pro", Cloudy, 0, { 1.666667, 1, 1.166667, 0 } }, - { "FUJIFILM", "FinePix S2Pro", Flash, 0, { 1, 1.014084, 2.542253, 0 } }, - { "FUJIFILM", "FinePix S2Pro", DaylightFluorescent, 0, { 1.948718, 1, 1.230769, 0 } }, - { "FUJIFILM", "FinePix S2Pro", WarmWhiteFluorescent, 0, { 1.675214, 1, 1.572650, 0 } }, - { "FUJIFILM", "FinePix S2Pro", CoolWhiteFluorescent, 0, { 1.649573, 1, 2.094017, 0 } }, - - { "FUJIFILM", "FinePix S5000", Incandescent, 0, { 1.212081, 1, 2.672364, 0 } }, - { "FUJIFILM", "FinePix S5000", Fluorescent, 0, { 1.772316, 1, 2.349902, 0 } }, - { "FUJIFILM", "FinePix S5000", Daylight, 0, { 1.860403, 1, 1.515946, 0 } }, - { "FUJIFILM", "FinePix S5000", Flash, 0, { 2.202181, 1, 1.423284, 0 } }, - { "FUJIFILM", "FinePix S5000", Cloudy, 0, { 2.036578, 1, 1.382513, 0 } }, - { "FUJIFILM", "FinePix S5000", Shade, 0, { 2.357215, 1, 1.212016, 0 } }, - - { "FUJIFILM", "FinePix S5200", Daylight, 0, { 1.587500, 1, 1.381250, 0 } }, - { "FUJIFILM", "FinePix S5200", Shade, 0, { 1.946875, 1, 1.175000, 0 } }, - { "FUJIFILM", "FinePix S5200", DaylightFluorescent, 0, { 1.948370, 1, 1.187500, 0 } }, - { "FUJIFILM", "FinePix S5200", WarmWhiteFluorescent, 0, { 1.682065, 1, 1.437500, 0 } }, - { "FUJIFILM", "FinePix S5200", CoolWhiteFluorescent, 0, { 1.595109, 1, 1.839674, 0 } }, - { "FUJIFILM", "FinePix S5200", Incandescent, 0, { 1.077434, 1, 2.170354, 0 } }, - - { "FUJIFILM", "FinePix S5500", Daylight, 0, { 1.712500, 1, 1.550000, 0 } }, - { "FUJIFILM", "FinePix S5500", Shade, 0, { 1.912500, 1, 1.375000, 0 } }, - { "FUJIFILM", "FinePix S5500", DaylightFluorescent, 0, { 1.978261, 1, 1.380435, 0 } }, - { "FUJIFILM", "FinePix S5500", WarmWhiteFluorescent, 0, { 1.673913, 1, 1.673913, 0 } }, - { "FUJIFILM", "FinePix S5500", CoolWhiteFluorescent, 0, { 1.663043, 1, 2.163043, 0 } }, - { "FUJIFILM", "FinePix S5500", Incandescent, 0, { 1.115044, 1, 2.566372, 0 } }, - - { "FUJIFILM", "FinePix S5600", Daylight, 0, { 1.587500, 1, 1.381250, 0 } }, - { "FUJIFILM", "FinePix S5600", Shade, 0, { 1.946875, 1, 1.175000, 0 } }, - { "FUJIFILM", "FinePix S5600", DaylightFluorescent, 0, { 1.948370, 1, 1.187500, 0 } }, - { "FUJIFILM", "FinePix S5600", WarmWhiteFluorescent, 0, { 1.682065, 1, 1.437500, 0 } }, - { "FUJIFILM", "FinePix S5600", CoolWhiteFluorescent, 0, { 1.595109, 1, 1.839674, 0 } }, - { "FUJIFILM", "FinePix S5600", Incandescent, 0, { 1.077434, 1, 2.170354, 0 } }, - - { "FUJIFILM", "FinePix S6000fd", Daylight, 0, { 1.511905, 1, 1.431548, 0 } }, - { "FUJIFILM", "FinePix S6000fd", Shade, 0, { 1.699405, 1, 1.232143, 0 } }, - { "FUJIFILM", "FinePix S6000fd", DaylightFluorescent, 0, { 1.866071, 1, 1.309524, 0 } }, - { "FUJIFILM", "FinePix S6000fd", WarmWhiteFluorescent, 0, { 1.568452, 1, 1.627976, 0 } }, - { "FUJIFILM", "FinePix S6000fd", CoolWhiteFluorescent, 0, { 1.598214, 1, 2.038691, 0 } }, - { "FUJIFILM", "FinePix S6000fd", Incandescent, 0, { 1, 1.024390, 2.466463, 0 } }, - - { "FUJIFILM", "FinePix S6500fd", Daylight, 0, { 1.398810, 1, 1.470238, 0 } }, - { "FUJIFILM", "FinePix S6500fd", Shade, 0, { 1.580357, 1, 1.270833, 0 } }, - { "FUJIFILM", "FinePix S6500fd", DaylightFluorescent, 0, { 1.735119, 1, 1.348214, 0 } }, - { "FUJIFILM", "FinePix S6500fd", WarmWhiteFluorescent, 0, { 1.455357, 1, 1.672619, 0 } }, - { "FUJIFILM", "FinePix S6500fd", CoolWhiteFluorescent, 0, { 1.482143, 1, 2.089286, 0 } }, - { "FUJIFILM", "FinePix S6500fd", Incandescent, 0, { 1, 1.123746, 2.769231, 0 } }, - - { "FUJIFILM", "FinePix S7000", Daylight, 0, { 1.900000, 1, 1.525000, 0 } }, - { "FUJIFILM", "FinePix S7000", Shade, 0, { 2.137500, 1, 1.350000, 0 } }, - { "FUJIFILM", "FinePix S7000", DaylightFluorescent, 0, { 2.315217, 1, 1.347826, 0 } }, - { "FUJIFILM", "FinePix S7000", WarmWhiteFluorescent, 0, { 1.902174, 1, 1.663043, 0 } }, - { "FUJIFILM", "FinePix S7000", CoolWhiteFluorescent, 0, { 1.836957, 1, 2.130435, 0 } }, - { "FUJIFILM", "FinePix S7000", Incandescent, 0, { 1.221239, 1, 2.548673, 0 } }, + // Canon EOS M Firmware 1.0.6 + { "Canon", "EOS M", Cloudy, 0, { 2.156250, 1, 1.448242, 0 } }, + { "Canon", "EOS M", Daylight, 0, { 2.007813, 1, 1.575195, 0 } }, + { "Canon", "EOS M", Flash, 0, { 2.230469, 1, 1.429688, 0 } }, + { "Canon", "EOS M", Tungsten, 0, { 1.448242, 1, 2.386719, 0 } }, + { "Canon", "EOS M", Shade, 0, { 2.300781, 1, 1.334961, 0 } }, + { "Canon", "EOS M", Fluorescent, 0, { 1.784180, 1, 2.275391, 0 } }, + + { "FUJIFILM", "E900", Daylight, 0, { 1.571875, 1, 1.128125, 0 } }, + { "FUJIFILM", "E900", Shade, 0, { 1.668750, 1, 1.006250, 0 } }, + { "FUJIFILM", "E900", DaylightFluorescent, 0, { 1.907609, 1, 1.016304, 0 } }, + { "FUJIFILM", "E900", WarmWhiteFluorescent, 0, { 1.654891, 1, 1.241848, 0 } }, + { "FUJIFILM", "E900", CoolWhiteFluorescent, 0, { 1.554348, 1, 1.519022, 0 } }, + { "FUJIFILM", "E900", Incandescent, 0, { 1.037611, 1, 1.842920, 0 } }, + + { "FUJIFILM", "F700", Daylight, 0, { 1.725000, 1, 1.500000, 0 } }, + { "FUJIFILM", "F700", Shade, 0, { 1.950000, 1, 1.325000, 0 } }, + { "FUJIFILM", "F700", DaylightFluorescent, 0, { 2.032609, 1, 1.336957, 0 } }, + { "FUJIFILM", "F700", WarmWhiteFluorescent, 0, { 1.706522, 1, 1.663043, 0 } }, + { "FUJIFILM", "F700", CoolWhiteFluorescent, 0, { 1.684783, 1, 2.152174, 0 } }, + { "FUJIFILM", "F700", Incandescent, 0, { 1.168142, 1, 2.477876, 0 } }, + + { "FUJIFILM", "HS20EXR", Daylight, 0, { 1.4107, 1, 1.9702, 0 } }, + { "FUJIFILM", "HS20EXR", Shade, 0, { 1.5804, 1, 1.7440, 0 } }, + { "FUJIFILM", "HS20EXR", DaylightFluorescent, 0, { 1.7292, 1, 1.7470, 0 } }, + { "FUJIFILM", "HS20EXR", WarmWhiteFluorescent, 0, { 1.4821, 1, 2.0476, 0 } }, + { "FUJIFILM", "HS20EXR", CoolWhiteFluorescent, 0, { 1.5625, 1, 2.5714, 0 } }, + { "FUJIFILM", "HS20EXR", Incandescent, 0, { 1, 1.0633, 2.9430, 0 } }, + + { "FUJIFILM", "S100FS", Daylight, 0, { 1.702381, 1, 1.845238, 0 } }, + { "FUJIFILM", "S100FS", Shade, 0, { 1.830357, 1, 1.601190, 0 } }, + { "FUJIFILM", "S100FS", DaylightFluorescent, 0, { 1.895833, 1, 1.461309, 0 } }, + { "FUJIFILM", "S100FS", WarmWhiteFluorescent, 0, { 1.574405, 1, 1.818452, 0 } }, + { "FUJIFILM", "S100FS", CoolWhiteFluorescent, 0, { 1.663690, 1, 2.309524, 0 } }, + { "FUJIFILM", "S100FS", Incandescent, 0, { 1.107143, 1, 2.815476, 0 } }, + + { "FUJIFILM", "S20Pro", Daylight, 0, { 1.712500, 1, 1.500000, 0 } }, + { "FUJIFILM", "S20Pro", Cloudy, 0, { 1.887500, 1, 1.262500, 0 } }, + { "FUJIFILM", "S20Pro", DaylightFluorescent, 0, { 2.097826, 1, 1.304348, 0 } }, + { "FUJIFILM", "S20Pro", WarmWhiteFluorescent, 0, { 1.782609, 1, 1.619565, 0 } }, + { "FUJIFILM", "S20Pro", CoolWhiteFluorescent, 0, { 1.670213, 1, 2.063830, 0 } }, + { "FUJIFILM", "S20Pro", Incandescent, 0, { 1.069565, 1, 2.486957, 0 } }, + + { "FUJIFILM", "S2Pro", Daylight, 0, { 1.509804, 1, 1.401961, 0 } }, + { "FUJIFILM", "S2Pro", Cloudy, 0, { 1.666667, 1, 1.166667, 0 } }, + { "FUJIFILM", "S2Pro", Flash, 0, { 1, 1.014084, 2.542253, 0 } }, + { "FUJIFILM", "S2Pro", DaylightFluorescent, 0, { 1.948718, 1, 1.230769, 0 } }, + { "FUJIFILM", "S2Pro", WarmWhiteFluorescent, 0, { 1.675214, 1, 1.572650, 0 } }, + { "FUJIFILM", "S2Pro", CoolWhiteFluorescent, 0, { 1.649573, 1, 2.094017, 0 } }, + + { "FUJIFILM", "S5000", Incandescent, 0, { 1.212081, 1, 2.672364, 0 } }, + { "FUJIFILM", "S5000", Fluorescent, 0, { 1.772316, 1, 2.349902, 0 } }, + { "FUJIFILM", "S5000", Daylight, 0, { 1.860403, 1, 1.515946, 0 } }, + { "FUJIFILM", "S5000", Flash, 0, { 2.202181, 1, 1.423284, 0 } }, + { "FUJIFILM", "S5000", Cloudy, 0, { 2.036578, 1, 1.382513, 0 } }, + { "FUJIFILM", "S5000", Shade, 0, { 2.357215, 1, 1.212016, 0 } }, + + { "FUJIFILM", "S5200", Daylight, 0, { 1.587500, 1, 1.381250, 0 } }, + { "FUJIFILM", "S5200", Shade, 0, { 1.946875, 1, 1.175000, 0 } }, + { "FUJIFILM", "S5200", DaylightFluorescent, 0, { 1.948370, 1, 1.187500, 0 } }, + { "FUJIFILM", "S5200", WarmWhiteFluorescent, 0, { 1.682065, 1, 1.437500, 0 } }, + { "FUJIFILM", "S5200", CoolWhiteFluorescent, 0, { 1.595109, 1, 1.839674, 0 } }, + { "FUJIFILM", "S5200", Incandescent, 0, { 1.077434, 1, 2.170354, 0 } }, + + { "FUJIFILM", "S5500", Daylight, 0, { 1.712500, 1, 1.550000, 0 } }, + { "FUJIFILM", "S5500", Shade, 0, { 1.912500, 1, 1.375000, 0 } }, + { "FUJIFILM", "S5500", DaylightFluorescent, 0, { 1.978261, 1, 1.380435, 0 } }, + { "FUJIFILM", "S5500", WarmWhiteFluorescent, 0, { 1.673913, 1, 1.673913, 0 } }, + { "FUJIFILM", "S5500", CoolWhiteFluorescent, 0, { 1.663043, 1, 2.163043, 0 } }, + { "FUJIFILM", "S5500", Incandescent, 0, { 1.115044, 1, 2.566372, 0 } }, + + { "FUJIFILM", "S5600", Daylight, 0, { 1.587500, 1, 1.381250, 0 } }, + { "FUJIFILM", "S5600", Shade, 0, { 1.946875, 1, 1.175000, 0 } }, + { "FUJIFILM", "S5600", DaylightFluorescent, 0, { 1.948370, 1, 1.187500, 0 } }, + { "FUJIFILM", "S5600", WarmWhiteFluorescent, 0, { 1.682065, 1, 1.437500, 0 } }, + { "FUJIFILM", "S5600", CoolWhiteFluorescent, 0, { 1.595109, 1, 1.839674, 0 } }, + { "FUJIFILM", "S5600", Incandescent, 0, { 1.077434, 1, 2.170354, 0 } }, + + { "FUJIFILM", "S6000fd", Daylight, 0, { 1.511905, 1, 1.431548, 0 } }, + { "FUJIFILM", "S6000fd", Shade, 0, { 1.699405, 1, 1.232143, 0 } }, + { "FUJIFILM", "S6000fd", DaylightFluorescent, 0, { 1.866071, 1, 1.309524, 0 } }, + { "FUJIFILM", "S6000fd", WarmWhiteFluorescent, 0, { 1.568452, 1, 1.627976, 0 } }, + { "FUJIFILM", "S6000fd", CoolWhiteFluorescent, 0, { 1.598214, 1, 2.038691, 0 } }, + { "FUJIFILM", "S6000fd", Incandescent, 0, { 1, 1.024390, 2.466463, 0 } }, + + { "FUJIFILM", "S6500fd", Daylight, 0, { 1.398810, 1, 1.470238, 0 } }, + { "FUJIFILM", "S6500fd", Shade, 0, { 1.580357, 1, 1.270833, 0 } }, + { "FUJIFILM", "S6500fd", DaylightFluorescent, 0, { 1.735119, 1, 1.348214, 0 } }, + { "FUJIFILM", "S6500fd", WarmWhiteFluorescent, 0, { 1.455357, 1, 1.672619, 0 } }, + { "FUJIFILM", "S6500fd", CoolWhiteFluorescent, 0, { 1.482143, 1, 2.089286, 0 } }, + { "FUJIFILM", "S6500fd", Incandescent, 0, { 1, 1.123746, 2.769231, 0 } }, + + { "FUJIFILM", "S7000", Daylight, 0, { 1.900000, 1, 1.525000, 0 } }, + { "FUJIFILM", "S7000", Shade, 0, { 2.137500, 1, 1.350000, 0 } }, + { "FUJIFILM", "S7000", DaylightFluorescent, 0, { 2.315217, 1, 1.347826, 0 } }, + { "FUJIFILM", "S7000", WarmWhiteFluorescent, 0, { 1.902174, 1, 1.663043, 0 } }, + { "FUJIFILM", "S7000", CoolWhiteFluorescent, 0, { 1.836957, 1, 2.130435, 0 } }, + { "FUJIFILM", "S7000", Incandescent, 0, { 1.221239, 1, 2.548673, 0 } }, /* The S9000 and S9500 are the same camera */ - { "FUJIFILM", "FinePix S9000", Daylight, 0, { 1.618750, 1, 1.231250, 0 } }, - { "FUJIFILM", "FinePix S9000", Cloudy, 0, { 1.700000, 1, 1.046875, 0 } }, - { "FUJIFILM", "FinePix S9000", DaylightFluorescent, 0, { 1.902174, 1, 1.057065, 0 } }, - { "FUJIFILM", "FinePix S9000", WarmWhiteFluorescent, 0, { 1.633152, 1, 1.293478, 0 } }, - { "FUJIFILM", "FinePix S9000", CoolWhiteFluorescent, 0, { 1.546196, 1, 1.622283, 0 } }, - { "FUJIFILM", "FinePix S9000", Incandescent, 0, { 1.064159, 1, 1.960177, 0 } }, - - { "FUJIFILM", "FinePix S9500", Daylight, 0, { 1.618750, 1, 1.231250, 0 } }, - { "FUJIFILM", "FinePix S9500", Cloudy, 0, { 1.700000, 1, 1.046875, 0 } }, - { "FUJIFILM", "FinePix S9500", DaylightFluorescent, 0, { 1.902174, 1, 1.057065, 0 } }, - { "FUJIFILM", "FinePix S9500", WarmWhiteFluorescent, 0, { 1.633152, 1, 1.293478, 0 } }, - { "FUJIFILM", "FinePix S9500", CoolWhiteFluorescent, 0, { 1.546196, 1, 1.622283, 0 } }, - { "FUJIFILM", "FinePix S9500", Incandescent, 0, { 1.064159, 1, 1.960177, 0 } }, - - { "FUJIFILM", "FinePix S9100", Daylight, 0, { 1.506250, 1, 1.318750 } }, - { "FUJIFILM", "FinePix S9100", Cloudy, 0, { 1.587500, 1, 1.128125 } }, - { "FUJIFILM", "FinePix S9100", DaylightFluorescent, 0, { 1.777174, 1, 1.138587 } }, - { "FUJIFILM", "FinePix S9100", WarmWhiteFluorescent, 0, { 1.521739, 1, 1.380435 } }, - { "FUJIFILM", "FinePix S9100", CoolWhiteFluorescent, 0, { 1.437500, 1, 1.720109 } }, - { "FUJIFILM", "FinePix S9100", Incandescent, 0, { 1, 1.024943, 2.113379 } }, - - { "FUJIFILM", "FinePix S9600", Daylight, 0, { 1.534375, 1, 1.300000 } }, - { "FUJIFILM", "FinePix S9600", Shade, 0, { 1.615625, 1, 1.112500 } }, - { "FUJIFILM", "FinePix S9600", DaylightFluorescent, 0, { 1.809783, 1, 1.122283 } }, - { "FUJIFILM", "FinePix S9600", WarmWhiteFluorescent, 0, { 1.551630, 1, 1.361413 } }, - { "FUJIFILM", "FinePix S9600", CoolWhiteFluorescent, 0, { 1.467391, 1, 1.692935 } }, - { "FUJIFILM", "FinePix S9600", Incandescent, 0, { 1, 1.004444, 2.040000 } }, + { "FUJIFILM", "S9000", Daylight, 0, { 1.618750, 1, 1.231250, 0 } }, + { "FUJIFILM", "S9000", Cloudy, 0, { 1.700000, 1, 1.046875, 0 } }, + { "FUJIFILM", "S9000", DaylightFluorescent, 0, { 1.902174, 1, 1.057065, 0 } }, + { "FUJIFILM", "S9000", WarmWhiteFluorescent, 0, { 1.633152, 1, 1.293478, 0 } }, + { "FUJIFILM", "S9000", CoolWhiteFluorescent, 0, { 1.546196, 1, 1.622283, 0 } }, + { "FUJIFILM", "S9000", Incandescent, 0, { 1.064159, 1, 1.960177, 0 } }, + + { "FUJIFILM", "S9100", Daylight, 0, { 1.506250, 1, 1.318750, 0 } }, + { "FUJIFILM", "S9100", Cloudy, 0, { 1.587500, 1, 1.128125, 0 } }, + { "FUJIFILM", "S9100", DaylightFluorescent, 0, { 1.777174, 1, 1.138587, 0 } }, + { "FUJIFILM", "S9100", WarmWhiteFluorescent, 0, { 1.521739, 1, 1.380435, 0 } }, + { "FUJIFILM", "S9100", CoolWhiteFluorescent, 0, { 1.437500, 1, 1.720109, 0 } }, + { "FUJIFILM", "S9100", Incandescent, 0, { 1, 1.024943, 2.113379, 0 } }, + + /* The S9000 and S9500 are the same camera */ + { "FUJIFILM", "S9500", Daylight, 0, { 1.618750, 1, 1.231250, 0 } }, + { "FUJIFILM", "S9500", Cloudy, 0, { 1.700000, 1, 1.046875, 0 } }, + { "FUJIFILM", "S9500", DaylightFluorescent, 0, { 1.902174, 1, 1.057065, 0 } }, + { "FUJIFILM", "S9500", WarmWhiteFluorescent, 0, { 1.633152, 1, 1.293478, 0 } }, + { "FUJIFILM", "S9500", CoolWhiteFluorescent, 0, { 1.546196, 1, 1.622283, 0 } }, + { "FUJIFILM", "S9500", Incandescent, 0, { 1.064159, 1, 1.960177, 0 } }, + + { "FUJIFILM", "S9600", Daylight, 0, { 1.534375, 1, 1.300000, 0 } }, + { "FUJIFILM", "S9600", Shade, 0, { 1.615625, 1, 1.112500, 0 } }, + { "FUJIFILM", "S9600", DaylightFluorescent, 0, { 1.809783, 1, 1.122283, 0 } }, + { "FUJIFILM", "S9600", WarmWhiteFluorescent, 0, { 1.551630, 1, 1.361413, 0 } }, + { "FUJIFILM", "S9600", CoolWhiteFluorescent, 0, { 1.467391, 1, 1.692935, 0 } }, + { "FUJIFILM", "S9600", Incandescent, 0, { 1, 1.004444, 2.040000, 0 } }, + + { "FUJIFILM", "X100", Daylight, 0, { 1.4503, 1, 1.5033, 0 } }, + { "FUJIFILM", "X100", Shade, 0, { 1.5861, 1, 1.2947, 0 } }, + { "FUJIFILM", "X100", DaylightFluorescent, 0, { 1.8841, 1, 1.3179, 0 } }, + { "FUJIFILM", "X100", WarmWhiteFluorescent, 0, { 1.6291, 1, 1.5927, 0 } }, + { "FUJIFILM", "X100", CoolWhiteFluorescent, 0, { 1.5662, 1, 2.0265, 0 } }, + { "FUJIFILM", "X100", Incandescent, 0, { 1, 1.0272, 2.4966, 0 } }, + { "FUJIFILM", "X100", Underwater, 0, { 1.4603, 1, 1.5662, 0 } }, + { "FUJIFILM", "X100", "2500K", 0, { 1, 1.6503, 5.1858, 0 } }, + { "FUJIFILM", "X100", "2550K", 0, { 1, 1.5729, 4.7917, 0 } }, + { "FUJIFILM", "X100", "2650K", 0, { 1, 1.4313, 4.1090, 0 } }, + { "FUJIFILM", "X100", "2700K", 0, { 1, 1.3790, 3.8447, 0 } }, + { "FUJIFILM", "X100", "2800K", 0, { 1, 1.2797, 3.3814, 0 } }, + { "FUJIFILM", "X100", "2850K", 0, { 1, 1.2377, 3.1844, 0 } }, + { "FUJIFILM", "X100", "2950K", 0, { 1, 1.1660, 2.8571, 0 } }, + { "FUJIFILM", "X100", "3000K", 0, { 1, 1.1353, 2.7180, 0 } }, + { "FUJIFILM", "X100", "3100K", 0, { 1, 1.0824, 2.4731, 0 } }, + { "FUJIFILM", "X100", "3200K", 0, { 1, 1.0342, 2.2671, 0 } }, + { "FUJIFILM", "X100", "3300K", 0, { 1.0066, 1, 2.1060, 0 } }, + { "FUJIFILM", "X100", "3400K", 0, { 1.0430, 1, 2.0265, 0 } }, + { "FUJIFILM", "X100", "3600K", 0, { 1.1159, 1, 1.8907, 0 } }, + { "FUJIFILM", "X100", "3700K", 0, { 1.1457, 1, 1.8311, 0 } }, + { "FUJIFILM", "X100", "3800K", 0, { 1.1755, 1, 1.7781, 0 } }, + { "FUJIFILM", "X100", "4000K", 0, { 1.2351, 1, 1.6821, 0 } }, + { "FUJIFILM", "X100", "4200K", 0, { 1.2848, 1, 1.5993, 0 } }, + { "FUJIFILM", "X100", "4300K", 0, { 1.3079, 1, 1.5662, 0 } }, + { "FUJIFILM", "X100", "4500K", 0, { 1.3543, 1, 1.5000, 0 } }, + { "FUJIFILM", "X100", "4800K", 0, { 1.4172, 1, 1.4205, 0 } }, + { "FUJIFILM", "X100", "5000K", 0, { 1.4536, 1, 1.3742, 0 } }, + { "FUJIFILM", "X100", "5300K", 0, { 1.5033, 1, 1.3179, 0 } }, + { "FUJIFILM", "X100", "5600K", 0, { 1.5530, 1, 1.2715, 0 } }, + { "FUJIFILM", "X100", "5900K", 0, { 1.5927, 1, 1.2318, 0 } }, + { "FUJIFILM", "X100", "6300K", 0, { 1.6457, 1, 1.1887, 0 } }, + { "FUJIFILM", "X100", "6700K", 0, { 1.6921, 1, 1.1556, 0 } }, + { "FUJIFILM", "X100", "7100K", 0, { 1.7318, 1, 1.1291, 0 } }, + { "FUJIFILM", "X100", "7700K", 0, { 1.7881, 1, 1.0960, 0 } }, + { "FUJIFILM", "X100", "8300K", 0, { 1.8377, 1, 1.0728, 0 } }, + { "FUJIFILM", "X100", "9100K", 0, { 1.8940, 1, 1.0464, 0 } }, + { "FUJIFILM", "X100", "10000K", 0, { 1.9503, 1, 1.0298, 0 } }, { "KODAK", "P850 ZOOM", Daylight, 0, { 1.859375, 1, 1.566406, 0 } }, { "KODAK", "P850 ZOOM", Cloudy, 0, { 1.960938, 1, 1.570313, 0 } }, @@ -1146,6 +1920,14 @@ { "Leica Camera AG", "M8 Digital Camera", Shade, 0, { 2.197754, 1, 1.111084, 0 } }, { "Leica Camera AG", "M8 Digital Camera", Tungsten, 0, { 1.160034, 1, 2.028381, 0 } }, + { "Leica", "M9 Digital Camera", Tungsten, 0, { 1.321288, 1, 2.077024, 0 } }, + { "Leica", "M9 Digital Camera", Fluorescent, 0, { 1.673827, 1, 1.855043, 0 } }, + { "Leica", "M9 Digital Camera", DaylightFluorescent, 0, { 2.224852, 1, 1.388000, 0 } }, + { "Leica", "M9 Digital Camera", Daylight, 0, { 2.013733, 1, 1.364869, 0 } }, + { "Leica", "M9 Digital Camera", Flash, 0, { 1.980652, 1, 1.331111, 0 } }, + { "Leica", "M9 Digital Camera", Cloudy, 0, { 2.146728, 1, 1.252197, 0 } }, + { "Leica", "M9 Digital Camera", Shade, 0, { 2.249268, 1, 1.179015, 0 } }, + { "Leica Camera AG", "R8 - Digital Back DMR", Incandescent, 0, { 1, 1.109985, 2.430664, 0 } }, { "Leica Camera AG", "R8 - Digital Back DMR", Fluorescent, 0, { 1.234985, 1, 1.791138, 0 } }, { "Leica Camera AG", "R8 - Digital Back DMR", Daylight, 0, { 1.459961, 1, 1.184937, 0 } }, @@ -1496,6 +2278,44 @@ { "MINOLTA", "DYNAX 7D", "9800K", 0, { 2.226562, 1, 1.144531, 0 } }, { "MINOLTA", "DYNAX 7D", "9900K", 0, { 2.242188, 1, 1.144531, 0 } }, + // copied from NIKON 1 V1 + { "NIKON", "1 J1", Incandescent, 0, { 1.210938, 1, 2.308594, 0 } }, + { "NIKON", "1 J1", CoolWhiteFluorescent, 0, { 1.687500, 1, 2.199219, 0 } }, + { "NIKON", "1 J1", DirectSunlight, 0, { 1.828125, 1, 1.550781, 0 } }, + { "NIKON", "1 J1", Flash, 0, { 2.101563, 1, 1.335938, 0 } }, + { "NIKON", "1 J1", Cloudy, 0, { 1.960938, 1, 1.406250, 0 } }, + { "NIKON", "1 J1", Shade, 0, { 2.257813, 1, 1.277344, 0 } }, + + { "NIKON", "1 V1", Incandescent, 0, { 1.210938, 1, 2.308594, 0 } }, + { "NIKON", "1 V1", CoolWhiteFluorescent, 0, { 1.687500, 1, 2.199219, 0 } }, + { "NIKON", "1 V1", DirectSunlight, 0, { 1.828125, 1, 1.550781, 0 } }, + { "NIKON", "1 V1", Flash, 0, { 2.101563, 1, 1.335938, 0 } }, + { "NIKON", "1 V1", Cloudy, 0, { 1.960938, 1, 1.406250, 0 } }, + { "NIKON", "1 V1", Shade, 0, { 2.257813, 1, 1.277344, 0 } }, + + // Fine tuning is from A6 to B6 on amber-blue. + { "NIKON", "COOLPIX P7100", DirectSunlight, -6, { 1.7908, 1, 1.9042, 0 } }, + { "NIKON", "COOLPIX P7100", DirectSunlight, 0, { 1.6500, 1, 2.1349, 0 } }, + { "NIKON", "COOLPIX P7100", DirectSunlight, 6, { 1.5171, 1, 2.3891, 0 } }, + { "NIKON", "COOLPIX P7100", Incandescent, -6, { 1.2708, 1, 3.0068, 0 } }, + { "NIKON", "COOLPIX P7100", Incandescent, 0, { 1.1730, 1, 3.3705, 0 } }, + { "NIKON", "COOLPIX P7100", Incandescent, 6, { 1.0753, 1, 3.7693, 0 } }, + { "NIKON", "COOLPIX P7100", WhiteFluorescent, -6, { 2.0020, 1, 2.6158, 0 } }, + { "NIKON", "COOLPIX P7100", WhiteFluorescent, 0, { 1.8456, 1, 2.9326, 0 } }, + { "NIKON", "COOLPIX P7100", WhiteFluorescent, 6, { 1.6970, 1, 3.2805, 0 } }, + { "NIKON", "COOLPIX P7100", DayWhiteFluorescent, -6, { 1.9707, 1, 1.9003, 0 } }, + { "NIKON", "COOLPIX P7100", DayWhiteFluorescent, 0, { 1.8182, 1, 2.1310, 0 } }, + { "NIKON", "COOLPIX P7100", DayWhiteFluorescent, 6, { 1.6696, 1, 2.3812, 0 } }, + { "NIKON", "COOLPIX P7100", DaylightFluorescent, -6, { 2.3069, 1, 1.5601, 0 } }, + { "NIKON", "COOLPIX P7100", DaylightFluorescent, 0, { 2.1271, 1, 1.7517, 0 } }, + { "NIKON", "COOLPIX P7100", DaylightFluorescent, 6, { 1.9550, 1, 1.9589, 0 } }, + { "NIKON", "COOLPIX P7100", Cloudy, -6, { 1.9707, 1, 1.6540, 0 } }, + { "NIKON", "COOLPIX P7100", Cloudy, 0, { 1.8182, 1, 1.8534, 0 } }, + { "NIKON", "COOLPIX P7100", Cloudy, 6, { 1.6696, 1, 2.0723, 0 } }, + { "NIKON", "COOLPIX P7100", Flash, -6, { 2.3148, 1, 1.4780, 0 } }, + { "NIKON", "COOLPIX P7100", Flash, 0, { 2.1349, 1, 1.6579, 0 } }, + { "NIKON", "COOLPIX P7100", Flash, 6, { 1.9629, 1, 1.8534, 0 } }, + { "NIKON", "D1", Incandescent, -3, { 1, 1.439891, 2.125769, 0 } }, { "NIKON", "D1", Incandescent, 0, { 1, 1.582583, 2.556096, 0 } }, { "NIKON", "D1", Incandescent, 3, { 1, 1.745033, 3.044175, 0 } }, @@ -1834,6 +2654,48 @@ { "NIKON", "D3X", "9090K", 0, { 2.878906, 1, 1.113281, 0 } }, { "NIKON", "D3X", "10000K", 0, { 3.000000, 1, 1.062500, 0 } }, + { "NIKON", "D4", Incandescent, 0, { 1.281250, 1, 2.371094, 0 } }, + { "NIKON", "D4", SodiumVaporFluorescent, 0, { 1.195313, 1, 2.589844, 0 } }, + { "NIKON", "D4", WarmWhiteFluorescent, 0, { 1.277344, 1, 2.109375, 0 } }, + { "NIKON", "D4", WhiteFluorescent, 0, { 1.488281, 1, 2.476563, 0 } }, + { "NIKON", "D4", CoolWhiteFluorescent, 0, { 1.855469, 1, 2.156250, 0 } }, + { "NIKON", "D4", DayWhiteFluorescent, 0, { 1.867188, 1, 1.476563, 0 } }, + { "NIKON", "D4", DaylightFluorescent, 0, { 2.132813, 1, 1.156250, 0 } }, + { "NIKON", "D4", HighTempMercuryVaporFluorescent, 0, { 2.546875, 1, 1.425781, 0 } }, + { "NIKON", "D4", DirectSunlight, 0, { 2.019531, 1, 1.437500, 0 } }, + { "NIKON", "D4", Flash, 0, { 2.300781, 1, 1.253906, 0 } }, + { "NIKON", "D4", Cloudy, 0, { 2.175781, 1, 1.300781, 0 } }, + { "NIKON", "D4", Shade, 0, { 2.511719, 1, 1.164063, 0 } }, + { "NIKON", "D4", "2500K", 0, { 1.097656, 1, 3.027344, 0 } }, + { "NIKON", "D4", "2600K", 0, { 1.132813, 1, 2.859375, 0 } }, + { "NIKON", "D4", "2700K", 0, { 1.167969, 1, 2.710938, 0 } }, + { "NIKON", "D4", "2800K", 0, { 1.207031, 1, 2.582031, 0 } }, + { "NIKON", "D4", "2900K", 0, { 1.246094, 1, 2.464844, 0 } }, + { "NIKON", "D4", "3000K", 0, { 1.281250, 1, 2.363281, 0 } }, + { "NIKON", "D4", "3200K", 0, { 1.355469, 1, 2.195313, 0 } }, + { "NIKON", "D4", "3400K", 0, { 1.425781, 1, 2.054688, 0 } }, + { "NIKON", "D4", "3600K", 0, { 1.496094, 1, 1.929688, 0 } }, + { "NIKON", "D4", "3800K", 0, { 1.558594, 1, 1.812500, 0 } }, + { "NIKON", "D4", "4000K", 0, { 1.628906, 1, 1.718750, 0 } }, + { "NIKON", "D4", "4200K", 0, { 1.703125, 1, 1.660156, 0 } }, + { "NIKON", "D4", "4400K", 0, { 1.781250, 1, 1.621094, 0 } }, + { "NIKON", "D4", "4600K", 0, { 1.859375, 1, 1.589844, 0 } }, + { "NIKON", "D4", "4800K", 0, { 1.921875, 1, 1.539063, 0 } }, + { "NIKON", "D4", "5000K", 0, { 1.972656, 1, 1.488281, 0 } }, + { "NIKON", "D4", "5300K", 0, { 2.039063, 1, 1.417969, 0 } }, + { "NIKON", "D4", "5600K", 0, { 2.097656, 1, 1.359375, 0 } }, + { "NIKON", "D4", "5900K", 0, { 2.152344, 1, 1.308594, 0 } }, + { "NIKON", "D4", "6200K", 0, { 2.207031, 1, 1.273438, 0 } }, + { "NIKON", "D4", "6500K", 0, { 2.261719, 1, 1.242188, 0 } }, + { "NIKON", "D4", "6800K", 0, { 2.312500, 1, 1.222656, 0 } }, + { "NIKON", "D4", "7100K", 0, { 2.363281, 1, 1.203125, 0 } }, + { "NIKON", "D4", "7500K", 0, { 2.433594, 1, 1.183594, 0 } }, + { "NIKON", "D4", "8000K", 0, { 2.511719, 1, 1.160156, 0 } }, + { "NIKON", "D4", "8500K", 0, { 2.589844, 1, 1.140625, 0 } }, + { "NIKON", "D4", "9000K", 0, { 2.660156, 1, 1.117188, 0 } }, + { "NIKON", "D4", "9500K", 0, { 2.730469, 1, 1.093750, 0 } }, + { "NIKON", "D4", "10000K", 0, { 2.792969, 1, 1.066406, 0 } }, + { "NIKON", "D100", Incandescent, -3, { 1.527344, 1, 2.539062, 0 } }, /*3300K*/ { "NIKON", "D100", Incandescent, -2, { 1.476562, 1, 2.656250, 0 } }, /*3200K*/ { "NIKON", "D100", Incandescent, -1, { 1.457031, 1, 2.707031, 0 } }, /*3100K*/ @@ -2178,6 +3040,19 @@ { "NIKON", "D300S", HighTempMercuryVaporFluorescent, 0, { 1.961, 1, 1.328, 0 } }, { "NIKON", "D300S", HighTempMercuryVaporFluorescent, 6, { 1.855, 1, 1.523, 0 } }, + { "NIKON", "D600", DirectSunlight, 0, { 1.906250, 1, 1.390625, 0 } }, + { "NIKON", "D600", Flash, 0, { 2.136719, 1, 1.214844, 0 } }, + { "NIKON", "D600", Cloudy, 0, { 2.039063, 1, 1.261719, 0 } }, + { "NIKON", "D600", Shade, 0, { 2.328125, 1, 1.136719, 0 } }, + { "NIKON", "D600", Incandescent, 0, { 1.226563, 1, 2.214844, 0 } }, + { "NIKON", "D600", SodiumVaporFluorescent, 0, { 1.148438, 1, 2.433594, 0 } }, + { "NIKON", "D600", WarmWhiteFluorescent, 0, { 1.230469, 1, 1.953125, 0 } }, + { "NIKON", "D600", WhiteFluorescent, 0, { 1.421875, 1, 2.281250, 0 } }, + { "NIKON", "D600", CoolWhiteFluorescent, 0, { 1.730469, 1, 2.003906, 0 } }, + { "NIKON", "D600", DayWhiteFluorescent, 0, { 1.777344, 1, 1.375000, 0 } }, + { "NIKON", "D600", DaylightFluorescent, 0, { 2.039063, 1, 1.117188, 0 } }, + { "NIKON", "D600", HighTempMercuryVaporFluorescent, 0, { 2.332031, 1, 1.355469, 0 } }, + { "NIKON", "D700", DirectSunlight, -6, { 1.980469, 1, 1.199219, 0 } }, { "NIKON", "D700", DirectSunlight, 0, { 1.816406, 1, 1.355469, 0 } }, { "NIKON", "D700", DirectSunlight, 6, { 1.652344, 1, 1.523437, 0 } }, @@ -2245,6 +3120,48 @@ { "NIKON", "D700", "9090K", 0, { 2.382812, 1, 1.035156, 0 } }, { "NIKON", "D700", "10000K", 0, { 2.480469, 1, 1.000000, 0 } }, + { "NIKON", "D800", Incandescent, -6, { 1.39062500, 1, 1.98437500, 0 } }, + { "NIKON", "D800", Incandescent, 0, { 1.28906250, 1, 2.17578125, 0 } }, + { "NIKON", "D800", Incandescent, 6, { 1.19921875, 1, 2.42968750, 0 } }, + { "NIKON", "D800", CoolWhiteFluorescent, -6, { 2.00390625, 1, 1.76953125, 0 } }, + { "NIKON", "D800", CoolWhiteFluorescent, 0, { 1.76562500, 1, 2.00390625, 0 } }, + { "NIKON", "D800", CoolWhiteFluorescent, 6, { 1.48046875, 1, 2.25781250, 0 } }, + { "NIKON", "D800", DirectSunlight, -6, { 2.12890625, 1, 1.23046875, 0 } }, + { "NIKON", "D800", DirectSunlight, 0, { 1.97265625, 1, 1.37500000, 0 } }, + { "NIKON", "D800", DirectSunlight, 6, { 1.80468750, 1, 1.53125000, 0 } }, + { "NIKON", "D800", Flash, -6, { 2.39843750, 1, 1.12500000, 0 } }, + { "NIKON", "D800", Flash, 0, { 2.18750000, 1, 1.20703125, 0 } }, + { "NIKON", "D800", Flash, 6, { 2.02734375, 1, 1.30078125, 0 } }, + { "NIKON", "D800", Cloudy, -6, { 2.29296875, 1, 1.15625000, 0 } }, + { "NIKON", "D800", Cloudy, 0, { 2.10156250, 1, 1.25390625, 0 } }, + { "NIKON", "D800", Cloudy, 6, { 1.94531250, 1, 1.40234375, 0 } }, + { "NIKON", "D800", Shade, -6, { 2.68750000, 1, 1.01562500, 0 } }, + { "NIKON", "D800", Shade, 0, { 2.37890625, 1, 1.12890625, 0 } }, + { "NIKON", "D800", Shade, 6, { 2.16796875, 1, 1.20703125, 0 } }, + { "NIKON", "D800", "2700K", 0, { 1.17968750, 1, 2.48828125, 0 } }, + { "NIKON", "D800", "5000K", 0, { 1.92968750, 1, 1.41796875, 0 } }, + + { "NIKON", "D800E", Incandescent, -6, { 1.39062500, 1, 1.98437500, 0 } }, + { "NIKON", "D800E", Incandescent, 0, { 1.28906250, 1, 2.17578125, 0 } }, + { "NIKON", "D800E", Incandescent, 6, { 1.19921875, 1, 2.42968750, 0 } }, + { "NIKON", "D800E", CoolWhiteFluorescent, -6, { 2.00390625, 1, 1.76953125, 0 } }, + { "NIKON", "D800E", CoolWhiteFluorescent, 0, { 1.76562500, 1, 2.00390625, 0 } }, + { "NIKON", "D800E", CoolWhiteFluorescent, 6, { 1.48046875, 1, 2.25781250, 0 } }, + { "NIKON", "D800E", DirectSunlight, -6, { 2.12890625, 1, 1.23046875, 0 } }, + { "NIKON", "D800E", DirectSunlight, 0, { 1.97265625, 1, 1.37500000, 0 } }, + { "NIKON", "D800E", DirectSunlight, 6, { 1.80468750, 1, 1.53125000, 0 } }, + { "NIKON", "D800E", Flash, -6, { 2.39843750, 1, 1.12500000, 0 } }, + { "NIKON", "D800E", Flash, 0, { 2.18750000, 1, 1.20703125, 0 } }, + { "NIKON", "D800E", Flash, 6, { 2.02734375, 1, 1.30078125, 0 } }, + { "NIKON", "D800E", Cloudy, -6, { 2.29296875, 1, 1.15625000, 0 } }, + { "NIKON", "D800E", Cloudy, 0, { 2.10156250, 1, 1.25390625, 0 } }, + { "NIKON", "D800E", Cloudy, 6, { 1.94531250, 1, 1.40234375, 0 } }, + { "NIKON", "D800E", Shade, -6, { 2.68750000, 1, 1.01562500, 0 } }, + { "NIKON", "D800E", Shade, 0, { 2.37890625, 1, 1.12890625, 0 } }, + { "NIKON", "D800E", Shade, 6, { 2.16796875, 1, 1.20703125, 0 } }, + { "NIKON", "D800E", "2700K", 0, { 1.17968750, 1, 2.48828125, 0 } }, + { "NIKON", "D800E", "5000K", 0, { 1.92968750, 1, 1.41796875, 0 } }, + { "NIKON", "D40", Incandescent, -3, { 1.492188, 1, 2.164063, 0 } }, { "NIKON", "D40", Incandescent, -2, { 1.437500, 1, 2.367188, 0 } }, { "NIKON", "D40", Incandescent, -1, { 1.417969, 1, 2.414062, 0 } }, @@ -2529,6 +3446,19 @@ { "NIKON", "D3100", DaylightFluorescent, 0, { 2.214844, 1, 1.015625, 0 } }, { "NIKON", "D3100", HighTempMercuryVaporFluorescent, 0, { 2.589844, 1, 1.250000, 0 } }, + { "NIKON", "D3200", DirectSunlight, 0, { 2.0508, 1, 1.2734, 0 } }, + { "NIKON", "D3200", Flash, 0, { 2.3203, 1, 1.1484, 0 } }, + { "NIKON", "D3200", Cloudy, 0, { 2.1719, 1, 1.1641, 0 } }, + { "NIKON", "D3200", Shade, 0, { 2.4492, 1, 1.0508, 0 } }, + { "NIKON", "D3200", Incandescent, 0, { 1.3594, 1, 1.9648, 0 } }, + { "NIKON", "D3200", SodiumVaporFluorescent, 0, { 1.2773, 1, 2.0938, 0 } }, + { "NIKON", "D3200", WarmWhiteFluorescent, 0, { 1.3516, 1, 1.7734, 0 } }, + { "NIKON", "D3200", WhiteFluorescent, 0, { 1.5039, 1, 1.9727, 0 } }, + { "NIKON", "D3200", CoolWhiteFluorescent, 0, { 1.8203, 1, 1.7969, 0 } }, + { "NIKON", "D3200", DayWhiteFluorescent, 0, { 1.8789, 1, 1.2617, 0 } }, + { "NIKON", "D3200", DaylightFluorescent, 0, { 2.1094, 1, 1.0313, 0 } }, + { "NIKON", "D3200", HighTempMercuryVaporFluorescent, 0, { 2.4453, 1, 1.2500, 0 } }, + { "NIKON", "D5000", DirectSunlight, 0, { 1.800781, 1, 1.308594, 0 } }, { "NIKON", "D5000", Flash, 0, { 1.976562, 1, 1.152344, 0 } }, { "NIKON", "D5000", Cloudy, 0, { 1.917969, 1, 1.187500, 0 } }, @@ -2542,6 +3472,19 @@ { "NIKON", "D5000", DaylightFluorescent, 0, { 1.925781, 1, 1.074219, 0 } }, { "NIKON", "D5000", HighTempMercuryVaporFluorescent, 0, { 2.207031, 1, 1.292969, 0 } }, + { "NIKON", "D5100", DirectSunlight, 0, { 2.0273, 1, 1.3906, 0 } }, + { "NIKON", "D5100", Flash, 0, { 2.2813, 1, 1.2109, 0 } }, + { "NIKON", "D5100", Cloudy, 0, { 2.1680, 1, 1.2656, 0 } }, + { "NIKON", "D5100", Shade, 0, { 2.4922, 1, 1.1367, 0 } }, + { "NIKON", "D5100", Incandescent, 0, { 1.3047, 1, 2.2148, 0 } }, + { "NIKON", "D5100", SodiumVaporFluorescent, 0, { 1.2031, 1, 2.4375, 0 } }, + { "NIKON", "D5100", WarmWhiteFluorescent, 0, { 1.3008, 1, 1.9648, 0 } }, + { "NIKON", "D5100", WhiteFluorescent, 0, { 1.4961, 1, 2.3047, 0 } }, + { "NIKON", "D5100", CoolWhiteFluorescent, 0, { 1.8320, 1, 2.0273, 0 } }, + { "NIKON", "D5100", DayWhiteFluorescent, 0, { 1.8984, 1, 1.3906, 0 } }, + { "NIKON", "D5100", DaylightFluorescent, 0, { 2.1680, 1, 1.1172, 0 } }, + { "NIKON", "D5100", HighTempMercuryVaporFluorescent, 0, { 2.4844, 1, 1.3672, 0 } }, + { "NIKON", "D7000", DirectSunlight, -6, { 2.199219, 1, 1.242187, 0 } }, { "NIKON", "D7000", DirectSunlight, 0, { 2.027344, 1, 1.390625, 0 } }, { "NIKON", "D7000", DirectSunlight, 6, { 1.847656, 1, 1.542969, 0 } }, @@ -2986,70 +3929,136 @@ { "OLYMPUS", "E-10", Cloudy, 0, { 1.687500, 1, 1.437500, 0 } }, /*6500K*/ { "OLYMPUS", "E-10", Shade, 0, { 1.812500, 1, 1.312500, 0 } }, /*7500K*/ - { "OLYMPUS", "E-3", Daylight, 0, { 2.007813, 1, 1.390625, 0 } }, - { "OLYMPUS", "E-3", Shade, 0, { 2.421875, 1, 1.085937, 0 } }, - { "OLYMPUS", "E-3", Cloudy, 0, { 2.218750, 1, 1.257812, 0 } }, - { "OLYMPUS", "E-3", Incandescent, 0, { 1.156250, 1, 2.679687, 0 } }, - { "OLYMPUS", "E-3", WhiteFluorescent, 0, { 1.828125, 1, 2.078125, 0 } }, - { "OLYMPUS", "E-3", NeutralFluorescent, 0, { 1.867188, 1, 1.679688, 0 } }, - { "OLYMPUS", "E-3", DaylightFluorescent, 0, { 2.195313, 1, 1.406250, 0 } }, - { "OLYMPUS", "E-3", Flash, 0, { 2.210937, 1, 1.265625, 0 } }, - { "OLYMPUS", "E-3", "2000K", 0, { 1, 2.285714, 9.803572, 0 } }, - { "OLYMPUS", "E-3", "2050K", 0, { 1, 2.000000, 8.281250, 0 } }, - { "OLYMPUS", "E-3", "2100K", 0, { 1, 1.802817, 7.239437, 0 } }, - { "OLYMPUS", "E-3", "2150K", 0, { 1, 1.641026, 6.397436, 0 } }, - { "OLYMPUS", "E-3", "2200K", 0, { 1, 1.488372, 5.616279, 0 } }, - { "OLYMPUS", "E-3", "2250K", 0, { 1, 1.391304, 5.086956, 0 } }, - { "OLYMPUS", "E-3", "2300K", 0, { 1, 1.292929, 4.585859, 0 } }, - { "OLYMPUS", "E-3", "2350K", 0, { 1, 1.230769, 4.240385, 0 } }, - { "OLYMPUS", "E-3", "2400K", 0, { 1, 1.163636, 3.890909, 0 } }, - { "OLYMPUS", "E-3", "2450K", 0, { 1, 1.113043, 3.617391, 0 } }, - { "OLYMPUS", "E-3", "2500K", 0, { 1, 1.057851, 3.347108, 0 } }, - { "OLYMPUS", "E-3", "2550K", 0, { 1, 1.015873, 3.119048, 0 } }, - { "OLYMPUS", "E-3", "2600K", 0, { 1.023437, 1, 2.984375, 0 } }, - { "OLYMPUS", "E-3", "2650K", 0, { 1.062500, 1, 2.898438, 0 } }, - { "OLYMPUS", "E-3", "2700K", 0, { 1.093750, 1, 2.820313, 0 } }, - { "OLYMPUS", "E-3", "2750K", 0, { 1.132812, 1, 2.742188, 0 } }, - { "OLYMPUS", "E-3", "2800K", 0, { 1.156250, 1, 2.679687, 0 } }, - { "OLYMPUS", "E-3", "2900K", 0, { 1.218750, 1, 2.539062, 0 } }, - { "OLYMPUS", "E-3", "3000K", 0, { 1.273437, 1, 2.414062, 0 } }, - { "OLYMPUS", "E-3", "3100K", 0, { 1.328125, 1, 2.289063, 0 } }, - { "OLYMPUS", "E-3", "3200K", 0, { 1.382813, 1, 2.171875, 0 } }, - { "OLYMPUS", "E-3", "3300K", 0, { 1.429688, 1, 2.070312, 0 } }, - { "OLYMPUS", "E-3", "3400K", 0, { 1.468750, 1, 2.015625, 0 } }, - { "OLYMPUS", "E-3", "3500K", 0, { 1.507812, 1, 1.953125, 0 } }, - { "OLYMPUS", "E-3", "3600K", 0, { 1.546875, 1, 1.898438, 0 } }, - { "OLYMPUS", "E-3", "3700K", 0, { 1.578125, 1, 1.851563, 0 } }, - { "OLYMPUS", "E-3", "3800K", 0, { 1.609375, 1, 1.804688, 0 } }, - { "OLYMPUS", "E-3", "3900K", 0, { 1.648437, 1, 1.757812, 0 } }, - { "OLYMPUS", "E-3", "4000K", 0, { 1.671875, 1, 1.734375, 0 } }, - { "OLYMPUS", "E-3", "4200K", 0, { 1.718750, 1, 1.679688, 0 } }, - { "OLYMPUS", "E-3", "4400K", 0, { 1.765625, 1, 1.625000, 0 } }, - { "OLYMPUS", "E-3", "4600K", 0, { 1.828125, 1, 1.562500, 0 } }, - { "OLYMPUS", "E-3", "4800K", 0, { 1.890625, 1, 1.500000, 0 } }, - { "OLYMPUS", "E-3", "5000K", 0, { 1.937500, 1, 1.460938, 0 } }, - { "OLYMPUS", "E-3", "5200K", 0, { 1.984375, 1, 1.414063, 0 } }, - { "OLYMPUS", "E-3", "5400K", 0, { 2.031250, 1, 1.375000, 0 } }, - { "OLYMPUS", "E-3", "5600K", 0, { 2.101563, 1, 1.335937, 0 } }, - { "OLYMPUS", "E-3", "5800K", 0, { 2.156250, 1, 1.296875, 0 } }, - { "OLYMPUS", "E-3", "6000K", 0, { 2.218750, 1, 1.257812, 0 } }, - { "OLYMPUS", "E-3", "6200K", 0, { 2.242187, 1, 1.234375, 0 } }, - { "OLYMPUS", "E-3", "6400K", 0, { 2.273437, 1, 1.210938, 0 } }, - { "OLYMPUS", "E-3", "6600K", 0, { 2.304688, 1, 1.179688, 0 } }, - { "OLYMPUS", "E-3", "6800K", 0, { 2.328125, 1, 1.164062, 0 } }, - { "OLYMPUS", "E-3", "7000K", 0, { 2.359375, 1, 1.132813, 0 } }, - { "OLYMPUS", "E-3", "7400K", 0, { 2.406250, 1, 1.101563, 0 } }, - { "OLYMPUS", "E-3", "7800K", 0, { 2.445313, 1, 1.062500, 0 } }, - { "OLYMPUS", "E-3", "8200K", 0, { 2.492188, 1, 1.023438, 0 } }, - { "OLYMPUS", "E-3", "8600K", 0, { 2.523438, 1, 1.000000, 0 } }, - { "OLYMPUS", "E-3", "9000K", 0, { 2.616000, 1.024000, 1, 0 } }, - { "OLYMPUS", "E-3", "9400K", 0, { 2.735537, 1.057851, 1, 0 } }, - { "OLYMPUS", "E-3", "9800K", 0, { 2.806723, 1.075630, 1, 0 } }, - { "OLYMPUS", "E-3", "10000K", 0, { 2.871795, 1.094017, 1, 0 } }, - { "OLYMPUS", "E-3", "11000K", 0, { 3.090090, 1.153153, 1, 0 } }, - { "OLYMPUS", "E-3", "12000K", 0, { 3.292453, 1.207547, 1, 0 } }, - { "OLYMPUS", "E-3", "13000K", 0, { 3.504950, 1.267327, 1, 0 } }, - { "OLYMPUS", "E-3", "14000K", 0, { 3.653061, 1.306122, 1, 0 } }, + /* Firmware version 1.4 */ + { "OLYMPUS", "E-3", Daylight, 0, { 1.7812, 1, 1.4688, 0 } }, + { "OLYMPUS", "E-3", Shade, 0, { 2.1406, 1, 1.1484, 0 } }, + { "OLYMPUS", "E-3", Cloudy, 0, { 1.9531, 1, 1.3359, 0 } }, + { "OLYMPUS", "E-3", Incandescent, 0, { 1.0312, 1, 2.8125, 0 } }, + { "OLYMPUS", "E-3", WhiteFluorescent, 0, { 1.6328, 1, 2.1953, 0 } }, + { "OLYMPUS", "E-3", NeutralFluorescent, 0, { 1.6641, 1, 1.7734, 0 } }, + { "OLYMPUS", "E-3", DaylightFluorescent, 0, { 1.9531, 1, 1.4844, 0 } }, + { "OLYMPUS", "E-3", Flash, 0, { 1.9609, 1, 1.3359, 0 } }, + { "OLYMPUS", "E-3", "2000K", 0, { 1, 2.5600, 11.3600, 0 } }, + { "OLYMPUS", "E-3", "2050K", 0, { 1, 2.2069, 9.4655, 0 } }, + { "OLYMPUS", "E-3", "2100K", 0, { 1, 2.0000, 8.3281, 0 } }, + { "OLYMPUS", "E-3", "2150K", 0, { 1, 1.8286, 7.3857, 0 } }, + { "OLYMPUS", "E-3", "2200K", 0, { 1, 1.6623, 6.4935, 0 } }, + { "OLYMPUS", "E-3", "2250K", 0, { 1, 1.5422, 5.8434, 0 } }, + { "OLYMPUS", "E-3", "2300K", 0, { 1, 1.4545, 5.3523, 0 } }, + { "OLYMPUS", "E-3", "2350K", 0, { 1, 1.3763, 4.9140, 0 } }, + { "OLYMPUS", "E-3", "2400K", 0, { 1, 1.2929, 4.4848, 0 } }, + { "OLYMPUS", "E-3", "2450K", 0, { 1, 1.2427, 4.1942, 0 } }, + { "OLYMPUS", "E-3", "2500K", 0, { 1, 1.1852, 3.8889, 0 } }, + { "OLYMPUS", "E-3", "2550K", 0, { 1, 1.1429, 3.6429, 0 } }, + { "OLYMPUS", "E-3", "2600K", 0, { 1, 1.0940, 3.3932, 0 } }, + { "OLYMPUS", "E-3", "2650K", 0, { 1, 1.0579, 3.1901, 0 } }, + { "OLYMPUS", "E-3", "2700K", 0, { 1, 1.0240, 3.0080, 0 } }, + { "OLYMPUS", "E-3", "2750K", 0, { 1.0078, 1, 2.8516, 0 } }, + { "OLYMPUS", "E-3", "2800K", 0, { 1.0312, 1, 2.7891, 0 } }, + { "OLYMPUS", "E-3", "2900K", 0, { 1.0859, 1, 2.6406, 0 } }, + { "OLYMPUS", "E-3", "3000K", 0, { 1.1328, 1, 2.5156, 0 } }, + { "OLYMPUS", "E-3", "3100K", 0, { 1.1875, 1, 2.3906, 0 } }, + { "OLYMPUS", "E-3", "3200K", 0, { 1.2266, 1, 2.2734, 0 } }, + { "OLYMPUS", "E-3", "3300K", 0, { 1.2734, 1, 2.1641, 0 } }, + { "OLYMPUS", "E-3", "3400K", 0, { 1.3047, 1, 2.1016, 0 } }, + { "OLYMPUS", "E-3", "3500K", 0, { 1.3438, 1, 2.0312, 0 } }, + { "OLYMPUS", "E-3", "3600K", 0, { 1.3750, 1, 1.9687, 0 } }, + { "OLYMPUS", "E-3", "3700K", 0, { 1.4063, 1, 1.9219, 0 } }, + { "OLYMPUS", "E-3", "3800K", 0, { 1.4375, 1, 1.8750, 0 } }, + { "OLYMPUS", "E-3", "3900K", 0, { 1.4687, 1, 1.8281, 0 } }, + { "OLYMPUS", "E-3", "4000K", 0, { 1.4844, 1, 1.8047, 0 } }, + { "OLYMPUS", "E-3", "4200K", 0, { 1.5234, 1, 1.7422, 0 } }, + { "OLYMPUS", "E-3", "4400K", 0, { 1.5703, 1, 1.6875, 0 } }, + { "OLYMPUS", "E-3", "4600K", 0, { 1.6250, 1, 1.6250, 0 } }, + { "OLYMPUS", "E-3", "4800K", 0, { 1.6797, 1, 1.5625, 0 } }, + { "OLYMPUS", "E-3", "5000K", 0, { 1.7266, 1, 1.5156, 0 } }, + { "OLYMPUS", "E-3", "5200K", 0, { 1.7734, 1, 1.4688, 0 } }, + { "OLYMPUS", "E-3", "5400K", 0, { 1.8203, 1, 1.4297, 0 } }, + { "OLYMPUS", "E-3", "5600K", 0, { 1.8750, 1, 1.3906, 0 } }, + { "OLYMPUS", "E-3", "5800K", 0, { 1.9297, 1, 1.3516, 0 } }, + { "OLYMPUS", "E-3", "6000K", 0, { 1.9844, 1, 1.3125, 0 } }, + { "OLYMPUS", "E-3", "6200K", 0, { 2.0078, 1, 1.2891, 0 } }, + { "OLYMPUS", "E-3", "6400K", 0, { 2.0312, 1, 1.2656, 0 } }, + { "OLYMPUS", "E-3", "6600K", 0, { 2.0625, 1, 1.2344, 0 } }, + { "OLYMPUS", "E-3", "6800K", 0, { 2.0859, 1, 1.2109, 0 } }, + { "OLYMPUS", "E-3", "7000K", 0, { 2.1094, 1, 1.1875, 0 } }, + { "OLYMPUS", "E-3", "7400K", 0, { 2.1484, 1, 1.1484, 0 } }, + { "OLYMPUS", "E-3", "7800K", 0, { 2.1875, 1, 1.1094, 0 } }, + { "OLYMPUS", "E-3", "8200K", 0, { 2.2266, 1, 1.0703, 0 } }, + { "OLYMPUS", "E-3", "8600K", 0, { 2.2500, 1, 1.0469, 0 } }, + { "OLYMPUS", "E-3", "9000K", 0, { 2.2813, 1, 1.0156, 0 } }, + { "OLYMPUS", "E-3", "9400K", 0, { 2.3228, 1.0079, 1, 0 } }, + { "OLYMPUS", "E-3", "9800K", 0, { 2.4032, 1.0323, 1, 0 } }, + { "OLYMPUS", "E-3", "10000K", 0, { 2.4590, 1.0492, 1, 0 } }, + { "OLYMPUS", "E-3", "11000K", 0, { 2.6379, 1.1034, 1, 0 } }, + { "OLYMPUS", "E-3", "12000K", 0, { 2.8018, 1.1532, 1, 0 } }, + { "OLYMPUS", "E-3", "13000K", 0, { 2.9811, 1.2075, 1, 0 } }, + { "OLYMPUS", "E-3", "14000K", 0, { 3.1373, 1.2549, 1, 0 } }, + + /* Firmware version 1.3 */ + { "OLYMPUS", "E-5", Daylight, 0, { 1.7344, 1, 1.3203, 0 } }, + { "OLYMPUS", "E-5", Shade, 0, { 2.1016, 1, 1.0313, 0 } }, + { "OLYMPUS", "E-5", Cloudy, 0, { 1.9141, 1, 1.1953, 0 } }, + { "OLYMPUS", "E-5", Incandescent, 0, { 1.0000, 1, 2.3906, 0 } }, + { "OLYMPUS", "E-5", Fluorescent, 0, { 1.6484, 1, 1.9141, 0 } }, + { "OLYMPUS", "E-5", Underwater, 0, { 1.7266, 1, 1.3828, 0 } }, + { "OLYMPUS", "E-5", Flash, 0, { 1.9063, 1, 1.1797, 0 } }, + { "OLYMPUS", "E-5", "2000K", 0, { 1, 2.6122, 9.7959, 0 } }, + { "OLYMPUS", "E-5", "2050K", 0, { 1, 2.2857, 8.2857, 0 } }, + { "OLYMPUS", "E-5", "2100K", 0, { 1, 2.0645, 7.2742, 0 } }, + { "OLYMPUS", "E-5", "2150K", 0, { 1, 1.8824, 6.4412, 0 } }, + { "OLYMPUS", "E-5", "2200K", 0, { 1, 1.7067, 5.6533, 0 } }, + { "OLYMPUS", "E-5", "2250K", 0, { 1, 1.6000, 5.1500, 0 } }, + { "OLYMPUS", "E-5", "2300K", 0, { 1, 1.4884, 4.6512, 0 } }, + { "OLYMPUS", "E-5", "2350K", 0, { 1, 1.4066, 4.2747, 0 } }, + { "OLYMPUS", "E-5", "2400K", 0, { 1, 1.3333, 3.9375, 0 } }, + { "OLYMPUS", "E-5", "2450K", 0, { 1, 1.2800, 3.6800, 0 } }, + { "OLYMPUS", "E-5", "2500K", 0, { 1, 1.2190, 3.4095, 0 } }, + { "OLYMPUS", "E-5", "2550K", 0, { 1, 1.1743, 3.1927, 0 } }, + { "OLYMPUS", "E-5", "2600K", 0, { 1, 1.1327, 3.0000, 0 } }, + { "OLYMPUS", "E-5", "2650K", 0, { 1, 1.0940, 2.8205, 0 } }, + { "OLYMPUS", "E-5", "2700K", 0, { 1, 1.0579, 2.6529, 0 } }, + { "OLYMPUS", "E-5", "2750K", 0, { 1, 1.0240, 2.5040, 0 } }, + { "OLYMPUS", "E-5", "2800K", 0, { 1.0000, 1, 2.3906, 0 } }, + { "OLYMPUS", "E-5", "2900K", 0, { 1.0547, 1, 2.2734, 0 } }, + { "OLYMPUS", "E-5", "3000K", 0, { 1.1016, 1, 2.1641, 0 } }, + { "OLYMPUS", "E-5", "3100K", 0, { 1.1484, 1, 2.0625, 0 } }, + { "OLYMPUS", "E-5", "3200K", 0, { 1.1953, 1, 1.9609, 0 } }, + { "OLYMPUS", "E-5", "3300K", 0, { 1.2344, 1, 1.8750, 0 } }, + { "OLYMPUS", "E-5", "3400K", 0, { 1.2656, 1, 1.8281, 0 } }, + { "OLYMPUS", "E-5", "3500K", 0, { 1.3047, 1, 1.7734, 0 } }, + { "OLYMPUS", "E-5", "3600K", 0, { 1.3359, 1, 1.7188, 0 } }, + { "OLYMPUS", "E-5", "3700K", 0, { 1.3594, 1, 1.6797, 0 } }, + { "OLYMPUS", "E-5", "3800K", 0, { 1.3906, 1, 1.6406, 0 } }, + { "OLYMPUS", "E-5", "3900K", 0, { 1.4219, 1, 1.6016, 0 } }, + { "OLYMPUS", "E-5", "4000K", 0, { 1.4375, 1, 1.5937, 0 } }, + { "OLYMPUS", "E-5", "4200K", 0, { 1.4766, 1, 1.5703, 0 } }, + { "OLYMPUS", "E-5", "4400K", 0, { 1.5234, 1, 1.5313, 0 } }, + { "OLYMPUS", "E-5", "4600K", 0, { 1.5781, 1, 1.4766, 0 } }, + { "OLYMPUS", "E-5", "4800K", 0, { 1.6250, 1, 1.4219, 0 } }, + { "OLYMPUS", "E-5", "5000K", 0, { 1.6641, 1, 1.3828, 0 } }, + { "OLYMPUS", "E-5", "5200K", 0, { 1.7109, 1, 1.3438, 0 } }, + { "OLYMPUS", "E-5", "5400K", 0, { 1.7578, 1, 1.3047, 0 } }, + { "OLYMPUS", "E-5", "5600K", 0, { 1.8125, 1, 1.2656, 0 } }, + { "OLYMPUS", "E-5", "5800K", 0, { 1.8594, 1, 1.2344, 0 } }, + { "OLYMPUS", "E-5", "6000K", 0, { 1.9141, 1, 1.1953, 0 } }, + { "OLYMPUS", "E-5", "6200K", 0, { 1.9375, 1, 1.1719, 0 } }, + { "OLYMPUS", "E-5", "6400K", 0, { 1.9687, 1, 1.1484, 0 } }, + { "OLYMPUS", "E-5", "6600K", 0, { 1.9922, 1, 1.1250, 0 } }, + { "OLYMPUS", "E-5", "6800K", 0, { 2.0156, 1, 1.1016, 0 } }, + { "OLYMPUS", "E-5", "7000K", 0, { 2.0469, 1, 1.0781, 0 } }, + { "OLYMPUS", "E-5", "7400K", 0, { 2.0859, 1, 1.0469, 0 } }, + { "OLYMPUS", "E-5", "7800K", 0, { 2.1250, 1, 1.0078, 0 } }, + { "OLYMPUS", "E-5", "8200K", 0, { 2.2160, 1.0240, 1, 0 } }, + { "OLYMPUS", "E-5", "8600K", 0, { 2.3033, 1.0492, 1, 0 } }, + { "OLYMPUS", "E-5", "9000K", 0, { 2.4153, 1.0847, 1, 0 } }, + { "OLYMPUS", "E-5", "9400K", 0, { 2.5043, 1.1130, 1, 0 } }, + { "OLYMPUS", "E-5", "9800K", 0, { 2.5752, 1.1327, 1, 0 } }, + { "OLYMPUS", "E-5", "10000K", 0, { 2.6396, 1.1532, 1, 0 } }, + { "OLYMPUS", "E-5", "11000K", 0, { 2.8571, 1.2190, 1, 0 } }, + { "OLYMPUS", "E-5", "12000K", 0, { 3.0198, 1.2673, 1, 0 } }, + { "OLYMPUS", "E-5", "13000K", 0, { 3.2292, 1.3333, 1, 0 } }, + { "OLYMPUS", "E-5", "14000K", 0, { 3.3763, 1.3763, 1, 0 } }, { "OLYMPUS", "E-30", Daylight, -7, { 1.554688, 1, 1.515625, 0 } }, { "OLYMPUS", "E-30", Daylight, 0, { 1.812500, 1, 1.335937, 0 } }, @@ -3323,7 +4332,7 @@ { "OLYMPUS", "E-600", DaylightFluorescent, -7, { 2.039063, 1, 1.632813, 0 } }, { "OLYMPUS", "E-600", DaylightFluorescent, 0, { 2.085937, 1, 1.265625, 0 } }, { "OLYMPUS", "E-600", DaylightFluorescent, 7, { 2.193277, 1.075630, 1, 0 } }, - { "OLYMPUS", "E-600", Flash, -7, { 1.992187, 1, 1.492187, 0 } }, + { "OLYMPUS", "E-600", Flash, -7, { 1.992187, 1, 1.492187, 0 } }, { "OLYMPUS", "E-600", Flash, 0, { 2.039063, 1, 1.156250, 0 } }, { "OLYMPUS", "E-600", Flash, 7, { 2.339450, 1.174312, 1, 0 } }, @@ -3349,10 +4358,33 @@ { "OLYMPUS", "E-620", DaylightFluorescent, -7, { 2.000000, 1, 1.687500, 0 } }, { "OLYMPUS", "E-620", DaylightFluorescent, 0, { 2.046875, 1, 1.304687, 0 } }, { "OLYMPUS", "E-620", DaylightFluorescent, 7, { 2.098361, 1.049180, 1, 0 } }, - { "OLYMPUS", "E-620", Flash, -7, { 1.992187, 1, 1.546875, 0 } }, + { "OLYMPUS", "E-620", Flash, -7, { 1.992187, 1, 1.546875, 0 } }, { "OLYMPUS", "E-620", Flash, 0, { 2.039063, 1, 1.195313, 0 } }, { "OLYMPUS", "E-620", Flash, 7, { 2.276786, 1.142857, 1, 0 } }, + /* -7/+7 fine tuning is -7/+7 in amber-blue and zero in green-magenta */ + { "OLYMPUS", "E-M5", Daylight, -7, { 1.8047, 1, 2.0547, 0 } }, + { "OLYMPUS", "E-M5", Daylight, 0, { 2.1016, 1, 1.8047, 0 } }, + { "OLYMPUS", "E-M5", Daylight, 7, { 2.3906, 1, 1.5469, 0 } }, + { "OLYMPUS", "E-M5", Shade, -7, { 2.1484, 1, 1.6172, 0 } }, + { "OLYMPUS", "E-M5", Shade, 0, { 2.5000, 1, 1.4219, 0 } }, + { "OLYMPUS", "E-M5", Shade, 7, { 2.8437, 1, 1.2187, 0 } }, + { "OLYMPUS", "E-M5", Cloudy, -7, { 1.9766, 1, 1.8516, 0 } }, + { "OLYMPUS", "E-M5", Cloudy, 0, { 2.3047, 1, 1.6250, 0 } }, + { "OLYMPUS", "E-M5", Cloudy, 7, { 2.6250, 1, 1.3906, 0 } }, + { "OLYMPUS", "E-M5", Incandescent, -7, { 1.1250, 1, 3.6953, 0 } }, + { "OLYMPUS", "E-M5", Incandescent, 0, { 1.3125, 1, 3.2422, 0 } }, + { "OLYMPUS", "E-M5", Incandescent, 7, { 1.4922, 1, 2.7812, 0 } }, + { "OLYMPUS", "E-M5", Fluorescent, -7, { 1.7344, 1, 2.9375, 0 } }, + { "OLYMPUS", "E-M5", Fluorescent, 0, { 2.0234, 1, 2.5781, 0 } }, + { "OLYMPUS", "E-M5", Fluorescent, 7, { 2.3047, 1, 2.2109, 0 } }, + { "OLYMPUS", "E-M5", Underwater, -7, { 1.3906, 1, 2.8281, 0 } }, + { "OLYMPUS", "E-M5", Underwater, 0, { 1.6250, 1, 2.4844, 0 } }, + { "OLYMPUS", "E-M5", Underwater, 7, { 1.8516, 1, 2.1328, 0 } }, + { "OLYMPUS", "E-M5", Flash, -7, { 2.0391, 1, 1.8203, 0 } }, + { "OLYMPUS", "E-M5", Flash, 0, { 2.3750, 1, 1.6016, 0 } }, + { "OLYMPUS", "E-M5", Flash, 7, { 2.7031, 1, 1.3750, 0 } }, + { "OLYMPUS", "E-P1", Daylight, 0, { 1.835938, 1, 1.351563, 0 } }, { "OLYMPUS", "E-P1", Shade, 0, { 2.195313, 1, 1.046875, 0 } }, { "OLYMPUS", "E-P1", Cloudy, 0, { 2.031250, 1, 1.203125, 0 } }, @@ -3482,70 +4514,238 @@ { "OLYMPUS", "E-P2", Flash, 6, { 1.968750, 1, 0.953125, 0 } }, { "OLYMPUS", "E-P2", Flash, 7, { 1.960938, 1, 0.906250, 0 } }, - { "OLYMPUS", "E-PL1", Daylight, 0, { 1.742187, 1, 1.343750, 0 } }, - { "OLYMPUS", "E-PL1", Shade, 0, { 2.101563, 1, 1.031250, 0 } }, - { "OLYMPUS", "E-PL1", Cloudy, 0, { 1.921875, 1, 1.203125, 0 } }, - { "OLYMPUS", "E-PL1", Incandescent, 0, { 1, 1.007874, 2.606299, 0 } }, - { "OLYMPUS", "E-PL1", WhiteFluorescent, 0, { 1.664062, 1, 1.960937, 0 } }, - { "OLYMPUS", "E-PL1", NeutralFluorescent, 0, { 1.625000, 1, 1.703125, 0 } }, - { "OLYMPUS", "E-PL1", DaylightFluorescent, 0, { 2.039063, 1, 1.320313, 0 } }, - { "OLYMPUS", "E-PL1", Flash, 0, { 1.914063, 1, 1.203125, 0 } }, - { "OLYMPUS", "E-PL1", "2000K", 0, { 1, 2.844444, 11.933333, 0 } }, - { "OLYMPUS", "E-PL1", "2050K", 0, { 1, 2.415094, 9.773585, 0 } }, - { "OLYMPUS", "E-PL1", "2100K", 0, { 1, 2.169492, 8.508474, 0 } }, - { "OLYMPUS", "E-PL1", "2150K", 0, { 1, 1.969231, 7.492308, 0 } }, - { "OLYMPUS", "E-PL1", "2200K", 0, { 1, 1.777778, 6.541667, 0 } }, - { "OLYMPUS", "E-PL1", "2250K", 0, { 1, 1.641026, 5.846154, 0 } }, - { "OLYMPUS", "E-PL1", "2300K", 0, { 1, 1.542169, 5.325301, 0 } }, - { "OLYMPUS", "E-PL1", "2350K", 0, { 1, 1.454545, 4.875000, 0 } }, - { "OLYMPUS", "E-PL1", "2400K", 0, { 1, 1.361702, 4.425532, 0 } }, - { "OLYMPUS", "E-PL1", "2450K", 0, { 1, 1.306122, 4.122449, 0 } }, - { "OLYMPUS", "E-PL1", "2500K", 0, { 1, 1.242718, 3.815534, 0 } }, - { "OLYMPUS", "E-PL1", "2550K", 0, { 1, 1.196262, 3.560748, 0 } }, - { "OLYMPUS", "E-PL1", "2600K", 0, { 1, 1.142857, 3.303572, 0 } }, - { "OLYMPUS", "E-PL1", "2650K", 0, { 1, 1.103448, 3.094827, 0 } }, - { "OLYMPUS", "E-PL1", "2700K", 0, { 1, 1.066667, 2.908333, 0 } }, - { "OLYMPUS", "E-PL1", "2750K", 0, { 1, 1.032258, 2.733871, 0 } }, - { "OLYMPUS", "E-PL1", "2800K", 0, { 1, 1.007874, 2.606299, 0 } }, - { "OLYMPUS", "E-PL1", "2900K", 0, { 1.046875, 1, 2.445313, 0 } }, - { "OLYMPUS", "E-PL1", "3000K", 0, { 1.093750, 1, 2.320313, 0 } }, - { "OLYMPUS", "E-PL1", "3100K", 0, { 1.148438, 1, 2.195313, 0 } }, - { "OLYMPUS", "E-PL1", "3200K", 0, { 1.187500, 1, 2.078125, 0 } }, - { "OLYMPUS", "E-PL1", "3300K", 0, { 1.234375, 1, 1.976562, 0 } }, - { "OLYMPUS", "E-PL1", "3400K", 0, { 1.257812, 1, 1.921875, 0 } }, - { "OLYMPUS", "E-PL1", "3500K", 0, { 1.289062, 1, 1.859375, 0 } }, - { "OLYMPUS", "E-PL1", "3600K", 0, { 1.320313, 1, 1.796875, 0 } }, - { "OLYMPUS", "E-PL1", "3700K", 0, { 1.351562, 1, 1.750000, 0 } }, - { "OLYMPUS", "E-PL1", "3800K", 0, { 1.382813, 1, 1.703125, 0 } }, - { "OLYMPUS", "E-PL1", "3900K", 0, { 1.414062, 1, 1.656250, 0 } }, - { "OLYMPUS", "E-PL1", "4000K", 0, { 1.437500, 1, 1.648437, 0 } }, - { "OLYMPUS", "E-PL1", "4200K", 0, { 1.484375, 1, 1.617188, 0 } }, - { "OLYMPUS", "E-PL1", "4400K", 0, { 1.531250, 1, 1.578125, 0 } }, - { "OLYMPUS", "E-PL1", "4600K", 0, { 1.585938, 1, 1.515625, 0 } }, - { "OLYMPUS", "E-PL1", "4800K", 0, { 1.640625, 1, 1.453125, 0 } }, - { "OLYMPUS", "E-PL1", "5000K", 0, { 1.679688, 1, 1.414063, 0 } }, - { "OLYMPUS", "E-PL1", "5200K", 0, { 1.718750, 1, 1.367188, 0 } }, - { "OLYMPUS", "E-PL1", "5400K", 0, { 1.765625, 1, 1.328125, 0 } }, - { "OLYMPUS", "E-PL1", "5600K", 0, { 1.820313, 1, 1.281250, 0 } }, - { "OLYMPUS", "E-PL1", "5800K", 0, { 1.867188, 1, 1.242187, 0 } }, - { "OLYMPUS", "E-PL1", "6000K", 0, { 1.921875, 1, 1.203125, 0 } }, - { "OLYMPUS", "E-PL1", "6200K", 0, { 1.945313, 1, 1.179688, 0 } }, - { "OLYMPUS", "E-PL1", "6400K", 0, { 1.968750, 1, 1.156250, 0 } }, - { "OLYMPUS", "E-PL1", "6600K", 0, { 2.000000, 1, 1.125000, 0 } }, - { "OLYMPUS", "E-PL1", "6800K", 0, { 2.023438, 1, 1.109375, 0 } }, - { "OLYMPUS", "E-PL1", "7000K", 0, { 2.046875, 1, 1.078125, 0 } }, - { "OLYMPUS", "E-PL1", "7400K", 0, { 2.085937, 1, 1.046875, 0 } }, - { "OLYMPUS", "E-PL1", "7800K", 0, { 2.125000, 1, 1.007813, 0 } }, - { "OLYMPUS", "E-PL1", "8200K", 0, { 2.233871, 1.032258, 1, 0 } }, - { "OLYMPUS", "E-PL1", "8600K", 0, { 2.314050, 1.057851, 1, 0 } }, - { "OLYMPUS", "E-PL1", "9000K", 0, { 2.406780, 1.084746, 1, 0 } }, - { "OLYMPUS", "E-PL1", "9400K", 0, { 2.517544, 1.122807, 1, 0 } }, - { "OLYMPUS", "E-PL1", "9800K", 0, { 2.589286, 1.142857, 1, 0 } }, - { "OLYMPUS", "E-PL1", "10000K", 0, { 2.654546, 1.163636, 1, 0 } }, - { "OLYMPUS", "E-PL1", "11000K", 0, { 2.865385, 1.230769, 1, 0 } }, - { "OLYMPUS", "E-PL1", "12000K", 0, { 3.060606, 1.292929, 1, 0 } }, - { "OLYMPUS", "E-PL1", "13000K", 0, { 3.276596, 1.361702, 1, 0 } }, - { "OLYMPUS", "E-PL1", "14000K", 0, { 3.428572, 1.406593, 1, 0 } }, + { "OLYMPUS", "E-P3", Daylight, 0, { 2.0469, 1, 1.4922, 0 } }, + { "OLYMPUS", "E-P3", Shade, 0, { 2.4375, 1, 1.1875, 0 } }, + { "OLYMPUS", "E-P3", Cloudy, 0, { 2.2188, 1, 1.3750, 0 } }, + { "OLYMPUS", "E-P3", Incandescent, 0, { 1.2266, 1, 2.5312, 0 } }, + { "OLYMPUS", "E-P3", Fluorescent, 0, { 1.9766, 1, 1.9766, 0 } }, + { "OLYMPUS", "E-P3", Flash, 0, { 2.2109, 1, 1.3672, 0 } }, + + /* Firmware version 1.2 */ + /* -7/+7 fine tuning is -7/+7 in amber-blue and zero in green-magenta */ + { "OLYMPUS", "E-PL1", Daylight, -7, { 1.492188, 1, 1.531250, 0 } }, + { "OLYMPUS", "E-PL1", Daylight, 0, { 1.726562, 1, 1.343750, 0 } }, + { "OLYMPUS", "E-PL1", Daylight, 7, { 1.984375, 1, 1.148438, 0 } }, + { "OLYMPUS", "E-PL1", Shade, -7, { 1.796875, 1, 1.171875, 0 } }, + { "OLYMPUS", "E-PL1", Shade, 0, { 2.085937, 1, 1.039062, 0 } }, + { "OLYMPUS", "E-PL1", Shade, 7, { 2.699115, 1.132743, 1, 0 } }, + { "OLYMPUS", "E-PL1", Cloudy, -7, { 1.640625, 1, 1.367187, 0 } }, + { "OLYMPUS", "E-PL1", Cloudy, 0, { 1.906250, 1, 1.210938, 0 } }, + { "OLYMPUS", "E-PL1", Cloudy, 7, { 2.179688, 1, 1.031250, 0 } }, + { "OLYMPUS", "E-PL1", Incandescent, -7, { 1, 1.174312, 3.467890, 0 } }, + { "OLYMPUS", "E-PL1", Incandescent, 0, { 1, 1.015873, 2.619048, 0 } }, + { "OLYMPUS", "E-PL1", Incandescent, 7, { 1.125000, 1, 2.226562, 0 } }, + { "OLYMPUS", "E-PL1", WhiteFluorescent, -7, { 1.421875, 1, 2.234375, 0 } }, + { "OLYMPUS", "E-PL1", WhiteFluorescent, 0, { 1.648437, 1, 1.960937, 0 } }, + { "OLYMPUS", "E-PL1", WhiteFluorescent, 7, { 1.882812, 1, 1.679687, 0 } }, + { "OLYMPUS", "E-PL1", NeutralFluorescent, -7, { 1.390625, 1, 1.945313, 0 } }, + { "OLYMPUS", "E-PL1", NeutralFluorescent, 0, { 1.609375, 1, 1.710938, 0 } }, + { "OLYMPUS", "E-PL1", NeutralFluorescent, 7, { 1.851563, 1, 1.468750, 0 } }, + { "OLYMPUS", "E-PL1", DaylightFluorescent, -7, { 1.750000, 1, 1.507812, 0 } }, + { "OLYMPUS", "E-PL1", DaylightFluorescent, 0, { 2.015625, 1, 1.328125, 0 } }, + { "OLYMPUS", "E-PL1", DaylightFluorescent, 7, { 2.320313, 1.140625, 1, 0 } }, + { "OLYMPUS", "E-PL1", Flash, -7, { 1.640625, 1, 1.367187, 0 } }, + { "OLYMPUS", "E-PL1", Flash, 0, { 1.898438, 1, 1.203125, 0 } }, + { "OLYMPUS", "E-PL1", Flash, 7, { 2.179688, 1, 1.031250, 0 } }, + { "OLYMPUS", "E-PL1", "2000K", 0, { 1, 2.723404, 11.340426, 0 } }, + { "OLYMPUS", "E-PL1", "2050K", 0, { 1, 2.370370, 9.537037, 0 } }, + { "OLYMPUS", "E-PL1", "2100K", 0, { 1, 2.133333, 8.316667, 0 } }, + { "OLYMPUS", "E-PL1", "2150K", 0, { 1, 1.939394, 7.333333, 0 } }, + { "OLYMPUS", "E-PL1", "2200K", 0, { 1, 1.753425, 6.410959, 0 } }, + { "OLYMPUS", "E-PL1", "2250K", 0, { 1, 1.641026, 5.820513, 0 } }, + { "OLYMPUS", "E-PL1", "2300K", 0, { 1, 1.523810, 5.226190, 0 } }, + { "OLYMPUS", "E-PL1", "2350K", 0, { 1, 1.438202, 4.786517, 0 } }, + { "OLYMPUS", "E-PL1", "2400K", 0, { 1, 1.361702, 4.404255, 0 } }, + { "OLYMPUS", "E-PL1", "2450K", 0, { 1, 1.306122, 4.102041, 0 } }, + { "OLYMPUS", "E-PL1", "2500K", 0, { 1, 1.242718, 3.796117, 0 } }, + { "OLYMPUS", "E-PL1", "2550K", 0, { 1, 1.196262, 3.542056, 0 } }, + { "OLYMPUS", "E-PL1", "2600K", 0, { 1, 1.153153, 3.315315, 0 } }, + { "OLYMPUS", "E-PL1", "2650K", 0, { 1, 1.113043, 3.113044, 0 } }, + { "OLYMPUS", "E-PL1", "2700K", 0, { 1, 1.075630, 2.924370, 0 } }, + { "OLYMPUS", "E-PL1", "2750K", 0, { 1, 1.040650, 2.747968, 0 } }, + { "OLYMPUS", "E-PL1", "2800K", 0, { 1, 1.015873, 2.619048, 0 } }, + { "OLYMPUS", "E-PL1", "2900K", 0, { 1.039062, 1, 2.437500, 0 } }, + { "OLYMPUS", "E-PL1", "3000K", 0, { 1.085937, 1, 2.312500, 0 } }, + { "OLYMPUS", "E-PL1", "3100K", 0, { 1.132812, 1, 2.195313, 0 } }, + { "OLYMPUS", "E-PL1", "3200K", 0, { 1.179687, 1, 2.078125, 0 } }, + { "OLYMPUS", "E-PL1", "3300K", 0, { 1.218750, 1, 1.976562, 0 } }, + { "OLYMPUS", "E-PL1", "3400K", 0, { 1.250000, 1, 1.921875, 0 } }, + { "OLYMPUS", "E-PL1", "3500K", 0, { 1.281250, 1, 1.859375, 0 } }, + { "OLYMPUS", "E-PL1", "3600K", 0, { 1.312500, 1, 1.796875, 0 } }, + { "OLYMPUS", "E-PL1", "3700K", 0, { 1.343750, 1, 1.757812, 0 } }, + { "OLYMPUS", "E-PL1", "3800K", 0, { 1.375000, 1, 1.710938, 0 } }, + { "OLYMPUS", "E-PL1", "3900K", 0, { 1.406250, 1, 1.664062, 0 } }, + { "OLYMPUS", "E-PL1", "4000K", 0, { 1.421875, 1, 1.648437, 0 } }, + { "OLYMPUS", "E-PL1", "4200K", 0, { 1.468750, 1, 1.617188, 0 } }, + { "OLYMPUS", "E-PL1", "4400K", 0, { 1.515625, 1, 1.578125, 0 } }, + { "OLYMPUS", "E-PL1", "4600K", 0, { 1.570313, 1, 1.515625, 0 } }, + { "OLYMPUS", "E-PL1", "4800K", 0, { 1.617188, 1, 1.453125, 0 } }, + { "OLYMPUS", "E-PL1", "5000K", 0, { 1.656250, 1, 1.414062, 0 } }, + { "OLYMPUS", "E-PL1", "5200K", 0, { 1.703125, 1, 1.367188, 0 } }, + { "OLYMPUS", "E-PL1", "5400K", 0, { 1.750000, 1, 1.328125, 0 } }, + { "OLYMPUS", "E-PL1", "5600K", 0, { 1.804688, 1, 1.289063, 0 } }, + { "OLYMPUS", "E-PL1", "5800K", 0, { 1.851563, 1, 1.250000, 0 } }, + { "OLYMPUS", "E-PL1", "6000K", 0, { 1.906250, 1, 1.210938, 0 } }, + { "OLYMPUS", "E-PL1", "6200K", 0, { 1.929687, 1, 1.187500, 0 } }, + { "OLYMPUS", "E-PL1", "6400K", 0, { 1.953125, 1, 1.164062, 0 } }, + { "OLYMPUS", "E-PL1", "6600K", 0, { 1.984375, 1, 1.132813, 0 } }, + { "OLYMPUS", "E-PL1", "6800K", 0, { 2.007813, 1, 1.117187, 0 } }, + { "OLYMPUS", "E-PL1", "7000K", 0, { 2.031250, 1, 1.085938, 0 } }, + { "OLYMPUS", "E-PL1", "7400K", 0, { 2.070312, 1, 1.054688, 0 } }, + { "OLYMPUS", "E-PL1", "7800K", 0, { 2.109375, 1, 1.015625, 0 } }, + { "OLYMPUS", "E-PL1", "8200K", 0, { 2.200000, 1.024000, 1, 0 } }, + { "OLYMPUS", "E-PL1", "8600K", 0, { 2.278689, 1.049180, 1, 0 } }, + { "OLYMPUS", "E-PL1", "9000K", 0, { 2.369748, 1.075630, 1, 0 } }, + { "OLYMPUS", "E-PL1", "9400K", 0, { 2.478261, 1.113043, 1, 0 } }, + { "OLYMPUS", "E-PL1", "9800K", 0, { 2.548673, 1.132743, 1, 0 } }, + { "OLYMPUS", "E-PL1", "10000K", 0, { 2.612613, 1.153153, 1, 0 } }, + { "OLYMPUS", "E-PL1", "11000K", 0, { 2.819048, 1.219048, 1, 0 } }, + { "OLYMPUS", "E-PL1", "12000K", 0, { 3.010000, 1.280000, 1, 0 } }, + { "OLYMPUS", "E-PL1", "13000K", 0, { 3.221053, 1.347368, 1, 0 } }, + { "OLYMPUS", "E-PL1", "14000K", 0, { 3.369565, 1.391304, 1, 0 } }, + + { "OLYMPUS", "E-PL2", Daylight, 0, { 1.4609, 1, 1.4219, 0 } }, + { "OLYMPUS", "E-PL2", Shade, 0, { 1.7422, 1, 1.1094, 0 } }, + { "OLYMPUS", "E-PL2", Cloudy, 0, { 1.6172, 1, 1.2891, 0 } }, + { "OLYMPUS", "E-PL2", Tungsten, 0, { 1, 1.1327, 2.9115, 0 } }, + { "OLYMPUS", "E-PL2", Fluorescent, 0, { 1.3828, 1, 2.0859, 0 } }, + { "OLYMPUS", "E-PL2", Flash, 0, { 1.6016, 1, 1.2891, 0 } }, + { "OLYMPUS", "E-PL2", "2000K", 0, { 1, 2.3273, 9.1091, 0 } }, + { "OLYMPUS", "E-PL2", "2050K", 0, { 1, 2.0984, 7.9508, 0 } }, + { "OLYMPUS", "E-PL2", "2100K", 0, { 1, 1.9692, 7.2615, 0 } }, + { "OLYMPUS", "E-PL2", "2150K", 0, { 1, 1.8551, 6.6522, 0 } }, + { "OLYMPUS", "E-PL2", "2200K", 0, { 1, 1.7297, 6.0135, 0 } }, + { "OLYMPUS", "E-PL2", "2250K", 0, { 1, 1.6410, 5.5513, 0 } }, + { "OLYMPUS", "E-PL2", "2300K", 0, { 1, 1.5610, 5.1341, 0 } }, + { "OLYMPUS", "E-PL2", "2350K", 0, { 1, 1.4884, 4.7674, 0 } }, + { "OLYMPUS", "E-PL2", "2400K", 0, { 1, 1.4382, 4.4944, 0 } }, + { "OLYMPUS", "E-PL2", "2450K", 0, { 1, 1.3763, 4.1935, 0 } }, + { "OLYMPUS", "E-PL2", "2500K", 0, { 1, 1.3333, 3.9583, 0 } }, + { "OLYMPUS", "E-PL2", "2550K", 0, { 1, 1.2929, 3.7475, 0 } }, + { "OLYMPUS", "E-PL2", "2600K", 0, { 1, 1.2549, 3.5392, 0 } }, + { "OLYMPUS", "E-PL2", "2650K", 0, { 1, 1.2190, 3.3619, 0 } }, + { "OLYMPUS", "E-PL2", "2700K", 0, { 1, 1.1852, 3.1852, 0 } }, + { "OLYMPUS", "E-PL2", "2750K", 0, { 1, 1.1532, 3.0270, 0 } }, + { "OLYMPUS", "E-PL2", "2800K", 0, { 1, 1.1327, 2.9115, 0 } }, + { "OLYMPUS", "E-PL2", "2900K", 0, { 1, 1.0847, 2.6610, 0 } }, + { "OLYMPUS", "E-PL2", "3000K", 0, { 1, 1.0492, 2.4672, 0 } }, + { "OLYMPUS", "E-PL2", "3100K", 0, { 1, 1.0079, 2.2598, 0 } }, + { "OLYMPUS", "E-PL2", "3200K", 0, { 1.0234, 1, 2.1484, 0 } }, + { "OLYMPUS", "E-PL2", "3300K", 0, { 1.0547, 1, 2.0625, 0 } }, + { "OLYMPUS", "E-PL2", "3400K", 0, { 1.0781, 1, 2.0156, 0 } }, + { "OLYMPUS", "E-PL2", "3500K", 0, { 1.1016, 1, 1.9609, 0 } }, + { "OLYMPUS", "E-PL2", "3600K", 0, { 1.1250, 1, 1.9063, 0 } }, + { "OLYMPUS", "E-PL2", "3700K", 0, { 1.1484, 1, 1.8672, 0 } }, + { "OLYMPUS", "E-PL2", "3800K", 0, { 1.1719, 1, 1.8281, 0 } }, + { "OLYMPUS", "E-PL2", "3900K", 0, { 1.2031, 1, 1.7812, 0 } }, + { "OLYMPUS", "E-PL2", "4000K", 0, { 1.2187, 1, 1.7578, 0 } }, + { "OLYMPUS", "E-PL2", "4200K", 0, { 1.2578, 1, 1.6953, 0 } }, + { "OLYMPUS", "E-PL2", "4400K", 0, { 1.2969, 1, 1.6406, 0 } }, + { "OLYMPUS", "E-PL2", "4600K", 0, { 1.3359, 1, 1.5859, 0 } }, + { "OLYMPUS", "E-PL2", "4800K", 0, { 1.3750, 1, 1.5313, 0 } }, + { "OLYMPUS", "E-PL2", "5000K", 0, { 1.4062, 1, 1.4922, 0 } }, + { "OLYMPUS", "E-PL2", "5200K", 0, { 1.4375, 1, 1.4453, 0 } }, + { "OLYMPUS", "E-PL2", "5400K", 0, { 1.4766, 1, 1.4063, 0 } }, + { "OLYMPUS", "E-PL2", "5600K", 0, { 1.5313, 1, 1.3672, 0 } }, + { "OLYMPUS", "E-PL2", "5800K", 0, { 1.5703, 1, 1.3281, 0 } }, + { "OLYMPUS", "E-PL2", "6000K", 0, { 1.6172, 1, 1.2891, 0 } }, + { "OLYMPUS", "E-PL2", "6200K", 0, { 1.6328, 1, 1.2656, 0 } }, + { "OLYMPUS", "E-PL2", "6400K", 0, { 1.6484, 1, 1.2422, 0 } }, + { "OLYMPUS", "E-PL2", "6600K", 0, { 1.6719, 1, 1.2109, 0 } }, + { "OLYMPUS", "E-PL2", "6800K", 0, { 1.6875, 1, 1.1875, 0 } }, + { "OLYMPUS", "E-PL2", "7000K", 0, { 1.7031, 1, 1.1641, 0 } }, + { "OLYMPUS", "E-PL2", "7400K", 0, { 1.7344, 1, 1.1250, 0 } }, + { "OLYMPUS", "E-PL2", "7800K", 0, { 1.7578, 1, 1.0859, 0 } }, + { "OLYMPUS", "E-PL2", "8200K", 0, { 1.7812, 1, 1.0469, 0 } }, + { "OLYMPUS", "E-PL2", "8600K", 0, { 1.8047, 1, 1.0234, 0 } }, + { "OLYMPUS", "E-PL2", "9000K", 0, { 1.8346, 1.0079, 1, 0 } }, + { "OLYMPUS", "E-PL2", "9400K", 0, { 1.9032, 1.0323, 1, 0 } }, + { "OLYMPUS", "E-PL2", "9800K", 0, { 1.9669, 1.0579, 1, 0 } }, + { "OLYMPUS", "E-PL2", "10000K", 0, { 2.0084, 1.0756, 1, 0 } }, + { "OLYMPUS", "E-PL2", "11000K", 0, { 2.1504, 1.1327, 1, 0 } }, + { "OLYMPUS", "E-PL2", "12000K", 0, { 2.2870, 1.1852, 1, 0 } }, + { "OLYMPUS", "E-PL2", "13000K", 0, { 2.4272, 1.2427, 1, 0 } }, + { "OLYMPUS", "E-PL2", "14000K", 0, { 2.5556, 1.2929, 1, 0 } }, + + /* Firmware version 1.3 */ + /* -7/+7 fine tuning is -7/+7 in amber-blue and zero in green-magenta */ + { "OLYMPUS", "E-PL3", Daylight, -7, { 1.695313, 1, 1.656250, 0 } }, + { "OLYMPUS", "E-PL3", Daylight, 0, { 1.976562, 1, 1.453125, 0 } }, + { "OLYMPUS", "E-PL3", Daylight, 7, { 2.250000, 1, 1.242187, 0 } }, + { "OLYMPUS", "E-PL3", Shade, -7, { 2.046875, 1, 1.312500, 0 } }, + { "OLYMPUS", "E-PL3", Shade, 0, { 2.382812, 1, 1.156250, 0 } }, + { "OLYMPUS", "E-PL3", Shade, 7, { 2.732283, 1.007874, 1, 0 } }, + { "OLYMPUS", "E-PL3", Cloudy, -7, { 1.859375, 1, 1.515625, 0 } }, + { "OLYMPUS", "E-PL3", Cloudy, 0, { 2.164063, 1, 1.335938, 0 } }, + { "OLYMPUS", "E-PL3", Cloudy, 7, { 2.460937, 1, 1.148437, 0 } }, + { "OLYMPUS", "E-PL3", Tungsten, -7, { 1.007812, 1, 2.812500, 0 } }, + { "OLYMPUS", "E-PL3", Tungsten, 0, { 1.171875, 1, 2.468750, 0 } }, + { "OLYMPUS", "E-PL3", Tungsten, 7, { 1.335937, 1, 2.117187, 0 } }, + { "OLYMPUS", "E-PL3", Fluorescent, -7, { 1.679688, 1, 2.203125, 0 } }, + { "OLYMPUS", "E-PL3", Fluorescent, 0, { 1.953125, 1, 1.937500, 0 } }, + { "OLYMPUS", "E-PL3", Fluorescent, 7, { 2.226562, 1, 1.664062, 0 } }, + { "OLYMPUS", "E-PL3", Underwater, -7, { 1.812500, 1, 1.789062, 0 } }, + { "OLYMPUS", "E-PL3", Underwater, 0, { 2.390625, 1, 1.484375, 0 } }, + { "OLYMPUS", "E-PL3", Underwater, 7, { 2.429688, 1, 1.335937, 0 } }, + { "OLYMPUS", "E-PL3", Flash, -7, { 2.218750, 1, 1.421875, 0 } }, + { "OLYMPUS", "E-PL3", Flash, 0, { 2.585938, 1, 1.250000, 0 } }, + { "OLYMPUS", "E-PL3", Flash, 7, { 2.945313, 1, 1.070312, 0 } }, + { "OLYMPUS", "E-PL3", "2000K", 0, { 1, 1.882353, 6.897059, 0 } }, + { "OLYMPUS", "E-PL3", "2050K", 0, { 1, 1.684211, 5.986842, 0 } }, + { "OLYMPUS", "E-PL3", "2100K", 0, { 1, 1.560976, 5.402439, 0 } }, + { "OLYMPUS", "E-PL3", "2150K", 0, { 1, 1.454545, 4.909091, 0 } }, + { "OLYMPUS", "E-PL3", "2200K", 0, { 1, 1.347368, 4.421053, 0 } }, + { "OLYMPUS", "E-PL3", "2250K", 0, { 1, 1.267327, 4.049505, 0 } }, + { "OLYMPUS", "E-PL3", "2300K", 0, { 1, 1.207547, 3.754717, 0 } }, + { "OLYMPUS", "E-PL3", "2350K", 0, { 1, 1.153153, 3.504504, 0 } }, + { "OLYMPUS", "E-PL3", "2400K", 0, { 1, 1.094017, 3.239316, 0 } }, + { "OLYMPUS", "E-PL3", "2450K", 0, { 1, 1.057851, 3.057851, 0 } }, + { "OLYMPUS", "E-PL3", "2500K", 0, { 1, 1.015873, 2.873016, 0 } }, + { "OLYMPUS", "E-PL3", "2550K", 0, { 1.015625, 1, 2.757813, 0 } }, + { "OLYMPUS", "E-PL3", "2600K", 0, { 1.054687, 1, 2.695312, 0 } }, + { "OLYMPUS", "E-PL3", "2650K", 0, { 1.085938, 1, 2.632813, 0 } }, + { "OLYMPUS", "E-PL3", "2700K", 0, { 1.117187, 1, 2.570312, 0 } }, + { "OLYMPUS", "E-PL3", "2750K", 0, { 1.148438, 1, 2.515625, 0 } }, + { "OLYMPUS", "E-PL3", "2800K", 0, { 1.171875, 1, 2.468750, 0 } }, + { "OLYMPUS", "E-PL3", "2900K", 0, { 1.226562, 1, 2.367187, 0 } }, + { "OLYMPUS", "E-PL3", "3000K", 0, { 1.273437, 1, 2.273437, 0 } }, + { "OLYMPUS", "E-PL3", "3100K", 0, { 1.328125, 1, 2.179688, 0 } }, + { "OLYMPUS", "E-PL3", "3200K", 0, { 1.367188, 1, 2.093750, 0 } }, + { "OLYMPUS", "E-PL3", "3300K", 0, { 1.414062, 1, 2.015625, 0 } }, + { "OLYMPUS", "E-PL3", "3400K", 0, { 1.445312, 1, 1.968750, 0 } }, + { "OLYMPUS", "E-PL3", "3500K", 0, { 1.476563, 1, 1.914063, 0 } }, + { "OLYMPUS", "E-PL3", "3600K", 0, { 1.507812, 1, 1.867188, 0 } }, + { "OLYMPUS", "E-PL3", "3700K", 0, { 1.539062, 1, 1.828125, 0 } }, + { "OLYMPUS", "E-PL3", "3800K", 0, { 1.570312, 1, 1.789062, 0 } }, + { "OLYMPUS", "E-PL3", "3900K", 0, { 1.609375, 1, 1.750000, 0 } }, + { "OLYMPUS", "E-PL3", "4000K", 0, { 1.640625, 1, 1.734375, 0 } }, + { "OLYMPUS", "E-PL3", "4200K", 0, { 1.703125, 1, 1.695313, 0 } }, + { "OLYMPUS", "E-PL3", "4400K", 0, { 1.757812, 1, 1.648437, 0 } }, + { "OLYMPUS", "E-PL3", "4600K", 0, { 1.812500, 1, 1.601562, 0 } }, + { "OLYMPUS", "E-PL3", "4800K", 0, { 1.867188, 1, 1.554688, 0 } }, + { "OLYMPUS", "E-PL3", "5000K", 0, { 1.906250, 1, 1.515625, 0 } }, + { "OLYMPUS", "E-PL3", "5200K", 0, { 1.953125, 1, 1.476562, 0 } }, + { "OLYMPUS", "E-PL3", "5400K", 0, { 2.000000, 1, 1.437500, 0 } }, + { "OLYMPUS", "E-PL3", "5600K", 0, { 2.054688, 1, 1.406250, 0 } }, + { "OLYMPUS", "E-PL3", "5800K", 0, { 2.109375, 1, 1.375000, 0 } }, + { "OLYMPUS", "E-PL3", "6000K", 0, { 2.164063, 1, 1.335938, 0 } }, + { "OLYMPUS", "E-PL3", "6200K", 0, { 2.195313, 1, 1.312500, 0 } }, + { "OLYMPUS", "E-PL3", "6400K", 0, { 2.226562, 1, 1.289062, 0 } }, + { "OLYMPUS", "E-PL3", "6600K", 0, { 2.257812, 1, 1.257812, 0 } }, + { "OLYMPUS", "E-PL3", "6800K", 0, { 2.289063, 1, 1.234375, 0 } }, + { "OLYMPUS", "E-PL3", "7000K", 0, { 2.320313, 1, 1.210938, 0 } }, + { "OLYMPUS", "E-PL3", "7400K", 0, { 2.367187, 1, 1.171875, 0 } }, + { "OLYMPUS", "E-PL3", "7800K", 0, { 2.414062, 1, 1.132812, 0 } }, + { "OLYMPUS", "E-PL3", "8200K", 0, { 2.460937, 1, 1.093750, 0 } }, + { "OLYMPUS", "E-PL3", "8600K", 0, { 2.492188, 1, 1.070313, 0 } }, + { "OLYMPUS", "E-PL3", "9000K", 0, { 2.523438, 1, 1.039063, 0 } }, + { "OLYMPUS", "E-PL3", "9400K", 0, { 2.554687, 1, 1.015625, 0 } }, + { "OLYMPUS", "E-PL3", "9800K", 0, { 2.606299, 1.007874, 1, 0 } }, + { "OLYMPUS", "E-PL3", "10000K", 0, { 2.664000, 1.024000, 1, 0 } }, + { "OLYMPUS", "E-PL3", "11000K", 0, { 2.865546, 1.075630, 1, 0 } }, + { "OLYMPUS", "E-PL3", "12000K", 0, { 3.043860, 1.122807, 1, 0 } }, + { "OLYMPUS", "E-PL3", "13000K", 0, { 3.238532, 1.174312, 1, 0 } }, + { "OLYMPUS", "E-PL3", "14000K", 0, { 3.400000, 1.219048, 1, 0 } }, { "OLYMPUS", "SP500UZ", Daylight, -7, { 1.136719, 1, 2.359375, 0 } }, { "OLYMPUS", "SP500UZ", Daylight, 0, { 1.960937, 1, 1.585937, 0 } }, @@ -3570,6 +4770,27 @@ { "OLYMPUS", "SP510UZ", NeutralFluorescent, 0, { 1.644531, 1, 1.843750, 0 } }, { "OLYMPUS", "SP510UZ", DaylightFluorescent, 0, { 1.628906, 1, 2.210938, 0 } }, + /* Firmware version 1.5 */ + /* -7/+7 fine tuning is -7/+7 in amber-blue and zero in green-magenta */ + { "OLYMPUS", "XZ-1", Daylight, -7, { 1.687500, 1, 2.054688, 0 } }, + { "OLYMPUS", "XZ-1", Daylight, 0, { 1.968750, 1, 1.804687, 0 } }, + { "OLYMPUS", "XZ-1", Daylight, 7, { 2.242187, 1, 1.546875, 0 } }, + { "OLYMPUS", "XZ-1", Shade, -7, { 2.000000, 1, 1.718750, 0 } }, + { "OLYMPUS", "XZ-1", Shade, 0, { 2.328125, 1, 1.507813, 0 } }, + { "OLYMPUS", "XZ-1", Shade, 7, { 2.648438, 1, 1.289062, 0 } }, + { "OLYMPUS", "XZ-1", Cloudy, -7, { 1.812500, 1, 1.898438, 0 } }, + { "OLYMPUS", "XZ-1", Cloudy, 0, { 2.109375, 1, 1.671875, 0 } }, + { "OLYMPUS", "XZ-1", Cloudy, 7, { 2.398438, 1, 1.437500, 0 } }, + { "OLYMPUS", "XZ-1", Incandescent, -7, { 1.031250, 1, 3.500000, 0 } }, + { "OLYMPUS", "XZ-1", Incandescent, 0, { 1.203125, 1, 3.070312, 0 } }, + { "OLYMPUS", "XZ-1", Incandescent, 7, { 1.367187, 1, 2.632813, 0 } }, + { "OLYMPUS", "XZ-1", Fluorescent, -7, { 1.640625, 1, 2.843750, 0 } }, + { "OLYMPUS", "XZ-1", Fluorescent, 0, { 1.914062, 1, 2.500000, 0 } }, + { "OLYMPUS", "XZ-1", Fluorescent, 7, { 2.179688, 1, 2.148437, 0 } }, + { "OLYMPUS", "XZ-1", Underwater, -7, { 1.468750, 1, 2.296875, 0 } }, + { "OLYMPUS", "XZ-1", Underwater, 0, { 1.710937, 1, 2.015625, 0 } }, + { "OLYMPUS", "XZ-1", Underwater, 7, { 1.937500, 1, 1.726563, 0 } }, + { "Panasonic", "DMC-FZ8", Daylight, 0, { 1.904943, 1, 1.596958, 0 } }, { "Panasonic", "DMC-FZ8", Cloudy, 0, { 2.060836, 1, 1.498099, 0 } }, { "Panasonic", "DMC-FZ8", Shade, 0, { 2.258555, 1, 1.391635, 0 } }, @@ -3617,12 +4838,91 @@ { "Panasonic", "DMC-G2", Incandescent, 0, { 2.190114, 1, 1.250951, 0 } }, { "Panasonic", "DMC-G2", Flash, 0, { 2.296578, 1, 1.190114, 0 } }, + { "Panasonic", "DMC-G3", Daylight, 0, { 2.7925, 1, 1.5472, 0 } }, + { "Panasonic", "DMC-G3", Cloudy, 0, { 2.9660, 1, 1.4528, 0 } }, + { "Panasonic", "DMC-G3", Shade, 0, { 3.2642, 1, 1.3698, 0 } }, + { "Panasonic", "DMC-G3", Incandescent, 0, { 1.8491, 1, 2.2566, 0 } }, + { "Panasonic", "DMC-G3", Flash, 0, { 3.2868, 1, 1.3547, 0 } }, + { "Panasonic", "DMC-G3", "2500K", 0, { 1.4226, 1, 2.8302, 0 } }, + { "Panasonic", "DMC-G3", "2600K", 0, { 1.4755, 1, 2.7547, 0 } }, + { "Panasonic", "DMC-G3", "2700K", 0, { 1.5283, 1, 2.6717, 0 } }, + { "Panasonic", "DMC-G3", "2800K", 0, { 1.5925, 1, 2.5849, 0 } }, + { "Panasonic", "DMC-G3", "2900K", 0, { 1.6491, 1, 2.5019, 0 } }, + { "Panasonic", "DMC-G3", "3000K", 0, { 1.7094, 1, 2.4189, 0 } }, + { "Panasonic", "DMC-G3", "3100K", 0, { 1.7660, 1, 2.3434, 0 } }, + { "Panasonic", "DMC-G3", "3200K", 0, { 1.8189, 1, 2.2604, 0 } }, + { "Panasonic", "DMC-G3", "3300K", 0, { 1.8792, 1, 2.1849, 0 } }, + { "Panasonic", "DMC-G3", "3400K", 0, { 1.9358, 1, 2.1019, 0 } }, + { "Panasonic", "DMC-G3", "3500K", 0, { 1.9962, 1, 2.0189, 0 } }, + { "Panasonic", "DMC-G3", "3700K", 0, { 2.1245, 1, 1.9358, 0 } }, + { "Panasonic", "DMC-G3", "4000K", 0, { 2.3245, 1, 1.8113, 0 } }, + { "Panasonic", "DMC-G3", "4200K", 0, { 2.4189, 1, 1.7623, 0 } }, + { "Panasonic", "DMC-G3", "4500K", 0, { 2.5585, 1, 1.6868, 0 } }, + { "Panasonic", "DMC-G3", "4700K", 0, { 2.6000, 1, 1.6679, 0 } }, + { "Panasonic", "DMC-G3", "5000K", 0, { 2.6679, 1, 1.6264, 0 } }, + { "Panasonic", "DMC-G3", "5200K", 0, { 2.7170, 1, 1.5962, 0 } }, + { "Panasonic", "DMC-G3", "5500K", 0, { 2.7925, 1, 1.5472, 0 } }, + { "Panasonic", "DMC-G3", "5700K", 0, { 2.8415, 1, 1.5208, 0 } }, + { "Panasonic", "DMC-G3", "6000K", 0, { 2.9283, 1, 1.4717, 0 } }, + { "Panasonic", "DMC-G3", "6500K", 0, { 3.0679, 1, 1.4189, 0 } }, + { "Panasonic", "DMC-G3", "7000K", 0, { 3.1925, 1, 1.3811, 0 } }, + { "Panasonic", "DMC-G3", "7500K", 0, { 3.3170, 1, 1.3472, 0 } }, + { "Panasonic", "DMC-G3", "8000K", 0, { 3.3962, 1, 1.3283, 0 } }, + { "Panasonic", "DMC-G3", "8500K", 0, { 3.4792, 1, 1.3057, 0 } }, + { "Panasonic", "DMC-G3", "9000K", 0, { 3.5585, 1, 1.2868, 0 } }, + { "Panasonic", "DMC-G3", "9500K", 0, { 3.6302, 1, 1.2642, 0 } }, + { "Panasonic", "DMC-G3", "10000K", 0, { 3.7094, 1, 1.2528, 0 } }, + + { "Panasonic", "DMC-G5", Daylight, 0, { 2.343396, 1, 1.618868, 0 } }, + { "Panasonic", "DMC-G5", Cloudy, 0, { 2.452830, 1, 1.532075, 0 } }, + { "Panasonic", "DMC-G5", Shade, 0, { 2.637736, 1, 1.445283, 0 } }, + { "Panasonic", "DMC-G5", Incandescent, 0, { 1.615094, 1, 2.339623, 0 } }, + { "Panasonic", "DMC-G5", Flash, 0, { 2.433962, 1, 1.475472, 0 } }, + { "Panasonic", "DMC-G5", "2500K", 0, { 1.271698, 1, 2.901887, 0 } }, + { "Panasonic", "DMC-G5", "2700K", 0, { 1.369811, 1, 2.743396, 0 } }, + { "Panasonic", "DMC-G5", "3000K", 0, { 1.516981, 1, 2.490566, 0 } }, + { "Panasonic", "DMC-G5", "3500K", 0, { 1.720755, 1, 2.094340, 0 } }, + { "Panasonic", "DMC-G5", "4000K", 0, { 1.966038, 1, 1.901887, 0 } }, + { "Panasonic", "DMC-G5", "4500K", 0, { 2.120755, 1, 1.784906, 0 } }, + { "Panasonic", "DMC-G5", "5000K", 0, { 2.230189, 1, 1.713208, 0 } }, + { "Panasonic", "DMC-G5", "5500K", 0, { 2.343396, 1, 1.618868, 0 } }, + { "Panasonic", "DMC-G5", "6000K", 0, { 2.422642, 1, 1.554717, 0 } }, + { "Panasonic", "DMC-G5", "6500K", 0, { 2.501887, 1, 1.505660, 0 } }, + { "Panasonic", "DMC-G5", "7000K", 0, { 2.603774, 1, 1.460377, 0 } }, + { "Panasonic", "DMC-G5", "8000K", 0, { 2.754717, 1, 1.381132, 0 } }, + { "Panasonic", "DMC-G5", "9000K", 0, { 2.867925, 1, 1.332075, 0 } }, + { "Panasonic", "DMC-G5", "10000K", 0, { 2.966038, 1, 1.286792, 0 } }, + { "Panasonic", "DMC-GF1", Daylight, 0, { 2.007605, 1, 1.418251, 0 } }, { "Panasonic", "DMC-GF1", Cloudy, 0, { 2.174905, 1, 1.296578, 0 } }, { "Panasonic", "DMC-GF1", Shade, 0, { 2.395437, 1, 1.193916, 0 } }, { "Panasonic", "DMC-GF1", Incandescent, 0, { 1.365019, 1, 2.117871, 0 } }, { "Panasonic", "DMC-GF1", Flash, 0, { 2.353612, 1, 1.231939, 0 } }, + { "Panasonic", "DMC-GF3", Daylight, 0, { 1.9396, 1, 1.4377, 0 } }, + { "Panasonic", "DMC-GF3", Cloudy, 0, { 2.0679, 1, 1.3396, 0 } }, + { "Panasonic", "DMC-GF3", Shade, 0, { 2.2566, 1, 1.2717, 0 } }, + { "Panasonic", "DMC-GF3", Incandescent, 0, { 1.3019, 1, 2.0868, 0 } }, + { "Panasonic", "DMC-GF3", Flash, 0, { 2.1962, 1, 1.2717, 0 } }, + + { "Panasonic", "DMC-GH3", Daylight, 0, { 2.313208, 1, 1.845283, 0 } }, + { "Panasonic", "DMC-GH3", Cloudy, 0, { 2.422642, 1, 1.720755, 0 } }, + { "Panasonic", "DMC-GH3", Shade, 0, { 2.607547, 1, 1.615094, 0 } }, + { "Panasonic", "DMC-GH3", Incandescent, 0, { 1.641509, 1, 2.747170, 0 } }, + { "Panasonic", "DMC-GH3", Flash, 0, { 2.369811, 1, 1.694340, 0 } }, + + { "Panasonic", "DMC-GX1", Daylight, 0, { 2.7925, 1, 1.5472, 0 } }, + { "Panasonic", "DMC-GX1", Cloudy, 0, { 2.9660, 1, 1.4528, 0 } }, + { "Panasonic", "DMC-GX1", Shade, 0, { 3.2642, 1, 1.3698, 0 } }, + { "Panasonic", "DMC-GX1", Incandescent, 0, { 1.8491, 1, 2.2566, 0 } }, + { "Panasonic", "DMC-GX1", Flash, 0, { 3.2868, 1, 1.3547, 0 } }, + { "Panasonic", "DMC-GX1", "2700K", 0, { 1.5283, 1, 2.6717, 0 } }, + { "Panasonic", "DMC-GX1", "3000K", 0, { 1.7094, 1, 2.4189, 0 } }, + { "Panasonic", "DMC-GX1", "3300K", 0, { 1.8792, 1, 2.1849, 0 } }, + { "Panasonic", "DMC-GX1", "5000K", 0, { 2.6679, 1, 1.6264, 0 } }, + { "Panasonic", "DMC-GX1", "5500K", 0, { 2.7925, 1, 1.5472, 0 } }, + { "Panasonic", "DMC-GX1", "6500K", 0, { 3.0679, 1, 1.4189, 0 } }, + { "Panasonic", "DMC-L1", Daylight, 0, { 1.980989, 1, 1.444867, 0 } }, { "Panasonic", "DMC-L1", Cloudy, 0, { 2.129278, 1, 1.300380, 0 } }, { "Panasonic", "DMC-L1", Shade, 0, { 2.361217, 1, 1.167300, 0 } }, @@ -3686,6 +4986,12 @@ { "Panasonic", "DMC-LX3", Flash, 0, { 2.296578, 1, 1.482890, 0 } }, { "Panasonic", "DMC-LX3", Incandescent, 0, { 1.346008, 1, 2.269962, 0 } }, + { "Panasonic", "DMC-LX5", Daylight, 0, { 1.9202, 1, 1.7567, 0 } }, + { "Panasonic", "DMC-LX5", Cloudy, 0, { 2.0760, 1, 1.6388, 0 } }, + { "Panasonic", "DMC-LX5", Shade, 0, { 2.1635, 1, 1.5817, 0 } }, + { "Panasonic", "DMC-LX5", Flash, 0, { 2.0760, 1, 1.6388, 0 } }, + { "Panasonic", "DMC-LX5", Incandescent, 0, { 1.2243, 1, 2.5741, 0 } }, + /* It seems that the *ist D WB settings are not really presets. */ { "PENTAX", "*ist D", Daylight, 0, { 1.460938, 1, 1.019531, 0 } }, { "PENTAX", "*ist D", Shade, 0, { 1.734375, 1, 1.000000, 0 } }, @@ -3789,6 +5095,28 @@ { "PENTAX", "K-5", "9000K", 0, { 2.6250, 1, 1.1523, 0 } }, { "PENTAX", "K-5", "10000K", 0, { 2.6992, 1, 1.1211, 0 } }, + // copied from K-5 II s + { "PENTAX", "K-5 II", Daylight, 0, { 2.136719, 1, 1.628906, 0 } }, + { "PENTAX", "K-5 II", Shade, 0, { 2.550781, 1, 1.214844, 0 } }, + { "PENTAX", "K-5 II", Cloudy, 0, { 2.300781, 1, 1.390625, 0 } }, + { "PENTAX", "K-5 II", DaylightFluorescent, 0, { 2.636719, 1, 1.566406, 0 } }, + { "PENTAX", "K-5 II", WhiteFluorescent, 0, { 2.261719, 1, 1.746094, 0 } }, + { "PENTAX", "K-5 II", CoolWhiteFluorescent, 0, { 2.054688, 1, 2.156250, 0 } }, + { "PENTAX", "K-5 II", WarmWhiteFluorescent, 0, { 1.718750, 1, 2.699219, 0 } }, + { "PENTAX", "K-5 II", Tungsten, 0, { 1.265625, 1, 2.816406, 0 } }, + { "PENTAX", "K-5 II", Flash, 0, { 1.851562, 1, 1.792969, 0 } }, + + // firmware K-5 II s Ver 1.02 + { "PENTAX", "K-5 II s", Daylight, 0, { 2.136719, 1, 1.628906, 0 } }, + { "PENTAX", "K-5 II s", Shade, 0, { 2.550781, 1, 1.214844, 0 } }, + { "PENTAX", "K-5 II s", Cloudy, 0, { 2.300781, 1, 1.390625, 0 } }, + { "PENTAX", "K-5 II s", DaylightFluorescent, 0, { 2.636719, 1, 1.566406, 0 } }, + { "PENTAX", "K-5 II s", WhiteFluorescent, 0, { 2.261719, 1, 1.746094, 0 } }, + { "PENTAX", "K-5 II s", CoolWhiteFluorescent, 0, { 2.054688, 1, 2.156250, 0 } }, + { "PENTAX", "K-5 II s", WarmWhiteFluorescent, 0, { 1.718750, 1, 2.699219, 0 } }, + { "PENTAX", "K-5 II s", Tungsten, 0, { 1.265625, 1, 2.816406, 0 } }, + { "PENTAX", "K-5 II s", Flash, 0, { 1.851562, 1, 1.792969, 0 } }, + { "PENTAX", "K-7", Daylight, 0, { 1.808594, 1, 1.285156, 0 } }, { "PENTAX", "K-7", Shade, 0, { 2.207171, 1.019920, 1, 0 } }, { "PENTAX", "K-7", Cloudy, 0, { 1.960937, 1, 1.136719, 0 } }, @@ -3808,6 +5136,17 @@ { "PENTAX", "K-m", Tungsten, 0, { 1.429687, 1, 1.980469, 0 } }, { "PENTAX", "K-m", Flash, 0, { 1.738281, 1, 1.363281, 0 } }, + /* Firmware version 1.11 */ + { "PENTAX", "K-r", Daylight, 0, { 1.8477, 1, 1.3906, 0 } }, + { "PENTAX", "K-r", Shade, 0, { 2.1133, 1, 1.0586, 0 } }, + { "PENTAX", "K-r", Cloudy, 0, { 1.9766, 1, 1.1445, 0 } }, + { "PENTAX", "K-r", DaylightFluorescent, 0, { 2.2617, 1, 1.3203, 0 } }, + { "PENTAX", "K-r", WhiteFluorescent, 0, { 1.9414, 1, 1.4688, 0 } }, + { "PENTAX", "K-r", CoolWhiteFluorescent, 0, { 1.7656, 1, 1.8164, 0 } }, + { "PENTAX", "K-r", WarmWhiteFluorescent, 0, { 1.4766, 1, 2.2734, 0 } }, + { "PENTAX", "K-r", Tungsten, 0, { 1.1016, 1, 2.5391, 0 } }, + { "PENTAX", "K-r", Flash, 0, { 2.0117, 1, 1.1172, 0 } }, + { "PENTAX", "K-x", Daylight, 0, { 1.8803, 1, 1.4054, 0 } }, { "PENTAX", "K-x", Shade, 0, { 2.2278, 1, 1.0309, 0 } }, { "PENTAX", "K-x", Cloudy, 0, { 2.0077, 1, 1.1853, 0 } }, @@ -3823,6 +5162,12 @@ { "RICOH", "Caplio GX100", Incandescent, 0, { 1.520002, 1, 2.520003, 0 } }, { "RICOH", "Caplio GX100", Fluorescent, 0, { 1.840001, 1, 1.970001, 0 } }, + { "SAMSUNG", "EX1", Daylight, 0, { 1.8711, 1, 2.0039, 0 } }, + { "SAMSUNG", "EX1", Cloudy, 0, { 2.3672, 1, 1.6797, 0 } }, + { "SAMSUNG", "EX1", DaylightFluorescent, 0, { 1.9492, 1, 2.0586, 0 } }, + { "SAMSUNG", "EX1", WhiteFluorescent, 0, { 1.4844, 1, 2.7852, 0 } }, + { "SAMSUNG", "EX1", Tungsten, 0, { 1.2500, 1, 3.6834, 0 } }, + { "SAMSUNG", "GX-1S", Daylight, 0, { 1.574219, 1, 1.109375, 0 } }, { "SAMSUNG", "GX-1S", Shade, 0, { 1.855469, 1, 1.000000, 0 } }, { "SAMSUNG", "GX-1S", Cloudy, 0, { 1.664062, 1, 1.000000, 0 } }, @@ -3841,6 +5186,135 @@ { "SAMSUNG", "GX10", Tungsten, 0, { 1.000000, 1, 2.558594, 0 } }, { "SAMSUNG", "GX10", Flash, 0, { 1.664062, 1, 1.046875, 0 } }, + // SAMSUNG NX100 (firmware 1.12) white balance presets with finetuning steps + { "SAMSUNG", "NX100", Daylight, -7, { 1.566333, 1, 1.526753, 0 } }, + { "SAMSUNG", "NX100", Daylight, -6, { 1.593941, 1, 1.475202, 0 } }, + { "SAMSUNG", "NX100", Daylight, -5, { 1.621793, 1, 1.423650, 0 } }, + { "SAMSUNG", "NX100", Daylight, -4, { 1.649401, 1, 1.371854, 0 } }, + { "SAMSUNG", "NX100", Daylight, -3, { 1.677010, 1, 1.320303, 0 } }, + { "SAMSUNG", "NX100", Daylight, -2, { 1.704618, 1, 1.268507, 0 } }, + { "SAMSUNG", "NX100", Daylight, -1, { 1.732470, 1, 1.216956, 0 } }, + { "SAMSUNG", "NX100", Daylight, 0, { 1.760078, 1, 1.165404, 0 } }, + { "SAMSUNG", "NX100", Daylight, 1, { 1.790129, 1, 1.137063, 0 } }, + { "SAMSUNG", "NX100", Daylight, 2, { 1.820425, 1, 1.108722, 0 } }, + { "SAMSUNG", "NX100", Daylight, 3, { 1.850721, 1, 1.080381, 0 } }, + { "SAMSUNG", "NX100", Daylight, 4, { 1.880772, 1, 1.052040, 0 } }, + { "SAMSUNG", "NX100", Daylight, 5, { 1.911068, 1, 1.023699, 0 } }, + { "SAMSUNG", "NX100", Daylight, 6, { 1.941377, 1, 0.995622, 0 } }, + { "SAMSUNG", "NX100", Daylight, 7, { 1.971874, 1, 0.967384, 0 } }, + { "SAMSUNG", "NX100", Cloudy, -7, { 1.638896, 1, 1.446372, 0 } }, + { "SAMSUNG", "NX100", Cloudy, -6, { 1.667725, 1, 1.397508, 0 } }, + { "SAMSUNG", "NX100", Cloudy, -5, { 1.696555, 1, 1.348644, 0 } }, + { "SAMSUNG", "NX100", Cloudy, -4, { 1.725629, 1, 1.299780, 0 } }, + { "SAMSUNG", "NX100", Cloudy, -3, { 1.754459, 1, 1.250672, 0 } }, + { "SAMSUNG", "NX100", Cloudy, -2, { 1.783533, 1, 1.201808, 0 } }, + { "SAMSUNG", "NX100", Cloudy, -1, { 1.812607, 1, 1.152944, 0 } }, + { "SAMSUNG", "NX100", Cloudy, 0, { 1.841437, 1, 1.103836, 0 } }, + { "SAMSUNG", "NX100", Cloudy, 1, { 1.872954, 1, 1.077205, 0 } }, + { "SAMSUNG", "NX100", Cloudy, 2, { 1.904471, 1, 1.050330, 0 } }, + { "SAMSUNG", "NX100", Cloudy, 3, { 1.936233, 1, 1.023455, 0 } }, + { "SAMSUNG", "NX100", Cloudy, 4, { 1.967852, 1, 0.996834, 0 } }, + { "SAMSUNG", "NX100", Cloudy, 5, { 1.999289, 1, 0.969905, 0 } }, + { "SAMSUNG", "NX100", Cloudy, 6, { 2.030876, 1, 0.943088, 0 } }, + { "SAMSUNG", "NX100", Cloudy, 7, { 2.062458, 1, 0.916275, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, -7, { 1.526020, 1, 2.316638, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, -6, { 1.553140, 1, 2.238212, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, -5, { 1.580015, 1, 2.159785, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, -4, { 1.606890, 1, 2.081603, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, -3, { 1.634009, 1, 2.003176, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, -2, { 1.660884, 1, 1.924750, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, -1, { 1.687760, 1, 1.846567, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, 0, { 1.714879, 1, 1.768141, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, 1, { 1.744197, 1, 1.725140, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, 2, { 1.773516, 1, 1.682140, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, 3, { 1.803078, 1, 1.639384, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, 4, { 1.832397, 1, 1.596384, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, 5, { 1.861959, 1, 1.553384, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, 6, { 1.891522, 1, 1.510628, 0 } }, + { "SAMSUNG", "NX100", WhiteFluorescent, 7, { 1.920596, 1, 1.467628, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, -7, { 1.691180, 1, 1.884437, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, -6, { 1.720987, 1, 1.821158, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, -5, { 1.751038, 1, 1.757146, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, -4, { 1.780845, 1, 1.693379, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, -3, { 1.810897, 1, 1.629612, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, -2, { 1.840704, 1, 1.565844, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, -1, { 1.870755, 1, 1.502077, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, 0, { 1.900318, 1, 1.438309, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, 1, { 1.933056, 1, 1.403616, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, 2, { 1.965795, 1, 1.368678, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, 3, { 1.998045, 1, 1.333741, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, 4, { 2.030784, 1, 1.298803, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, 5, { 2.063279, 1, 1.263621, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, 6, { 2.095773, 1, 1.228927, 0 } }, + { "SAMSUNG", "NX100", NeutralFluorescent, 7, { 2.128756, 1, 1.193990, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, -7, { 1.995358, 1, 1.613731, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, -6, { 2.030784, 1, 1.559492, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, -5, { 2.065722, 1, 1.504764, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, -4, { 2.101393, 1, 1.450037, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, -3, { 2.136330, 1, 1.395553, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, -2, { 2.171757, 1, 1.341070, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, -1, { 2.207183, 1, 1.286343, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, 0, { 2.242365, 1, 1.231859, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, 1, { 2.280723, 1, 1.202052, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, 2, { 2.319326, 1, 1.172001, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, 3, { 2.357684, 1, 1.142194, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, 4, { 2.396042, 1, 1.112143, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, 5, { 2.434645, 1, 1.082336, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, 6, { 2.473003, 1, 1.052284, 0 } }, + { "SAMSUNG", "NX100", DaylightFluorescent, 7, { 2.511361, 1, 1.022233, 0 } }, + { "SAMSUNG", "NX100", Tungsten, -7, { 0.951650, 1, 3.086007, 0 } }, + { "SAMSUNG", "NX100", Tungsten, -6, { 0.968307, 1, 2.981315, 0 } }, + { "SAMSUNG", "NX100", Tungsten, -5, { 0.985078, 1, 2.877497, 0 } }, + { "SAMSUNG", "NX100", Tungsten, -4, { 1.001710, 1, 2.772538, 0 } }, + { "SAMSUNG", "NX100", Tungsten, -3, { 1.018568, 1, 2.668214, 0 } }, + { "SAMSUNG", "NX100", Tungsten, -2, { 1.035426, 1, 2.563645, 0 } }, + { "SAMSUNG", "NX100", Tungsten, -1, { 1.052284, 1, 2.459565, 0 } }, + { "SAMSUNG", "NX100", Tungsten, 0, { 1.069142, 1, 2.354996, 0 } }, + { "SAMSUNG", "NX100", Tungsten, 1, { 1.087466, 1, 2.298070, 0 } }, + { "SAMSUNG", "NX100", Tungsten, 2, { 1.105790, 1, 2.240655, 0 } }, + { "SAMSUNG", "NX100", Tungsten, 3, { 1.123870, 1, 2.183484, 0 } }, + { "SAMSUNG", "NX100", Tungsten, 4, { 1.142438, 1, 2.126313, 0 } }, + { "SAMSUNG", "NX100", Tungsten, 5, { 1.160762, 1, 2.069142, 0 } }, + { "SAMSUNG", "NX100", Tungsten, 6, { 1.179086, 1, 2.011972, 0 } }, + { "SAMSUNG", "NX100", Tungsten, 7, { 1.197410, 1, 1.954801, 0 } }, + { "SAMSUNG", "NX100", Flash, -7, { 1.843635, 1, 1.282189, 0 } }, + { "SAMSUNG", "NX100", Flash, -6, { 1.876130, 1, 1.238700, 0 } }, + { "SAMSUNG", "NX100", Flash, -5, { 1.908624, 1, 1.195456, 0 } }, + { "SAMSUNG", "NX100", Flash, -4, { 1.941363, 1, 1.151967, 0 } }, + { "SAMSUNG", "NX100", Flash, -3, { 1.973858, 1, 1.108722, 0 } }, + { "SAMSUNG", "NX100", Flash, -2, { 2.006108, 1, 1.064989, 0 } }, + { "SAMSUNG", "NX100", Flash, -1, { 2.038847, 1, 1.021989, 0 } }, + { "SAMSUNG", "NX100", Flash, 0, { 2.071719, 1, 0.978723, 0 } }, + { "SAMSUNG", "NX100", Flash, 1, { 2.107068, 1, 0.954980, 0 } }, + { "SAMSUNG", "NX100", Flash, 2, { 2.142857, 1, 0.931301, 0 } }, + { "SAMSUNG", "NX100", Flash, 3, { 2.178191, 1, 0.907358, 0 } }, + { "SAMSUNG", "NX100", Flash, 4, { 2.213684, 1, 0.883661, 0 } }, + { "SAMSUNG", "NX100", Flash, 5, { 2.249317, 1, 0.859903, 0 } }, + { "SAMSUNG", "NX100", Flash, 6, { 2.284664, 1, 0.836022, 0 } }, + { "SAMSUNG", "NX100", Flash, 7, { 2.320238, 1, 0.812302, 0 } }, + { "SAMSUNG", "NX100", "5000K", 0, { 1.684339, 1, 1.094063, 0 } }, + { "SAMSUNG", "NX100", "5500K", 0, { 1.692022, 1, 0.843950, 0 } }, + { "SAMSUNG", "NX100", "6500K", 0, { 2.110371, 1, 0.879107, 0 } }, + + // SAMSUNG NX200 Firmware Version 1.04 + { "SAMSUNG", "NX200", Daylight, 0, { 2.773438, 1, 1.625000, 0 } }, + { "SAMSUNG", "NX200", Cloudy, 0, { 2.902344, 1, 1.546875, 0 } }, + { "SAMSUNG", "NX200", WhiteFluorescent, 0, { 2.445313, 1, 2.316406, 0 } }, + { "SAMSUNG", "NX200", NeutralFluorescent, 0, { 2.746094, 1, 1.937500, 0 } }, + { "SAMSUNG", "NX200", DaylightFluorescent, 0, { 3.214844, 1, 1.679688, 0 } }, + { "SAMSUNG", "NX200", Tungsten, 0, { 1.511719, 1, 2.941406, 0 } }, + { "SAMSUNG", "NX200", Flash, 0, { 2.914063, 1, 1.191406, 0 } }, + + { "SONY", "DSC-RX100", Daylight, 0, { 2.0703, 1, 2.1602, 0 } }, + { "SONY", "DSC-RX100", Shade, 0, { 2.4531, 1, 1.7852, 0 } }, + { "SONY", "DSC-RX100", Cloudy, 0, { 2.2305, 1, 1.9844, 0 } }, + { "SONY", "DSC-RX100", Tungsten, 0, { 1.2891, 1, 3.8242, 0 } }, + { "SONY", "DSC-RX100", WarmWhiteFluorescent, 0, { 1.5156, 1, 3.7656, 0 } }, + { "SONY", "DSC-RX100", CoolWhiteFluorescent, 0, { 2.0430, 1, 3.1055, 0 } }, + { "SONY", "DSC-RX100", DayWhiteFluorescent, 0, { 2.0000, 1, 2.1602, 0 } }, + { "SONY", "DSC-RX100", DaylightFluorescent, 0, { 2.2266, 1, 1.8789, 0 } }, + { "SONY", "DSC-RX100", Flash, 0, { 2.5352, 1, 1.6797, 0 } }, + { "SONY", "DSLR-A100", Daylight, -3, { 1.601562, 1, 2.101562, 0 } }, { "SONY", "DSLR-A100", Daylight, 0, { 1.746094, 1, 1.843750, 0 } }, { "SONY", "DSLR-A100", Daylight, 3, { 1.914062, 1, 1.628906, 0 } }, @@ -3881,6 +5355,50 @@ { "SONY", "DSLR-A200", Flash, 3 , { 2.109375, 1, 1.285156, 0 } }, { "SONY", "DSLR-A200", "5600K", 0 , { 1.710938, 1, 1.683594, 0 } }, + /* Sony A230 presets - firmware v1.10 */ + { "SONY", "DSLR-A230", Daylight, -3, { 1.621094, 1, 1.949219, 0 } }, + { "SONY", "DSLR-A230", Daylight, -2, { 1.675781, 1, 1.859375, 0 } }, + { "SONY", "DSLR-A230", Daylight, -1, { 1.726563, 1, 1.773438, 0 } }, + { "SONY", "DSLR-A230", Daylight, 0, { 1.789063, 1, 1.695313, 0 } }, + { "SONY", "DSLR-A230", Daylight, 1, { 1.839844, 1, 1.625000, 0 } }, + { "SONY", "DSLR-A230", Daylight, 2, { 1.898438, 1, 1.546875, 0 } }, + { "SONY", "DSLR-A230", Daylight, 3, { 1.957031, 1, 1.472656, 0 } }, + { "SONY", "DSLR-A230", Shade, -3, { 1.937500, 1, 1.503906, 0 } }, + { "SONY", "DSLR-A230", Shade, -2, { 1.996094, 1, 1.433594, 0 } }, + { "SONY", "DSLR-A230", Shade, -1, { 2.054688, 1, 1.371094, 0 } }, + { "SONY", "DSLR-A230", Shade, 0, { 2.121094, 1, 1.304688, 0 } }, + { "SONY", "DSLR-A230", Shade, 1, { 2.187500, 1, 1.238281, 0 } }, + { "SONY", "DSLR-A230", Shade, 2, { 2.261719, 1, 1.175781, 0 } }, + { "SONY", "DSLR-A230", Shade, 3, { 2.324219, 1, 1.121094, 0 } }, + { "SONY", "DSLR-A230", Cloudy, -3, { 1.761719, 1, 1.738281, 0 } }, + { "SONY", "DSLR-A230", Cloudy, -2, { 1.816406, 1, 1.656250, 0 } }, + { "SONY", "DSLR-A230", Cloudy, -1, { 1.875000, 1, 1.582031, 0 } }, + { "SONY", "DSLR-A230", Cloudy, 0, { 1.937500, 1, 1.515625, 0 } }, + { "SONY", "DSLR-A230", Cloudy, 1, { 1.996094, 1, 1.441406, 0 } }, + { "SONY", "DSLR-A230", Cloudy, 2, { 2.054688, 1, 1.371094, 0 } }, + { "SONY", "DSLR-A230", Cloudy, 3, { 2.121094, 1, 1.304688, 0 } }, + { "SONY", "DSLR-A230", Tungsten, -3, { 0.944649, 1, 3.896679, 0 } }, + { "SONY", "DSLR-A230", Tungsten, -2, { 0.977099, 1, 3.740458, 0 } }, + { "SONY", "DSLR-A230", Tungsten, -1, { 1.015625, 1, 3.582031, 0 } }, + { "SONY", "DSLR-A230", Tungsten, 0, { 1.046875, 1, 3.437500, 0 } }, + { "SONY", "DSLR-A230", Tungsten, 1, { 1.082031, 1, 3.292969, 0 } }, + { "SONY", "DSLR-A230", Tungsten, 2, { 1.121094, 1, 3.167969, 0 } }, + { "SONY", "DSLR-A230", Tungsten, 3, { 1.164063, 1, 3.035156, 0 } }, + { "SONY", "DSLR-A230", Fluorescent, -2, { 0.977099, 1, 3.942748, 0 } }, + { "SONY", "DSLR-A230", Fluorescent, -1, { 1.250000, 1, 3.250000, 0 } }, + { "SONY", "DSLR-A230", Fluorescent, 0, { 1.648438, 1, 2.457031, 0 } }, + { "SONY", "DSLR-A230", Fluorescent, 1, { 1.867188, 1, 2.035156, 0 } }, + { "SONY", "DSLR-A230", Fluorescent, 2, { 1.769531, 1, 1.742188, 0 } }, + { "SONY", "DSLR-A230", Fluorescent, 3, { 2.277344, 1, 1.742188, 0 } }, + { "SONY", "DSLR-A230", Fluorescent, 4, { 2.027344, 1, 1.527344, 0 } }, + { "SONY", "DSLR-A230", Flash, -3, { 1.804688, 1, 1.722656, 0 } }, + { "SONY", "DSLR-A230", Flash, -2, { 1.863281, 1, 1.656250, 0 } }, + { "SONY", "DSLR-A230", Flash, -1, { 1.921875, 1, 1.582031, 0 } }, + { "SONY", "DSLR-A230", Flash, 0, { 1.980469, 1, 1.500000, 0 } }, + { "SONY", "DSLR-A230", Flash, 1, { 2.046875, 1, 1.433594, 0 } }, + { "SONY", "DSLR-A230", Flash, 2, { 2.113281, 1, 1.359375, 0 } }, + { "SONY", "DSLR-A230", Flash, 3, { 2.175781, 1, 1.304688, 0 } }, + { "SONY", "DSLR-A300", Daylight, -3, { 1.480469, 1, 1.960937, 0 } }, { "SONY", "DSLR-A300", Daylight, 0, { 1.632813, 1, 1.730469, 0 } }, { "SONY", "DSLR-A300", Daylight, 3, { 1.789062, 1, 1.527344, 0 } }, @@ -3904,6 +5422,49 @@ { "SONY", "DSLR-A300", Flash, 0, { 1.882812, 1, 1.441406, 0 } }, { "SONY", "DSLR-A300", Flash, 3, { 2.070312, 1, 1.273438, 0 } }, + { "SONY", "DSLR-A330", Daylight, -3, { 1.5898, 1, 1.9687, 0 } }, + { "SONY", "DSLR-A330", Daylight, -2, { 1.6406, 1, 1.8789, 0 } }, + { "SONY", "DSLR-A330", Daylight, -1, { 1.6914, 1, 1.7969, 0 } }, + { "SONY", "DSLR-A330", Daylight, 0, { 1.7500, 1, 1.7227, 0 } }, + { "SONY", "DSLR-A330", Daylight, 1, { 1.7969, 1, 1.6523, 0 } }, + { "SONY", "DSLR-A330", Daylight, 2, { 1.8555, 1, 1.5742, 0 } }, + { "SONY", "DSLR-A330", Daylight, 3, { 1.9141, 1, 1.5000, 0 } }, + { "SONY", "DSLR-A330", Shade, -3, { 1.8906, 1, 1.5352, 0 } }, + { "SONY", "DSLR-A330", Shade, -2, { 1.9492, 1, 1.4648, 0 } }, + { "SONY", "DSLR-A330", Shade, -1, { 2.0078, 1, 1.4023, 0 } }, + { "SONY", "DSLR-A330", Shade, 0, { 2.0703, 1, 1.3359, 0 } }, + { "SONY", "DSLR-A330", Shade, 1, { 2.1328, 1, 1.2734, 0 } }, + { "SONY", "DSLR-A330", Shade, 2, { 2.2031, 1, 1.2109, 0 } }, + { "SONY", "DSLR-A330", Shade, 3, { 2.2656, 1, 1.1602, 0 } }, + { "SONY", "DSLR-A330", Cloudy, -3, { 1.7227, 1, 1.7617, 0 } }, + { "SONY", "DSLR-A330", Cloudy, -2, { 1.7773, 1, 1.6836, 0 } }, + { "SONY", "DSLR-A330", Cloudy, -1, { 1.8359, 1, 1.6094, 0 } }, + { "SONY", "DSLR-A330", Cloudy, 0, { 1.8906, 1, 1.5430, 0 } }, + { "SONY", "DSLR-A330", Cloudy, 1, { 1.9492, 1, 1.4727, 0 } }, + { "SONY", "DSLR-A330", Cloudy, 2, { 2.0078, 1, 1.4023, 0 } }, + { "SONY", "DSLR-A330", Cloudy, 3, { 2.0703, 1, 1.3359, 0 } }, + { "SONY", "DSLR-A330", Tungsten, -3, { 1.0664, 1, 1.0664, 0 } }, + { "SONY", "DSLR-A330", Tungsten, -2, { 1.0313, 1, 1.0313, 0 } }, + { "SONY", "DSLR-A330", Tungsten, -1, { 1.0039, 1, 3.5625, 0 } }, + { "SONY", "DSLR-A330", Tungsten, 0, { 1.0352, 1, 3.4219, 0 } }, + { "SONY", "DSLR-A330", Tungsten, 1, { 1.0703, 1, 3.2812, 0 } }, + { "SONY", "DSLR-A330", Tungsten, 2, { 1.1055, 1, 3.1602, 0 } }, + { "SONY", "DSLR-A330", Tungsten, 3, { 1.1484, 1, 3.0313, 0 } }, + { "SONY", "DSLR-A330", Fluorescent, -2, { 1.0312, 1, 1.0312, 0 } }, + { "SONY", "DSLR-A330", Fluorescent, -1, { 1.2305, 1, 3.2383, 0 } }, + { "SONY", "DSLR-A330", Fluorescent, 0, { 1.6172, 1, 2.4648, 0 } }, + { "SONY", "DSLR-A330", Fluorescent, 1, { 1.8242, 1, 2.0508, 0 } }, + { "SONY", "DSLR-A330", Fluorescent, 2, { 1.7305, 1, 1.7695, 0 } }, + { "SONY", "DSLR-A330", Fluorescent, 3, { 2.2227, 1, 1.7695, 0 } }, + { "SONY", "DSLR-A330", Fluorescent, 4, { 1.9805, 1, 1.5586, 0 } }, + { "SONY", "DSLR-A330", Flash, -3, { 1.7656, 1, 1.7500, 0 } }, + { "SONY", "DSLR-A330", Flash, -2, { 1.8203, 1, 1.6836, 0 } }, + { "SONY", "DSLR-A330", Flash, -1, { 1.8789, 1, 1.6094, 0 } }, + { "SONY", "DSLR-A330", Flash, 0, { 1.9375, 1, 1.5313, 0 } }, + { "SONY", "DSLR-A330", Flash, 1, { 2.0000, 1, 1.4648, 0 } }, + { "SONY", "DSLR-A330", Flash, 2, { 2.0625, 1, 1.3945, 0 } }, + { "SONY", "DSLR-A330", Flash, 3, { 2.1250, 1, 1.3359, 0 } }, + { "SONY", "DSLR-A350", Daylight, -3, { 2.316406, 1, 1.886719, 0 } }, { "SONY", "DSLR-A350", Daylight, 0, { 2.531250, 1, 1.648437, 0 } }, { "SONY", "DSLR-A350", Daylight, 3, { 2.750000, 1, 1.437500, 0 } }, @@ -3946,33 +5507,95 @@ { "SONY", "DSLR-A380", Flash, 0, { 2.816406, 1, 1.453125, 0 } }, { "SONY", "DSLR-A380", Flash, 3, { 3.070312, 1, 1.273437, 0 } }, + { "SONY", "DSLR-A390", Daylight, -3, { 2.0273, 1, 1.5820, 0 } }, + { "SONY", "DSLR-A390", Daylight, 0, { 2.2188, 1, 1.3711, 0 } }, + { "SONY", "DSLR-A390", Daylight, 3, { 2.4180, 1, 1.1836, 0 } }, + { "SONY", "DSLR-A390", Shade, -3, { 2.3906, 1, 1.2148, 0 } }, + { "SONY", "DSLR-A390", Shade, 0, { 2.6055, 1, 1.0469, 0 } }, + { "SONY", "DSLR-A390", Shade, 3, { 2.8392, 1, 1.0000, 0 } }, + { "SONY", "DSLR-A390", Cloudy, -3, { 2.1875, 1, 1.4062, 0 } }, + { "SONY", "DSLR-A390", Cloudy, 0, { 2.3906, 1, 1.2227, 0 } }, + { "SONY", "DSLR-A390", Cloudy, 3, { 2.6055, 1, 1.0469, 0 } }, + { "SONY", "DSLR-A390", Tungsten, -3, { 1.2461, 1, 3.1992, 0 } }, + { "SONY", "DSLR-A390", Tungsten, 0, { 1.3633, 1, 2.8164, 0 } }, + { "SONY", "DSLR-A390", Tungsten, 3, { 1.4961, 1, 2.4844, 0 } }, + { "SONY", "DSLR-A390", Fluorescent, -2, { 1.2617, 1, 3.4453, 0 } }, + { "SONY", "DSLR-A390", Fluorescent, 0, { 1.9414, 1, 2.0039, 0 } }, + { "SONY", "DSLR-A390", Fluorescent, 4, { 2.4102, 1, 1.1836, 0 } }, + { "SONY", "DSLR-A390", Flash, -3, { 2.2305, 1, 1.3867, 0 } }, + { "SONY", "DSLR-A390", Flash, 0, { 2.4336, 1, 1.1953, 0 } }, + { "SONY", "DSLR-A390", Flash, 3, { 2.6484, 1, 1.0313, 0 } }, + + /* Sony A450 presets */ + { "SONY", "DSLR-A450", Daylight, -3, { 2.109375, 1, 1.593750, 0 } }, + { "SONY", "DSLR-A450", Daylight, 0, { 2.296875, 1, 1.445312, 0 } }, + { "SONY", "DSLR-A450", Daylight, 3, { 2.503906, 1, 1.312500, 0 } }, + { "SONY", "DSLR-A450", Shade, -3, { 2.468750, 1, 1.332031, 0 } }, + { "SONY", "DSLR-A450", Shade, 0, { 2.691406, 1, 1.214844, 0 } }, + { "SONY", "DSLR-A450", Shade, 3, { 2.925781, 1, 1.105469, 0 } }, + { "SONY", "DSLR-A450", Cloudy, -3, { 2.261719, 1, 1.468750, 0 } }, + { "SONY", "DSLR-A450", Cloudy, 0, { 2.464844, 1, 1.335938, 0 } }, + { "SONY", "DSLR-A450", Cloudy, 3, { 2.683594, 1, 1.214844, 0 } }, + { "SONY", "DSLR-A450", Tungsten, -3, { 1.312500, 1, 2.734375, 0 } }, + { "SONY", "DSLR-A450", Tungsten, 0, { 1.437500, 1, 2.468750, 0 } }, + { "SONY", "DSLR-A450", Tungsten, 3, { 1.566406, 1, 2.234375, 0 } }, + { "SONY", "DSLR-A450", Fluorescent, -1, { 1.636719, 1, 2.507812, 0 } }, + { "SONY", "DSLR-A450", Fluorescent, 0, { 2.019531, 1, 2.003906, 0 } }, + { "SONY", "DSLR-A450", Fluorescent, 3, { 2.507812, 1, 1.355469, 0 } }, + { "SONY", "DSLR-A450", Flash, -3, { 2.339844, 1, 1.433594, 0 } }, + { "SONY", "DSLR-A450", Flash, 0, { 2.550781, 1, 1.304688, 0 } }, + { "SONY", "DSLR-A450", Flash, 3, { 2.777344, 1, 1.183594, 0 } }, + { "SONY", "DSLR-A550", Daylight, 0, { 2.160156, 1, 1.496094, 0 } }, { "SONY", "DSLR-A550", Shade, 0, { 2.519531, 1, 1.234375, 0 } }, - { "SONY", "DSLR-A550", Cloudy, 0, { 2.3125, 1, 1.375, 0 } }, + { "SONY", "DSLR-A550", Cloudy, 0, { 2.312500, 1, 1.375000, 0 } }, { "SONY", "DSLR-A550", Tungsten, 0, { 1.367188, 1, 2.632813, 0 } }, { "SONY", "DSLR-A550", Fluorescent, 0, { 1.902344, 1, 2.117188, 0 } }, { "SONY", "DSLR-A550", Flash, 0, { 2.390625, 1, 1.335938, 0 } }, - /* Sony A700 presets - firmware v2 */ - { "SONY", "DSLR-A700", Daylight, -3, { 1.937500, 1, 1.640625, 0 } }, - { "SONY", "DSLR-A700", Daylight, 0, { 2.101563, 1, 1.484375, 0 } }, - { "SONY", "DSLR-A700", Daylight, 3, { 2.273437, 1, 1.343750, 0 } }, - { "SONY", "DSLR-A700", Shade, -3, { 2.257812, 1, 1.359375, 0 } }, - { "SONY", "DSLR-A700", Shade, 0, { 2.445313, 1, 1.226563, 0 } }, - { "SONY", "DSLR-A700", Shade, 3, { 2.652344, 1, 1.113281, 0 } }, - { "SONY", "DSLR-A700", Cloudy, -3, { 2.070312, 1, 1.507812, 0 } }, - { "SONY", "DSLR-A700", Cloudy, 0, { 2.250000, 1, 1.367188, 0 } }, - { "SONY", "DSLR-A700", Cloudy, 3, { 2.429688, 1, 1.234375, 0 } }, - { "SONY", "DSLR-A700", Tungsten, -3, { 1.230469, 1, 2.859375, 0 } }, - { "SONY", "DSLR-A700", Tungsten, 0, { 1.335938, 1, 2.597656, 0 } }, - { "SONY", "DSLR-A700", Tungsten, 3, { 1.449219, 1, 2.343750, 0 } }, - { "SONY", "DSLR-A700", Fluorescent, -2, { 1.292969, 1, 3.199219, 0 } }, - { "SONY", "DSLR-A700", Fluorescent, 0, { 1.878906, 1, 2.152344, 0 } }, - { "SONY", "DSLR-A700", Fluorescent, 3, { 2.433594, 1, 1.539063, 0 } }, - { "SONY", "DSLR-A700", Fluorescent, 4, { 2.273437, 1, 1.347656, 0 } }, - { "SONY", "DSLR-A700", Flash, -3, { 2.128906, 1, 1.460937, 0 } }, - { "SONY", "DSLR-A700", Flash, 0, { 2.277344, 1, 1.312500, 0 } }, - { "SONY", "DSLR-A700", Flash, 3, { 2.496094, 1, 1.199219, 0 } }, + /* Sony A700 presets - firmware v4 */ + { "SONY", "DSLR-A700", Daylight, -3, { 1.972656, 1, 1.777344, 0 } }, + { "SONY", "DSLR-A700", Daylight, -2, { 2.027344, 1, 1.718750, 0 } }, + { "SONY", "DSLR-A700", Daylight, -1, { 2.089844, 1, 1.664063, 0 } }, + { "SONY", "DSLR-A700", Daylight, 0, { 2.140625, 1, 1.605469, 0 } }, + { "SONY", "DSLR-A700", Daylight, 1, { 2.195313, 1, 1.550781, 0 } }, + { "SONY", "DSLR-A700", Daylight, 2, { 2.257813, 1, 1.500000, 0 } }, + { "SONY", "DSLR-A700", Daylight, 3, { 2.320313, 1, 1.449219, 0 } }, + { "SONY", "DSLR-A700", Shade, -3, { 2.304688, 1, 1.464844, 0 } }, + { "SONY", "DSLR-A700", Shade, -2, { 2.359375, 1, 1.414063, 0 } }, + { "SONY", "DSLR-A700", Shade, -1, { 2.429688, 1, 1.367188, 0 } }, + { "SONY", "DSLR-A700", Shade, 0, { 2.500000, 1, 1.320313, 0 } }, + { "SONY", "DSLR-A700", Shade, 1, { 2.570313, 1, 1.277344, 0 } }, + { "SONY", "DSLR-A700", Shade, 2, { 2.636719, 1, 1.234375, 0 } }, + { "SONY", "DSLR-A700", Shade, 3, { 2.714844, 1, 1.191406, 0 } }, + { "SONY", "DSLR-A700", Cloudy, -3, { 2.109375, 1, 1.632813, 0 } }, + { "SONY", "DSLR-A700", Cloudy, -2, { 2.171875, 1, 1.578125, 0 } }, + { "SONY", "DSLR-A700", Cloudy, -1, { 2.234375, 1, 1.527344, 0 } }, + { "SONY", "DSLR-A700", Cloudy, 0, { 2.296875, 1, 1.472656, 0 } }, + { "SONY", "DSLR-A700", Cloudy, 1, { 2.359375, 1, 1.421875, 0 } }, + { "SONY", "DSLR-A700", Cloudy, 2, { 2.429688, 1, 1.375000, 0 } }, + { "SONY", "DSLR-A700", Cloudy, 3, { 2.484375, 1, 1.328125, 0 } }, + { "SONY", "DSLR-A700", Tungsten, -3, { 1.238281, 1, 3.140625, 0 } }, + { "SONY", "DSLR-A700", Tungsten, -2, { 1.273438, 1, 3.035156, 0 } }, + { "SONY", "DSLR-A700", Tungsten, -1, { 1.312500, 1, 2.933594, 0 } }, + { "SONY", "DSLR-A700", Tungsten, 0, { 1.347656, 1, 2.847656, 0 } }, + { "SONY", "DSLR-A700", Tungsten, 1, { 1.390625, 1, 2.746094, 0 } }, + { "SONY", "DSLR-A700", Tungsten, 2, { 1.425781, 1, 2.660156, 0 } }, + { "SONY", "DSLR-A700", Tungsten, 3, { 1.464844, 1, 2.562500, 0 } }, + { "SONY", "DSLR-A700", Fluorescent, -2, { 1.304688, 1, 3.515625, 0 } }, + { "SONY", "DSLR-A700", Fluorescent, -1, { 1.535156, 1, 2.878906, 0 } }, + { "SONY", "DSLR-A700", Fluorescent, 0, { 1.910156, 1, 2.351563, 0 } }, + { "SONY", "DSLR-A700", Fluorescent, 1, { 2.132813, 1, 1.949219, 0 } }, + { "SONY", "DSLR-A700", Fluorescent, 2, { 2.058594, 1, 1.675781, 0 } }, + { "SONY", "DSLR-A700", Fluorescent, 3, { 2.488281, 1, 1.667969, 0 } }, + { "SONY", "DSLR-A700", Fluorescent, 4, { 2.320313, 1, 1.453125, 0 } }, + { "SONY", "DSLR-A700", Flash, -3, { 2.171875, 1, 1.578125, 0 } }, + { "SONY", "DSLR-A700", Flash, -2, { 2.234375, 1, 1.527344, 0 } }, + { "SONY", "DSLR-A700", Flash, -1, { 2.281250, 1, 1.472656, 0 } }, + { "SONY", "DSLR-A700", Flash, 0, { 2.324219, 1, 1.414063, 0 } }, + { "SONY", "DSLR-A700", Flash, 1, { 2.414063, 1, 1.375000, 0 } }, + { "SONY", "DSLR-A700", Flash, 2, { 2.484375, 1, 1.328125, 0 } }, + { "SONY", "DSLR-A700", Flash, 3, { 2.554688, 1, 1.285156, 0 } }, /* Sony A850 presets - firmware v1.00 */ { "SONY", "DSLR-A850", Daylight, -3, { 2.445313, 1, 1.515625, 0 } }, @@ -4013,6 +5636,46 @@ { "SONY", "DSLR-A900", Flash, 0, { 2.910156, 1, 1.183594, 0 } }, { "SONY", "DSLR-A900", Flash, 3, { 3.183594, 1, 1.062500, 0 } }, + { "SONY", "NEX-3", Daylight, -3, { 2.0742, 1, 1.6289, 0 } }, + { "SONY", "NEX-3", Daylight, -2, { 2.1328, 1, 1.5742, 0 } }, + { "SONY", "NEX-3", Daylight, -1, { 2.1914, 1, 1.5195, 0 } }, + { "SONY", "NEX-3", Daylight, 0, { 2.2539, 1, 1.4727, 0 } }, + { "SONY", "NEX-3", Daylight, 1, { 2.3164, 1, 1.4219, 0 } }, + { "SONY", "NEX-3", Daylight, 2, { 2.3828, 1, 1.3750, 0 } }, + { "SONY", "NEX-3", Daylight, 3, { 2.4492, 1, 1.3281, 0 } }, + { "SONY", "NEX-3", Shade, -3, { 2.4180, 1, 1.3516, 0 } }, + { "SONY", "NEX-3", Shade, -2, { 2.4844, 1, 1.3047, 0 } }, + { "SONY", "NEX-3", Shade, -1, { 2.5508, 1, 1.2617, 0 } }, + { "SONY", "NEX-3", Shade, 0, { 2.6289, 1, 1.2188, 0 } }, + { "SONY", "NEX-3", Shade, 1, { 2.6992, 1, 1.1797, 0 } }, + { "SONY", "NEX-3", Shade, 2, { 2.7773, 1, 1.1445, 0 } }, + { "SONY", "NEX-3", Shade, 3, { 2.8555, 1, 1.1055, 0 } }, + { "SONY", "NEX-3", Cloudy, -3, { 2.2188, 1, 1.4961, 0 } }, + { "SONY", "NEX-3", Cloudy, -2, { 2.2813, 1, 1.4453, 0 } }, + { "SONY", "NEX-3", Cloudy, -1, { 2.3477, 1, 1.3984, 0 } }, + { "SONY", "NEX-3", Cloudy, 0, { 2.4141, 1, 1.3516, 0 } }, + { "SONY", "NEX-3", Cloudy, 1, { 2.4805, 1, 1.3086, 0 } }, + { "SONY", "NEX-3", Cloudy, 2, { 2.5508, 1, 1.2656, 0 } }, + { "SONY", "NEX-3", Cloudy, 3, { 2.6250, 1, 1.2227, 0 } }, + { "SONY", "NEX-3", Incandescent, -3, { 1.3164, 1, 2.8594, 0 } }, + { "SONY", "NEX-3", Incandescent, -2, { 1.3516, 1, 2.7617, 0 } }, + { "SONY", "NEX-3", Incandescent, -1, { 1.3906, 1, 2.6641, 0 } }, + { "SONY", "NEX-3", Incandescent, 0, { 1.4336, 1, 2.5742, 0 } }, + { "SONY", "NEX-3", Incandescent, 1, { 1.4766, 1, 2.4883, 0 } }, + { "SONY", "NEX-3", Incandescent, 2, { 1.5156, 1, 2.4023, 0 } }, + { "SONY", "NEX-3", Incandescent, 3, { 1.5586, 1, 2.3203, 0 } }, + { "SONY", "NEX-3", Fluorescent, -1, { 1.6250, 1, 2.6172, 0 } }, + { "SONY", "NEX-3", Fluorescent, 0, { 1.9883, 1, 2.0742, 0 } }, + { "SONY", "NEX-3", Fluorescent, 1, { 2.1875, 1, 1.5273, 0 } }, + { "SONY", "NEX-3", Fluorescent, 2, { 2.4531, 1, 1.3711, 0 } }, + { "SONY", "NEX-3", Flash, -3, { 2.5352, 1, 1.3633, 0 } }, + { "SONY", "NEX-3", Flash, -2, { 2.6016, 1, 1.3242, 0 } }, + { "SONY", "NEX-3", Flash, -1, { 2.6758, 1, 1.2773, 0 } }, + { "SONY", "NEX-3", Flash, 0, { 2.7500, 1, 1.2383, 0 } }, + { "SONY", "NEX-3", Flash, 1, { 2.8281, 1, 1.1953, 0 } }, + { "SONY", "NEX-3", Flash, 2, { 2.9063, 1, 1.1602, 0 } }, + { "SONY", "NEX-3", Flash, 3, { 2.9883, 1, 1.1211, 0 } }, + { "SONY", "NEX-5", Daylight, -3, { 2.1250, 1, 1.6055, 0 } }, { "SONY", "NEX-5", Daylight, -2, { 2.1836, 1, 1.5508, 0 } }, { "SONY", "NEX-5", Daylight, -1, { 2.2500, 1, 1.4961, 0 } }, @@ -4053,6 +5716,163 @@ { "SONY", "NEX-5", Flash, 2, { 2.9883, 1, 1.1289, 0 } }, { "SONY", "NEX-5", Flash, 3, { 3.0742, 1, 1.0938, 0 } }, + { "SONY", "NEX-5N", Daylight, -7, { 2.023438, 1, 1.964844, 0 } }, + { "SONY", "NEX-5N", Daylight, -6, { 2.085938, 1, 1.898438, 0 } }, + { "SONY", "NEX-5N", Daylight, -5, { 2.148438, 1, 1.832031, 0 } }, + { "SONY", "NEX-5N", Daylight, -4, { 2.210938, 1, 1.769531, 0 } }, + { "SONY", "NEX-5N", Daylight, -3, { 2.277344, 1, 1.710938, 0 } }, + { "SONY", "NEX-5N", Daylight, -2, { 2.347656, 1, 1.652344, 0 } }, + { "SONY", "NEX-5N", Daylight, -1, { 2.417969, 1, 1.597656, 0 } }, + { "SONY", "NEX-5N", Daylight, 0, { 2.492188, 1, 1.542969, 0 } }, + { "SONY", "NEX-5N", Daylight, 1, { 2.566406, 1, 1.492188, 0 } }, + { "SONY", "NEX-5N", Daylight, 2, { 2.644531, 1, 1.441406, 0 } }, + { "SONY", "NEX-5N", Daylight, 3, { 2.726563, 1, 1.394531, 0 } }, + { "SONY", "NEX-5N", Daylight, 4, { 2.808594, 1, 1.347656, 0 } }, + { "SONY", "NEX-5N", Daylight, 5, { 2.898438, 1, 1.300781, 0 } }, + { "SONY", "NEX-5N", Daylight, 6, { 2.988281, 1, 1.257813, 0 } }, + { "SONY", "NEX-5N", Daylight, 7, { 3.082031, 1, 1.218750, 0 } }, + { "SONY", "NEX-5N", Shade, -7, { 2.382813, 1, 1.621094, 0 } }, + { "SONY", "NEX-5N", Shade, -6, { 2.457031, 1, 1.566406, 0 } }, + { "SONY", "NEX-5N", Shade, -5, { 2.531250, 1, 1.515625, 0 } }, + { "SONY", "NEX-5N", Shade, -4, { 2.609375, 1, 1.464844, 0 } }, + { "SONY", "NEX-5N", Shade, -3, { 2.687500, 1, 1.414063, 0 } }, + { "SONY", "NEX-5N", Shade, -2, { 2.769531, 1, 1.367188, 0 } }, + { "SONY", "NEX-5N", Shade, -1, { 2.855469, 1, 1.324219, 0 } }, + { "SONY", "NEX-5N", Shade, 0, { 2.945313, 1, 1.277344, 0 } }, + { "SONY", "NEX-5N", Shade, 1, { 3.039063, 1, 1.234375, 0 } }, + { "SONY", "NEX-5N", Shade, 2, { 3.136719, 1, 1.195313, 0 } }, + { "SONY", "NEX-5N", Shade, 3, { 3.234375, 1, 1.156250, 0 } }, + { "SONY", "NEX-5N", Shade, 4, { 3.339844, 1, 1.117188, 0 } }, + { "SONY", "NEX-5N", Shade, 5, { 3.445313, 1, 1.082031, 0 } }, + { "SONY", "NEX-5N", Shade, 6, { 3.558594, 1, 1.046875, 0 } }, + { "SONY", "NEX-5N", Shade, 7, { 3.675781, 1, 1.011719, 0 } }, + { "SONY", "NEX-5N", Cloudy, -7, { 2.175781, 1, 1.804688, 0 } }, + { "SONY", "NEX-5N", Cloudy, -6, { 2.242188, 1, 1.742188, 0 } }, + { "SONY", "NEX-5N", Cloudy, -5, { 2.308594, 1, 1.683594, 0 } }, + { "SONY", "NEX-5N", Cloudy, -4, { 2.378906, 1, 1.625000, 0 } }, + { "SONY", "NEX-5N", Cloudy, -3, { 2.449219, 1, 1.570313, 0 } }, + { "SONY", "NEX-5N", Cloudy, -2, { 2.527344, 1, 1.519531, 0 } }, + { "SONY", "NEX-5N", Cloudy, -1, { 2.601563, 1, 1.468750, 0 } }, + { "SONY", "NEX-5N", Cloudy, 0, { 2.683594, 1, 1.417969, 0 } }, + { "SONY", "NEX-5N", Cloudy, 1, { 2.765625, 1, 1.371094, 0 } }, + { "SONY", "NEX-5N", Cloudy, 2, { 2.851563, 1, 1.324219, 0 } }, + { "SONY", "NEX-5N", Cloudy, 3, { 2.941406, 1, 1.281250, 0 } }, + { "SONY", "NEX-5N", Cloudy, 4, { 3.035156, 1, 1.238281, 0 } }, + { "SONY", "NEX-5N", Cloudy, 5, { 3.128906, 1, 1.199219, 0 } }, + { "SONY", "NEX-5N", Cloudy, 6, { 3.226563, 1, 1.156250, 0 } }, + { "SONY", "NEX-5N", Cloudy, 7, { 3.332031, 1, 1.121094, 0 } }, + { "SONY", "NEX-5N", Incandescent, -7, { 1.277344, 1, 3.503906, 0 } }, + { "SONY", "NEX-5N", Incandescent, -6, { 1.316406, 1, 3.378906, 0 } }, + { "SONY", "NEX-5N", Incandescent, -5, { 1.351563, 1, 3.257813, 0 } }, + { "SONY", "NEX-5N", Incandescent, -4, { 1.390625, 1, 3.140625, 0 } }, + { "SONY", "NEX-5N", Incandescent, -3, { 1.429688, 1, 3.027344, 0 } }, + { "SONY", "NEX-5N", Incandescent, -2, { 1.468750, 1, 2.917969, 0 } }, + { "SONY", "NEX-5N", Incandescent, -1, { 1.511719, 1, 2.816406, 0 } }, + { "SONY", "NEX-5N", Incandescent, 0, { 1.554688, 1, 2.718750, 0 } }, + { "SONY", "NEX-5N", Incandescent, 1, { 1.601563, 1, 2.621094, 0 } }, + { "SONY", "NEX-5N", Incandescent, 2, { 1.644531, 1, 2.531250, 0 } }, + { "SONY", "NEX-5N", Incandescent, 3, { 1.695313, 1, 2.441406, 0 } }, + { "SONY", "NEX-5N", Incandescent, 4, { 1.742188, 1, 2.359375, 0 } }, + { "SONY", "NEX-5N", Incandescent, 5, { 1.792969, 1, 2.277344, 0 } }, + { "SONY", "NEX-5N", Incandescent, 6, { 1.843750, 1, 2.199219, 0 } }, + { "SONY", "NEX-5N", Incandescent, 7, { 1.898438, 1, 2.121094, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, -7, { 1.503906, 1, 3.433594, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, -6, { 1.542969, 1, 3.320313, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, -5, { 1.585938, 1, 3.203125, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, -4, { 1.628906, 1, 3.097656, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, -3, { 1.671875, 1, 2.992188, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, -2, { 1.718750, 1, 2.894531, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, -1, { 1.765625, 1, 2.792969, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, 0, { 1.816406, 1, 2.703125, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, 1, { 1.863281, 1, 2.613281, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, 2, { 1.914063, 1, 2.527344, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, 3, { 1.968750, 1, 2.445313, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, 4, { 2.023438, 1, 2.363281, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, 5, { 2.078125, 1, 2.285156, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, 6, { 2.136719, 1, 2.210938, 0 } }, + { "SONY", "NEX-5N", WarmWhiteFluorescent, 7, { 2.199219, 1, 2.140625, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, -7, { 1.878906, 1, 2.734375, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, -6, { 1.929688, 1, 2.648438, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, -5, { 1.980469, 1, 2.558594, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, -4, { 2.035156, 1, 2.476563, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, -3, { 2.093750, 1, 2.398438, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, -2, { 2.148438, 1, 2.320313, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, -1, { 2.210938, 1, 2.246094, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, 0, { 2.269531, 1, 2.175781, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, 1, { 2.332031, 1, 2.105469, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, 2, { 2.398438, 1, 2.039063, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, 3, { 2.468750, 1, 1.972656, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, 4, { 2.535156, 1, 1.910156, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, 5, { 2.609375, 1, 1.851563, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, 6, { 2.683594, 1, 1.792969, 0 } }, + { "SONY", "NEX-5N", CoolWhiteFluorescent, 7, { 2.757813, 1, 1.734375, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, -7, { 1.992188, 1, 2.062500, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, -6, { 2.050781, 1, 1.992188, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, -5, { 2.109375, 1, 1.921875, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, -4, { 2.175781, 1, 1.859375, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, -3, { 2.238281, 1, 1.796875, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, -2, { 2.304688, 1, 1.734375, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, -1, { 2.375000, 1, 1.679688, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, 0, { 2.445313, 1, 1.621094, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, 1, { 2.519531, 1, 1.566406, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, 2, { 2.593750, 1, 1.515625, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, 3, { 2.671875, 1, 1.464844, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, 4, { 2.753906, 1, 1.417969, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, 5, { 2.839844, 1, 1.371094, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, 6, { 2.929688, 1, 1.324219, 0 } }, + { "SONY", "NEX-5N", DayWhiteFluorescent, 7, { 3.019531, 1, 1.281250, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, -7, { 2.253906, 1, 1.800781, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, -6, { 2.320313, 1, 1.742188, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, -5, { 2.390625, 1, 1.683594, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, -4, { 2.460938, 1, 1.628906, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, -3, { 2.535156, 1, 1.574219, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, -2, { 2.613281, 1, 1.519531, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, -1, { 2.691406, 1, 1.472656, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, 0, { 2.773438, 1, 1.421875, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, 1, { 2.859375, 1, 1.375000, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, 2, { 2.945313, 1, 1.332031, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, 3, { 3.039063, 1, 1.285156, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, 4, { 3.132813, 1, 1.246094, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, 5, { 3.230469, 1, 1.203125, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, 6, { 3.335938, 1, 1.164063, 0 } }, + { "SONY", "NEX-5N", DaylightFluorescent, 7, { 3.441406, 1, 1.125000, 0 } }, + { "SONY", "NEX-5N", Flash, -7, { 2.265625, 1, 1.726563, 0 } }, + { "SONY", "NEX-5N", Flash, -6, { 2.332031, 1, 1.667969, 0 } }, + { "SONY", "NEX-5N", Flash, -5, { 2.402344, 1, 1.613281, 0 } }, + { "SONY", "NEX-5N", Flash, -4, { 2.476563, 1, 1.558594, 0 } }, + { "SONY", "NEX-5N", Flash, -3, { 2.550781, 1, 1.507813, 0 } }, + { "SONY", "NEX-5N", Flash, -2, { 2.628906, 1, 1.457031, 0 } }, + { "SONY", "NEX-5N", Flash, -1, { 2.710938, 1, 1.406250, 0 } }, + { "SONY", "NEX-5N", Flash, 0, { 2.792969, 1, 1.359375, 0 } }, + { "SONY", "NEX-5N", Flash, 1, { 2.878906, 1, 1.316406, 0 } }, + { "SONY", "NEX-5N", Flash, 2, { 2.972656, 1, 1.273438, 0 } }, + { "SONY", "NEX-5N", Flash, 3, { 3.062500, 1, 1.230469, 0 } }, + { "SONY", "NEX-5N", Flash, 4, { 3.164063, 1, 1.187500, 0 } }, + { "SONY", "NEX-5N", Flash, 5, { 3.261719, 1, 1.148438, 0 } }, + { "SONY", "NEX-5N", Flash, 6, { 3.367188, 1, 1.113281, 0 } }, + { "SONY", "NEX-5N", Flash, 7, { 3.476563, 1, 1.074219, 0 } }, + + { "SONY", "NEX-7", Daylight, 0, { 2.5820, 1, 1.5273, 0 } }, + { "SONY", "NEX-7", Shade, 0, { 3.0781, 1, 1.2734, 0 } }, + { "SONY", "NEX-7", Cloudy, 0, { 2.7930, 1, 1.4102, 0 } }, + { "SONY", "NEX-7", Tungsten, 0, { 1.5859, 1, 2.6133, 0 } }, + { "SONY", "NEX-7", WarmWhiteFluorescent, 0, { 1.8203, 1, 2.5703, 0 } }, + { "SONY", "NEX-7", CoolWhiteFluorescent, 0, { 2.3164, 1, 2.0937, 0 } }, + { "SONY", "NEX-7", DayWhiteFluorescent, 0, { 2.4570, 1, 1.6055, 0 } }, + { "SONY", "NEX-7", DaylightFluorescent, 0, { 2.7734, 1, 1.4258, 0 } }, + { "SONY", "NEX-7", Flash, 0, { 2.9219, 1, 1.4453, 0 } }, + + // firmware NEX-C3 Ver.02 + { "SONY", "NEX-C3", Daylight, 0, { 2.699219, 1, 1.527344, 0 } }, + { "SONY", "NEX-C3", Shade, 0, { 3.191406, 1, 1.257813, 0 } }, + { "SONY", "NEX-C3", Cloudy, 0, { 2.906250, 1, 1.402344, 0 } }, + { "SONY", "NEX-C3", Tungsten, 0, { 1.617188, 1, 2.718750, 0 } }, + { "SONY", "NEX-C3", Fluorescent, 0, { 2.359375, 1, 2.136719, 0 } }, + { "SONY", "NEX-C3", Flash, 0, { 3.015625, 1, 1.335938, 0 } }, + { "SONY", "NEX-C3", "5000K", 0, { 2.605469, 1, 1.589844, 0 } }, + { "SONY", "NEX-C3", "5500K", 0, { 2.753906, 1, 1.492188, 0 } }, + { "SONY", "NEX-C3", "6500K", 0, { 2.996094, 1, 1.351563, 0 } }, + { "SONY", "SLT-A55V", Daylight, -3, { 2.3320, 1, 1.6758, 0 } }, { "SONY", "SLT-A55V", Daylight, -2, { 2.3984, 1, 1.6172, 0 } }, { "SONY", "SLT-A55V", Daylight, -1, { 2.4727, 1, 1.5625, 0 } }, @@ -4093,6 +5913,159 @@ { "SONY", "SLT-A55V", Flash, 2, { 3.0156, 1, 1.2461, 0 } }, { "SONY", "SLT-A55V", Flash, 3, { 3.1016, 1, 1.2070, 0 } }, + { "SONY", "SLT-A57", Daylight, -7, { 2.160156, 1, 2.000000, 0 } }, + { "SONY", "SLT-A57", Daylight, -6, { 2.226563, 1, 1.929688, 0 } }, + { "SONY", "SLT-A57", Daylight, -5, { 2.296875, 1, 1.863281, 0 } }, + { "SONY", "SLT-A57", Daylight, -4, { 2.367188, 1, 1.800781, 0 } }, + { "SONY", "SLT-A57", Daylight, -3, { 2.437500, 1, 1.738281, 0 } }, + { "SONY", "SLT-A57", Daylight, -2, { 2.515625, 1, 1.679688, 0 } }, + { "SONY", "SLT-A57", Daylight, -1, { 2.593750, 1, 1.621094, 0 } }, + { "SONY", "SLT-A57", Daylight, 0, { 2.671875, 1, 1.566406, 0 } }, + { "SONY", "SLT-A57", Daylight, 1, { 2.757813, 1, 1.511719, 0 } }, + { "SONY", "SLT-A57", Daylight, 2, { 2.843750, 1, 1.460938, 0 } }, + { "SONY", "SLT-A57", Daylight, 3, { 2.937500, 1, 1.414063, 0 } }, + { "SONY", "SLT-A57", Daylight, 4, { 3.031250, 1, 1.363281, 0 } }, + { "SONY", "SLT-A57", Daylight, 5, { 3.128906, 1, 1.320313, 0 } }, + { "SONY", "SLT-A57", Daylight, 6, { 3.230469, 1, 1.273438, 0 } }, + { "SONY", "SLT-A57", Daylight, 7, { 3.335938, 1, 1.230469, 0 } }, + { "SONY", "SLT-A57", Shade, -7, { 2.554688, 1, 1.648438, 0 } }, + { "SONY", "SLT-A57", Shade, -6, { 2.636719, 1, 1.593750, 0 } }, + { "SONY", "SLT-A57", Shade, -5, { 2.718750, 1, 1.539063, 0 } }, + { "SONY", "SLT-A57", Shade, -4, { 2.804688, 1, 1.484375, 0 } }, + { "SONY", "SLT-A57", Shade, -3, { 2.894531, 1, 1.433594, 0 } }, + { "SONY", "SLT-A57", Shade, -2, { 2.988281, 1, 1.386719, 0 } }, + { "SONY", "SLT-A57", Shade, -1, { 3.082031, 1, 1.339844, 0 } }, + { "SONY", "SLT-A57", Shade, 0, { 3.183594, 1, 1.296875, 0 } }, + { "SONY", "SLT-A57", Shade, 1, { 3.285156, 1, 1.250000, 0 } }, + { "SONY", "SLT-A57", Shade, 2, { 3.394531, 1, 1.210938, 0 } }, + { "SONY", "SLT-A57", Shade, 3, { 3.507813, 1, 1.167969, 0 } }, + { "SONY", "SLT-A57", Shade, 4, { 3.625000, 1, 1.128906, 0 } }, + { "SONY", "SLT-A57", Shade, 5, { 3.746094, 1, 1.093750, 0 } }, + { "SONY", "SLT-A57", Shade, 6, { 3.875000, 1, 1.054688, 0 } }, + { "SONY", "SLT-A57", Shade, 7, { 4.007813, 1, 1.019531, 0 } }, + { "SONY", "SLT-A57", Cloudy, -7, { 2.328125, 1, 1.832031, 0 } }, + { "SONY", "SLT-A57", Cloudy, -6, { 2.402344, 1, 1.769531, 0 } }, + { "SONY", "SLT-A57", Cloudy, -5, { 2.472656, 1, 1.710938, 0 } }, + { "SONY", "SLT-A57", Cloudy, -4, { 2.550781, 1, 1.652344, 0 } }, + { "SONY", "SLT-A57", Cloudy, -3, { 2.628906, 1, 1.593750, 0 } }, + { "SONY", "SLT-A57", Cloudy, -2, { 2.714844, 1, 1.542969, 0 } }, + { "SONY", "SLT-A57", Cloudy, -1, { 2.796875, 1, 1.488281, 0 } }, + { "SONY", "SLT-A57", Cloudy, 0, { 2.886719, 1, 1.437500, 0 } }, + { "SONY", "SLT-A57", Cloudy, 1, { 2.980469, 1, 1.390625, 0 } }, + { "SONY", "SLT-A57", Cloudy, 2, { 3.078125, 1, 1.343750, 0 } }, + { "SONY", "SLT-A57", Cloudy, 3, { 3.175781, 1, 1.296875, 0 } }, + { "SONY", "SLT-A57", Cloudy, 4, { 3.281250, 1, 1.253906, 0 } }, + { "SONY", "SLT-A57", Cloudy, 5, { 3.386719, 1, 1.210938, 0 } }, + { "SONY", "SLT-A57", Cloudy, 6, { 3.500000, 1, 1.171875, 0 } }, + { "SONY", "SLT-A57", Cloudy, 7, { 3.617188, 1, 1.132813, 0 } }, + { "SONY", "SLT-A57", Incandescent, -7, { 1.351563, 1, 3.613281, 0 } }, + { "SONY", "SLT-A57", Incandescent, -6, { 1.390625, 1, 3.476563, 0 } }, + { "SONY", "SLT-A57", Incandescent, -5, { 1.433594, 1, 3.351563, 0 } }, + { "SONY", "SLT-A57", Incandescent, -4, { 1.472656, 1, 3.226563, 0 } }, + { "SONY", "SLT-A57", Incandescent, -3, { 1.515625, 1, 3.109375, 0 } }, + { "SONY", "SLT-A57", Incandescent, -2, { 1.558594, 1, 2.996094, 0 } }, + { "SONY", "SLT-A57", Incandescent, -1, { 1.605469, 1, 2.886719, 0 } }, + { "SONY", "SLT-A57", Incandescent, 0, { 1.652344, 1, 2.785156, 0 } }, + { "SONY", "SLT-A57", Incandescent, 1, { 1.699219, 1, 2.683594, 0 } }, + { "SONY", "SLT-A57", Incandescent, 2, { 1.750000, 1, 2.589844, 0 } }, + { "SONY", "SLT-A57", Incandescent, 3, { 1.800781, 1, 2.496094, 0 } }, + { "SONY", "SLT-A57", Incandescent, 4, { 1.855469, 1, 2.410156, 0 } }, + { "SONY", "SLT-A57", Incandescent, 5, { 1.910156, 1, 2.324219, 0 } }, + { "SONY", "SLT-A57", Incandescent, 6, { 1.964844, 1, 2.242188, 0 } }, + { "SONY", "SLT-A57", Incandescent, 7, { 2.023438, 1, 2.164063, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, -7, { 1.593750, 1, 3.539063, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, -6, { 1.640625, 1, 3.414063, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, -5, { 1.683594, 1, 3.296875, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, -4, { 1.730469, 1, 3.183594, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, -3, { 1.777344, 1, 3.074219, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, -2, { 1.828125, 1, 2.968750, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, -1, { 1.878906, 1, 2.867188, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, 0, { 1.933594, 1, 2.769531, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, 1, { 1.984375, 1, 2.675781, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, 2, { 2.042969, 1, 2.585938, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, 3, { 2.101563, 1, 2.500000, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, 4, { 2.160156, 1, 2.414063, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, 5, { 2.222656, 1, 2.335938, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, 6, { 2.285156, 1, 2.257813, 0 } }, + { "SONY", "SLT-A57", WarmWhiteFluorescent, 7, { 2.351563, 1, 2.183594, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, -7, { 2.003906, 1, 2.800781, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, -6, { 2.058594, 1, 2.710938, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, -5, { 2.113281, 1, 2.621094, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, -4, { 2.175781, 1, 2.535156, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, -3, { 2.234375, 1, 2.449219, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, -2, { 2.296875, 1, 2.371094, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, -1, { 2.363281, 1, 2.292969, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, 0, { 2.433594, 1, 2.218750, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, 1, { 2.500000, 1, 2.144531, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, 2, { 2.574219, 1, 2.078125, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, 3, { 2.648438, 1, 2.007813, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, 4, { 2.726563, 1, 1.945313, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, 5, { 2.804688, 1, 1.882813, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, 6, { 2.886719, 1, 1.820313, 0 } }, + { "SONY", "SLT-A57", CoolWhiteFluorescent, 7, { 2.972656, 1, 1.765625, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, -7, { 2.125000, 1, 2.101563, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, -6, { 2.191406, 1, 2.027344, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, -5, { 2.257813, 1, 1.957031, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, -4, { 2.324219, 1, 1.890625, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, -3, { 2.394531, 1, 1.828125, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, -2, { 2.468750, 1, 1.765625, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, -1, { 2.542969, 1, 1.703125, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, 0, { 2.625000, 1, 1.648438, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, 1, { 2.707031, 1, 1.589844, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, 2, { 2.789063, 1, 1.539063, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, 3, { 2.878906, 1, 1.484375, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, 4, { 2.968750, 1, 1.437500, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, 5, { 3.062500, 1, 1.386719, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, 6, { 3.164063, 1, 1.343750, 0 } }, + { "SONY", "SLT-A57", DayWhiteFluorescent, 7, { 3.265625, 1, 1.296875, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, -7, { 2.414063, 1, 1.832031, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, -6, { 2.488281, 1, 1.769531, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, -5, { 2.562500, 1, 1.710938, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, -4, { 2.640625, 1, 1.652344, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, -3, { 2.722656, 1, 1.597656, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, -2, { 2.808594, 1, 1.542969, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, -1, { 2.898438, 1, 1.492188, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, 0, { 2.988281, 1, 1.441406, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, 1, { 3.085938, 1, 1.394531, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, 2, { 3.183594, 1, 1.347656, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, 3, { 3.285156, 1, 1.304688, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, 4, { 3.394531, 1, 1.261719, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, 5, { 3.503906, 1, 1.218750, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, 6, { 3.621094, 1, 1.179688, 0 } }, + { "SONY", "SLT-A57", DaylightFluorescent, 7, { 3.742188, 1, 1.140625, 0 } }, + { "SONY", "SLT-A57", Flash, -7, { 2.464844, 1, 1.707031, 0 } }, + { "SONY", "SLT-A57", Flash, -6, { 2.542969, 1, 1.648438, 0 } }, + { "SONY", "SLT-A57", Flash, -5, { 2.621094, 1, 1.589844, 0 } }, + { "SONY", "SLT-A57", Flash, -4, { 2.707031, 1, 1.539063, 0 } }, + { "SONY", "SLT-A57", Flash, -3, { 2.792969, 1, 1.484375, 0 } }, + { "SONY", "SLT-A57", Flash, -2, { 2.878906, 1, 1.433594, 0 } }, + { "SONY", "SLT-A57", Flash, -1, { 2.972656, 1, 1.386719, 0 } }, + { "SONY", "SLT-A57", Flash, 0, { 3.066406, 1, 1.339844, 0 } }, + { "SONY", "SLT-A57", Flash, 1, { 3.167969, 1, 1.292969, 0 } }, + { "SONY", "SLT-A57", Flash, 2, { 3.269531, 1, 1.250000, 0 } }, + { "SONY", "SLT-A57", Flash, 3, { 3.378906, 1, 1.210938, 0 } }, + { "SONY", "SLT-A57", Flash, 4, { 3.488281, 1, 1.167969, 0 } }, + { "SONY", "SLT-A57", Flash, 5, { 3.605469, 1, 1.128906, 0 } }, + { "SONY", "SLT-A57", Flash, 6, { 3.726563, 1, 1.093750, 0 } }, + { "SONY", "SLT-A57", Flash, 7, { 3.855469, 1, 1.054688, 0 } }, + + { "SONY", "SLT-A65V", Daylight, 0, { 2.628906, 1, 1.433594, 0 } }, + { "SONY", "SLT-A65V", Shade, 0, { 3.132813, 1, 1.191406, 0 } }, + { "SONY", "SLT-A65V", Cloudy, 0, { 2.839844, 1, 1.316406, 0 } }, + { "SONY", "SLT-A65V", Tungsten, 0, { 1.617188, 1, 2.488281, 0 } }, + { "SONY", "SLT-A65V", Fluorescent, 0, { 2.363281, 1, 1.980469, 0 } }, + { "SONY", "SLT-A65V", Flash, 0, { 3.070313, 1, 1.238281, 0 } }, + + { "SONY", "SLT-A77V", Daylight, 0, { 2.726563, 1, 1.390625, 0 } }, + { "SONY", "SLT-A77V", Shade, 0, { 3.296875, 1, 1.156250, 0 } }, + { "SONY", "SLT-A77V", Cloudy, 0, { 2.964844, 1, 1.281250, 0 } }, + { "SONY", "SLT-A77V", Tungsten, 0, { 1.636719, 1, 2.417969, 0 } }, + { "SONY", "SLT-A77V", Fluorescent, -1, { 1.886719, 1, 2.375000, 0 } }, + { "SONY", "SLT-A77V", Fluorescent, 0, { 2.433594, 1, 1.925781, 0 } }, + { "SONY", "SLT-A77V", Fluorescent, 1, { 2.589844, 1, 1.464844, 0 } }, + { "SONY", "SLT-A77V", Fluorescent, 2, { 2.945313, 1, 1.300781, 0 } }, + { "SONY", "SLT-A77V", Flash, 0, { 3.222656, 1, 1.207031, 0 } }, + }; const int wb_preset_count = sizeof(wb_preset) / sizeof(wb_data);